1 line
No EOL
3.6 MiB
1 line
No EOL
3.6 MiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@jlongster/mixpanel/lib/groups.js","webpack:///./node_modules/@jlongster/mixpanel/lib/mixpanel-node.js","webpack:///./node_modules/@jlongster/mixpanel/lib/people.js","webpack:///./node_modules/@jlongster/mixpanel/lib/profile_helpers.js","webpack:///./node_modules/@jlongster/mixpanel/lib/utils.js","webpack:///./node_modules/@rschedule/core/es2015/generators.js","webpack:///./node_modules/@rschedule/core/es2015/main.js","webpack:///./node_modules/@rschedule/core/es2015/rules.js","webpack:///./node_modules/@rschedule/json-tools/es2015/Schedule.js","webpack:///./node_modules/@rschedule/json-tools/es2015/main.js","webpack:///./node_modules/@rschedule/standard-date-adapter/es2015/main.js","webpack:///./node_modules/@rschedule/standard-date-adapter/es2015/setup.js","webpack:///./node_modules/accounting/accounting.js","webpack:///./node_modules/adm-zip/adm-zip.js","webpack:///./node_modules/adm-zip/headers/entryHeader.js","webpack:///./node_modules/adm-zip/headers/index.js","webpack:///./node_modules/adm-zip/headers/mainHeader.js","webpack:///./node_modules/adm-zip/methods/deflater.js","webpack:///./node_modules/adm-zip/methods/index.js","webpack:///./node_modules/adm-zip/methods/inflater.js","webpack:///./node_modules/adm-zip/methods/zipcrypto.js","webpack:///./node_modules/adm-zip/util/constants.js","webpack:///./node_modules/adm-zip/util/errors.js","webpack:///./node_modules/adm-zip/util/fattr.js","webpack:///./node_modules/adm-zip/util/fileSystem.js","webpack:///./node_modules/adm-zip/util/index.js","webpack:///./node_modules/adm-zip/util/utils.js","webpack:///./node_modules/adm-zip/zipEntry.js","webpack:///./node_modules/adm-zip/zipFile.js","webpack:///./node_modules/array.prototype.filter/implementation.js","webpack:///./node_modules/array.prototype.filter/index.js","webpack:///./node_modules/array.prototype.filter/polyfill.js","webpack:///./node_modules/array.prototype.filter/shim.js","webpack:///./node_modules/available-typed-arrays/index.js","webpack:///./node_modules/call-bind/callBound.js","webpack:///./node_modules/call-bind/index.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/csv-parse/lib/ResizeableBuffer.js","webpack:///./node_modules/csv-parse/lib/index.js","webpack:///./node_modules/csv-parse/lib/sync.js","webpack:///./node_modules/csv-stringify/lib/index.js","webpack:///./node_modules/csv-stringify/lib/sync.js","webpack:///./node_modules/currency-formatter/index.js","webpack:///./node_modules/damerau-levenshtein/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/assign/index.js","webpack:///./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/addDays/index.js","webpack:///./node_modules/date-fns/esm/addHours/index.js","webpack:///./node_modules/date-fns/esm/addISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addMinutes/index.js","webpack:///./node_modules/date-fns/esm/addMonths/index.js","webpack:///./node_modules/date-fns/esm/addQuarters/index.js","webpack:///./node_modules/date-fns/esm/addSeconds/index.js","webpack:///./node_modules/date-fns/esm/addWeeks/index.js","webpack:///./node_modules/date-fns/esm/addYears/index.js","webpack:///./node_modules/date-fns/esm/areIntervalsOverlapping/index.js","webpack:///./node_modules/date-fns/esm/closestIndexTo/index.js","webpack:///./node_modules/date-fns/esm/closestTo/index.js","webpack:///./node_modules/date-fns/esm/compareAsc/index.js","webpack:///./node_modules/date-fns/esm/compareDesc/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarISOWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInDays/index.js","webpack:///./node_modules/date-fns/esm/differenceInHours/index.js","webpack:///./node_modules/date-fns/esm/differenceInISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack:///./node_modules/date-fns/esm/differenceInMonths/index.js","webpack:///./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack:///./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack:///./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack:///./node_modules/date-fns/esm/differenceInYears/index.js","webpack:///./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfInterval/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfMonth/index.js","webpack:///./node_modules/date-fns/esm/eachWeekendOfYear/index.js","webpack:///./node_modules/date-fns/esm/endOfDay/index.js","webpack:///./node_modules/date-fns/esm/endOfDecade/index.js","webpack:///./node_modules/date-fns/esm/endOfHour/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/endOfMinute/index.js","webpack:///./node_modules/date-fns/esm/endOfMonth/index.js","webpack:///./node_modules/date-fns/esm/endOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/endOfSecond/index.js","webpack:///./node_modules/date-fns/esm/endOfWeek/index.js","webpack:///./node_modules/date-fns/esm/endOfYear/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/formatDistanceStrict/index.js","webpack:///./node_modules/date-fns/esm/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/fromUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getDate/index.js","webpack:///./node_modules/date-fns/esm/getDay/index.js","webpack:///./node_modules/date-fns/esm/getDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack:///./node_modules/date-fns/esm/getDaysInYear/index.js","webpack:///./node_modules/date-fns/esm/getDecade/index.js","webpack:///./node_modules/date-fns/esm/getHours/index.js","webpack:///./node_modules/date-fns/esm/getISODay/index.js","webpack:///./node_modules/date-fns/esm/getISOWeek/index.js","webpack:///./node_modules/date-fns/esm/getISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getISOWeeksInYear/index.js","webpack:///./node_modules/date-fns/esm/getMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/getMinutes/index.js","webpack:///./node_modules/date-fns/esm/getMonth/index.js","webpack:///./node_modules/date-fns/esm/getOverlappingDaysInIntervals/index.js","webpack:///./node_modules/date-fns/esm/getQuarter/index.js","webpack:///./node_modules/date-fns/esm/getSeconds/index.js","webpack:///./node_modules/date-fns/esm/getTime/index.js","webpack:///./node_modules/date-fns/esm/getUnixTime/index.js","webpack:///./node_modules/date-fns/esm/getWeek/index.js","webpack:///./node_modules/date-fns/esm/getWeekOfMonth/index.js","webpack:///./node_modules/date-fns/esm/getWeekYear/index.js","webpack:///./node_modules/date-fns/esm/getWeeksInMonth/index.js","webpack:///./node_modules/date-fns/esm/getYear/index.js","webpack:///./node_modules/date-fns/esm/index.js","webpack:///./node_modules/date-fns/esm/isAfter/index.js","webpack:///./node_modules/date-fns/esm/isBefore/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/isEqual/index.js","webpack:///./node_modules/date-fns/esm/isFirstDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isFriday/index.js","webpack:///./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/isLeapYear/index.js","webpack:///./node_modules/date-fns/esm/isMonday/index.js","webpack:///./node_modules/date-fns/esm/isSameDay/index.js","webpack:///./node_modules/date-fns/esm/isSameHour/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/isSameMinute/index.js","webpack:///./node_modules/date-fns/esm/isSameMonth/index.js","webpack:///./node_modules/date-fns/esm/isSameQuarter/index.js","webpack:///./node_modules/date-fns/esm/isSameSecond/index.js","webpack:///./node_modules/date-fns/esm/isSameWeek/index.js","webpack:///./node_modules/date-fns/esm/isSameYear/index.js","webpack:///./node_modules/date-fns/esm/isSaturday/index.js","webpack:///./node_modules/date-fns/esm/isSunday/index.js","webpack:///./node_modules/date-fns/esm/isThursday/index.js","webpack:///./node_modules/date-fns/esm/isTuesday/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/isWednesday/index.js","webpack:///./node_modules/date-fns/esm/isWeekend/index.js","webpack:///./node_modules/date-fns/esm/isWithinInterval/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfDecade/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfMonth/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfWeek/index.js","webpack:///./node_modules/date-fns/esm/lastDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/lightFormat/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/max/index.js","webpack:///./node_modules/date-fns/esm/min/index.js","webpack:///./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack:///./node_modules/date-fns/esm/parse/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/date-fns/esm/roundToNearestMinutes/index.js","webpack:///./node_modules/date-fns/esm/setDate/index.js","webpack:///./node_modules/date-fns/esm/setDay/index.js","webpack:///./node_modules/date-fns/esm/setDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/setHours/index.js","webpack:///./node_modules/date-fns/esm/setISODay/index.js","webpack:///./node_modules/date-fns/esm/setISOWeek/index.js","webpack:///./node_modules/date-fns/esm/setISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/setMinutes/index.js","webpack:///./node_modules/date-fns/esm/setMonth/index.js","webpack:///./node_modules/date-fns/esm/setQuarter/index.js","webpack:///./node_modules/date-fns/esm/setSeconds/index.js","webpack:///./node_modules/date-fns/esm/setWeek/index.js","webpack:///./node_modules/date-fns/esm/setWeekYear/index.js","webpack:///./node_modules/date-fns/esm/setYear/index.js","webpack:///./node_modules/date-fns/esm/startOfDay/index.js","webpack:///./node_modules/date-fns/esm/startOfDecade/index.js","webpack:///./node_modules/date-fns/esm/startOfHour/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfMinute/index.js","webpack:///./node_modules/date-fns/esm/startOfMonth/index.js","webpack:///./node_modules/date-fns/esm/startOfQuarter/index.js","webpack:///./node_modules/date-fns/esm/startOfSecond/index.js","webpack:///./node_modules/date-fns/esm/startOfWeek/index.js","webpack:///./node_modules/date-fns/esm/startOfWeekYear/index.js","webpack:///./node_modules/date-fns/esm/startOfYear/index.js","webpack:///./node_modules/date-fns/esm/subDays/index.js","webpack:///./node_modules/date-fns/esm/subHours/index.js","webpack:///./node_modules/date-fns/esm/subISOWeekYears/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/subMinutes/index.js","webpack:///./node_modules/date-fns/esm/subMonths/index.js","webpack:///./node_modules/date-fns/esm/subQuarters/index.js","webpack:///./node_modules/date-fns/esm/subSeconds/index.js","webpack:///./node_modules/date-fns/esm/subWeeks/index.js","webpack:///./node_modules/date-fns/esm/subYears/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/deep-equal/index.js","webpack:///./node_modules/deep-equal/node_modules/isarray/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/es-abstract/2020/ArraySpeciesCreate.js","webpack:///./node_modules/es-abstract/2020/Call.js","webpack:///./node_modules/es-abstract/2020/CreateDataProperty.js","webpack:///./node_modules/es-abstract/2020/CreateDataPropertyOrThrow.js","webpack:///./node_modules/es-abstract/2020/DefinePropertyOrThrow.js","webpack:///./node_modules/es-abstract/2020/FromPropertyDescriptor.js","webpack:///./node_modules/es-abstract/2020/Get.js","webpack:///./node_modules/es-abstract/2020/HasProperty.js","webpack:///./node_modules/es-abstract/2020/IsAccessorDescriptor.js","webpack:///./node_modules/es-abstract/2020/IsArray.js","webpack:///./node_modules/es-abstract/2020/IsCallable.js","webpack:///./node_modules/es-abstract/2020/IsConstructor.js","webpack:///./node_modules/es-abstract/2020/IsDataDescriptor.js","webpack:///./node_modules/es-abstract/2020/IsExtensible.js","webpack:///./node_modules/es-abstract/2020/IsInteger.js","webpack:///./node_modules/es-abstract/2020/IsPropertyKey.js","webpack:///./node_modules/es-abstract/2020/IsRegExp.js","webpack:///./node_modules/es-abstract/2020/LengthOfArrayLike.js","webpack:///./node_modules/es-abstract/2020/OrdinaryGetOwnProperty.js","webpack:///./node_modules/es-abstract/2020/RequireObjectCoercible.js","webpack:///./node_modules/es-abstract/2020/SameValue.js","webpack:///./node_modules/es-abstract/2020/ToBoolean.js","webpack:///./node_modules/es-abstract/2020/ToInteger.js","webpack:///./node_modules/es-abstract/2020/ToLength.js","webpack:///./node_modules/es-abstract/2020/ToNumber.js","webpack:///./node_modules/es-abstract/2020/ToObject.js","webpack:///./node_modules/es-abstract/2020/ToPrimitive.js","webpack:///./node_modules/es-abstract/2020/ToPropertyDescriptor.js","webpack:///./node_modules/es-abstract/2020/ToString.js","webpack:///./node_modules/es-abstract/2020/Type.js","webpack:///./node_modules/es-abstract/2020/abs.js","webpack:///./node_modules/es-abstract/2020/floor.js","webpack:///./node_modules/es-abstract/5/CheckObjectCoercible.js","webpack:///./node_modules/es-abstract/5/ToInteger.js","webpack:///./node_modules/es-abstract/5/ToNumber.js","webpack:///./node_modules/es-abstract/5/ToPrimitive.js","webpack:///./node_modules/es-abstract/5/Type.js","webpack:///./node_modules/es-abstract/5/abs.js","webpack:///./node_modules/es-abstract/5/floor.js","webpack:///./node_modules/es-abstract/GetIntrinsic.js","webpack:///./node_modules/es-abstract/helpers/DefineOwnProperty.js","webpack:///./node_modules/es-abstract/helpers/assertRecord.js","webpack:///./node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","webpack:///./node_modules/es-abstract/helpers/isFinite.js","webpack:///./node_modules/es-abstract/helpers/isNaN.js","webpack:///./node_modules/es-abstract/helpers/isPrimitive.js","webpack:///./node_modules/es-abstract/helpers/isPropertyDescriptor.js","webpack:///./node_modules/es-abstract/helpers/maxSafeInteger.js","webpack:///./node_modules/es-abstract/helpers/regexTester.js","webpack:///./node_modules/es-abstract/helpers/sign.js","webpack:///./node_modules/es-array-method-boxes-properly/index.js","webpack:///./node_modules/es-get-iterator/index.js","webpack:///./node_modules/es-get-iterator/node_modules/isarray/index.js","webpack:///./node_modules/es-to-primitive/es2015.js","webpack:///./node_modules/es-to-primitive/es5.js","webpack:///./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///./node_modules/foreach/index.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/get-intrinsic/index.js","webpack:///./node_modules/google-protobuf/google-protobuf.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/is-arguments/index.js","webpack:///./node_modules/is-bigint/index.js","webpack:///./node_modules/is-boolean-object/index.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/is-date-object/index.js","webpack:///./node_modules/is-map/index.js","webpack:///./node_modules/is-number-object/index.js","webpack:///./node_modules/is-regex/index.js","webpack:///./node_modules/is-set/index.js","webpack:///./node_modules/is-string/index.js","webpack:///./node_modules/is-symbol/index.js","webpack:///./node_modules/is-typed-array/index.js","webpack:///./node_modules/is-weakmap/index.js","webpack:///./node_modules/is-weakset/index.js","webpack:///./node_modules/locale-currency/index.js","webpack:///./node_modules/locale-currency/map.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/murmurhash/murmurhash.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/object-inspect/index.js","webpack:///./node_modules/object-inspect/util.inspect.js","webpack:///./node_modules/object-is/implementation.js","webpack:///./node_modules/object-is/index.js","webpack:///./node_modules/object-is/polyfill.js","webpack:///./node_modules/object-is/shim.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/object.assign/implementation.js","webpack:///./node_modules/object.assign/index.js","webpack:///./node_modules/object.assign/polyfill.js","webpack:///./node_modules/object.assign/shim.js","webpack:///./node_modules/regexp.prototype.flags/implementation.js","webpack:///./node_modules/regexp.prototype.flags/index.js","webpack:///./node_modules/regexp.prototype.flags/polyfill.js","webpack:///./node_modules/regexp.prototype.flags/shim.js","webpack:///./node_modules/side-channel/index.js","webpack:///./node_modules/slash/index.js","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/uuid/lib/rng.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/which-boxed-primitive/index.js","webpack:///./node_modules/which-collection/index.js","webpack:///./node_modules/which-typed-array/index.js","webpack:///./packages/api/injected.js","webpack:///./packages/api/methods.js","webpack:///./packages/api/query.js","webpack:///./packages/api/utils.js","webpack:///./packages/import-ynab4/importer.js","webpack:///./packages/import-ynab5/importer.js","webpack:///./packages/loot-core/migrations/1632571489012_remove_cache.js","webpack:///./packages/loot-core/node_modules/adm-zip/adm-zip.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/entryHeader.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/headers/mainHeader.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/deflater.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/methods/inflater.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/constants.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/errors.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/fattr.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/fileSystem.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/index.js","webpack:///./packages/loot-core/node_modules/adm-zip/util/utils.js","webpack:///./packages/loot-core/node_modules/adm-zip/zipEntry.js","webpack:///./packages/loot-core/node_modules/adm-zip/zipFile.js","webpack:///./packages/loot-core/node_modules/lru-cache/index.js","webpack:///../src/index.ts","webpack:///./packages/loot-core/node_modules/yallist/iterator.js","webpack:///./packages/loot-core/node_modules/yallist/yallist.js","webpack:///./packages/loot-core/src/mocks/budget.js","webpack:///./packages/loot-core/src/platform/exceptions/index.electron.js","webpack:///./packages/loot-core/src/platform/server/asyncStorage/index.electron.js","webpack:///./packages/loot-core/src/platform/server/connection/index.api.js","webpack:///./packages/loot-core/src/platform/server/fetch/index.electron.js","webpack:///./packages/loot-core/src/platform/server/fs/index.electron.js","webpack:///./packages/loot-core/src/platform/server/log/index.api.js","webpack:///./packages/loot-core/src/platform/server/sqlite/index.electron.js","webpack:///./packages/loot-core/src/platform/uuid/index.electron.js","webpack:///./packages/loot-core/src/server/accounts/export-to-csv.js","webpack:///./packages/loot-core/src/server/accounts/link.js","webpack:///./packages/loot-core/src/server/accounts/parse-file.js","webpack:///./packages/loot-core/src/server/accounts/payees.js","webpack:///./packages/loot-core/src/server/accounts/qif2json.js","webpack:///./packages/loot-core/src/server/accounts/rules.js","webpack:///./packages/loot-core/src/server/accounts/sync.js","webpack:///./packages/loot-core/src/server/accounts/title/index.js","webpack:///./packages/loot-core/src/server/accounts/title/lower-case.js","webpack:///./packages/loot-core/src/server/accounts/title/specials.js","webpack:///./packages/loot-core/src/server/accounts/transaction-rules.js","webpack:///./packages/loot-core/src/server/accounts/transactions.js","webpack:///./packages/loot-core/src/server/accounts/transfer.js","webpack:///./packages/loot-core/src/server/api-models.js","webpack:///./packages/loot-core/src/server/api.js","webpack:///./packages/loot-core/src/server/app.js","webpack:///./packages/loot-core/src/server/aql/compiler.js","webpack:///./packages/loot-core/src/server/aql/exec.js","webpack:///./packages/loot-core/src/server/aql/schema-helpers.js","webpack:///./packages/loot-core/src/server/aql/schema/executors.js","webpack:///./packages/loot-core/src/server/aql/schema/index.js","webpack:///./packages/loot-core/src/server/aql/schema/run-query.js","webpack:///./packages/loot-core/src/server/aql/views.js","webpack:///./packages/loot-core/src/server/backups.js","webpack:///./packages/loot-core/src/server/budget/actions.js","webpack:///./packages/loot-core/src/server/budget/app.js","webpack:///./packages/loot-core/src/server/budget/base.js","webpack:///./packages/loot-core/src/server/budget/report.js","webpack:///./packages/loot-core/src/server/budget/rollover.js","webpack:///./packages/loot-core/src/server/budget/util.js","webpack:///./packages/loot-core/src/server/cloud-storage.js","webpack:///./packages/loot-core/src/server/config.js","webpack:///./packages/loot-core/src/server/db/index.js","webpack:///./packages/loot-core/src/server/db/mappings.js","webpack:///./packages/loot-core/src/server/db/sort.js","webpack:///./packages/loot-core/src/server/db/util.js","webpack:///./packages/loot-core/src/server/encryption-internals.js","webpack:///./packages/loot-core/src/server/encryption.js","webpack:///./packages/loot-core/src/server/errors.js","webpack:///./packages/loot-core/src/server/main-app.js","webpack:///./packages/loot-core/src/server/main.js","webpack:///./packages/loot-core/src/server/merkle.js","webpack:///./packages/loot-core/src/server/migrate/migrations.js","webpack:///./packages/loot-core/src/server/models.js","webpack:///./packages/loot-core/src/server/mutators.js","webpack:///./packages/loot-core/src/server/notes/app.js","webpack:///./packages/loot-core/src/server/perf.js","webpack:///./packages/loot-core/src/server/platform.js","webpack:///./packages/loot-core/src/server/polyfills.js","webpack:///./packages/loot-core/src/server/post.js","webpack:///./packages/loot-core/src/server/prefs.js","webpack:///./packages/loot-core/src/server/schedules/app.js","webpack:///./packages/loot-core/src/server/schedules/find-schedules.js","webpack:///./packages/loot-core/src/server/sheet.js","webpack:///./packages/loot-core/src/server/spreadsheet/globals.js","webpack:///./packages/loot-core/src/server/spreadsheet/graph-data-structure.js","webpack:///./packages/loot-core/src/server/spreadsheet/spreadsheet.js","webpack:///./packages/loot-core/src/server/spreadsheet/util.js","webpack:///./packages/loot-core/src/server/sync/encoder.js","webpack:///./packages/loot-core/src/server/sync/index.js","webpack:///./packages/loot-core/src/server/sync/make-test-message.js","webpack:///./packages/loot-core/src/server/sync/migrate.js","webpack:///./packages/loot-core/src/server/sync/proto/sync_pb.js","webpack:///./packages/loot-core/src/server/sync/repair.js","webpack:///./packages/loot-core/src/server/sync/reset.js","webpack:///./packages/loot-core/src/server/timestamp.js","webpack:///./packages/loot-core/src/server/tools/app.js","webpack:///./packages/loot-core/src/server/tracking/events.js","webpack:///./packages/loot-core/src/server/undo.js","webpack:///./packages/loot-core/src/server/update.js","webpack:///./packages/loot-core/src/server/util/budget-name.js","webpack:///./packages/loot-core/src/server/util/rschedule.js","webpack:///./packages/loot-core/src/shared/accounts.js","webpack:///./packages/loot-core/src/shared/async.js","webpack:///./packages/loot-core/src/shared/months.js","webpack:///./packages/loot-core/src/shared/query.js","webpack:///./packages/loot-core/src/shared/rules.js","webpack:///./packages/loot-core/src/shared/schedules.js","webpack:///./packages/loot-core/src/shared/transactions.js","webpack:///./packages/loot-core/src/shared/util.js","webpack:///external \"better-sqlite3\"","webpack:///external \"crypto\"","webpack:///external \"fs\"","webpack:///external \"node-fetch\"","webpack:///external \"node-libofx\"","webpack:///external \"path\"","webpack:///external \"stream\"","webpack:///external \"string_decoder\"","webpack:///external \"util\"","webpack:///external \"zlib\""],"names":["require","ProfileHelpers","MixpanelGroups","constructor","mp_instance","mixpanel","endpoint","set_once","group_key","group_id","prop","to","modifiers","callback","identifiers","$group_key","$group_id","_set","set","delete_group","_delete_profile","remove","data","_remove","union","_union","unset","_unset","exports","async_all","ensure_timestamp","MixpanelPeople","DEFAULT_CONFIG","test","debug","verbose","host","protocol","path","base64","str","btoa","Buffer","from","toString","create_client","token","config","Error","MAX_BATCH_SIZE","TRACK_AGE_LIMIT","metrics","send_request","options","content","JSON","stringify","method","toUpperCase","query_params","key","secret","request_options","headers","request","request_base","port","length","encoded","api_key","URLSearchParams","fetch","body","then","res","text","e","result","parse","status","error","ex","undefined","catch","console","log","message","send_event_request","event","properties","mp_lib","chunk","arr","size","chunks","i","total","push","slice","send_batch_requests","event_list","max_batch_size","Math","min","max_concurrent_requests","ceil","event_batches","request_batches","total_event_batches","total_request_batches","send_event_batch","batch","cb","map","time","send_next_request_batch","index","request_batch","errors","results","track","Date","now","track_batch","batch_options","import","import_batch","alias","distinct_id","identify","identified_id","anon_id","$identified_id","$anon_id","groups","people","set_config","Object","assign","split","Number","module","Client","warn","init","merge_modifiers","$distinct_id","increment","by","$add","entries","val","isNaN","parseFloat","append","value","$append","keys","forEach","track_charge","amount","$ignore_time","hasOwnProperty","$amount","$time","prototype","call","toISOString","clear_charges","delete_user","$ignore_alias","$ip","Base","$set","set_key","ip","$remove","Array","isArray","$union","merge_values","filter","v","$unset","requests","handler","done","err","l","floor","getTime","OccurrenceGenerator","args","timezone","maxDuration","firstDate","_firstDate","start","_run","next","dateAdapter","fromDateTime","lastDate","_lastDate","isInfinite","end","reverse","pipe","operators","reduce","prev","curr","base","occurrences","OccurrenceIterator","normalizeOccurrencesArgs","collections","CollectionIterator","normalizeCollectionsArgs","occursBetween","startInput","endInput","normalizeDateInput","hasDuration","excludeEnds","getMaxDuration","iterator","subtract","day","isBefore","isEqual","occursOn","rawArgs","normalizeOccursOnArgs","weekday","before","ArgumentError","after","add","date","get","skipToDate","getDifferenceBetweenWeekdays","granularity","isAfter","occursAfter","adapter","excludeStart","occursBefore","isAfterOrEqual","DateAdapterBase$1","excludeDates","normalizeRunArgs","dateInputToDateTime","normalizeDateInputToAdapter","dateInputToDateAdapter","normalizeRunOutput","normalizeDateTimeTimezone$1","isInteger","iterable","Symbol","occurrenceIterator","toArray","take","InfiniteLoopError","yieldArgs","normalizeDateOutput","Collection","dates","periodStart","periodEnd","weekStart","getPeriod","startDate","collectionIterator","collection","period","isBeforeOrEqual","skipEmptyPeriods","incrementPeriod","endGranularity","Operator","streams","stream","calculateIsInfinite","calculateHasDuration","IterableWrapper","generator","runArgs","processYieldArgs","every","s","streamsComparer","a","b","streamsReverseComparer","selectNextIterable","sort","shift","selectLastIterable","pop","AddOperator","_","wrappedStreams","input","some","streamsDuration","Calendar","schedules","schedule","count","Dates","adapters","datetimes","duration","toDateTime","findIndex","valueOf","splice","keepLocalTime","json","toJSON","fromJSON","fn","dateTimeSortComparer","dateCache","InvalidDateAdapterError","dateAdapterConfig","DateAdapterBase","_date","generators","name","isDate","_object","unimplementedError","fromDate","_options","_json","_datetime","DateTime","hasTimezoneSupport","DateAdapter","WEEKDAYS","MILLISECONDS_IN_SECOND","MILLISECONDS_IN_MINUTE","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_DAY","MILLISECONDS_IN_WEEK","InvalidDateTimeError","assertIsValid","UTC","year","month","hour","minute","second","millisecond","fromDateAdapter","_end","object","assertSameTimeZone","isOccurring","unit","unshift","forkDateTime","addUTCYears","addUTCMonths","addUTCWeeks","addUTCDays","addUTCHours","addUTCMinutes","addUTCSeconds","addUTCMilliseconds","subUTCYears","subUTCMonths","subUTCWeeks","subUTCDays","subUTCHours","subUTCMinutes","subUTCSeconds","subUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCYearDay","getUTCDay","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","setUTCFullYear","monthLength","setUTCDate","setUTCMonth","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","opt","setDateToStartOfWeek","setDateToEndOfWeek","x","y","wkst","orderedWeekdays","indexOf","wkdays","shiftArray","array","block","getDaysInFebruary","isLeapYear","diff","toInteger","NaN","int","addMilliseconds","dirtyDate","dirtyAmount","arguments","TypeError","timestamp","desiredMonth","dateWithDesiredMonth","daysInMonth","days","normalizeDateTimeTimezone","RuleBase","recurrenceRules","cloneRuleOptions","normOptions","normalizeRuleOptions","RecurrenceRulesIterator","recurrenceRulesReducer","Rule","tzoptions","DateTime$1","ScheduleBase","occurrenceStream","SubtractOperator","inclusion","exclusion","cycleStreams","iterateExclusion","unique","UniqueOperator","lastValue","Schedule","rrules","exrules","arg","ruleArgs","rule","rdates","exdates","intersection","IntersectionOperator","maxFailedIterations","defaultMaxFailedIterations","hasEndDate","cycleStreams$1","iteration","maxIterations","lastValidDate","last","DurationIterableWrapper","workingValue","MergeDurationOperatorError","mergeDuration","MergeDurationOperator","reverseRun","forwardRun","checkFromStart","checkFromEnd","SplitDurationOperatorError","splitDuration","SplitDurationOperator","splitFn","datesBucket","splitDate","selectedDate","bucketIndex","selectedBucketIndex","dateIndex","selectedDateIndex","bucket","dateShouldComeNext","datePastEnd","datePastSkipToDate","valid","uniqDateTimes","Map","values","abs","getDaysInYear","numberSortComparer","freqToGranularity","freq","cloneJSON","RuleOptionError","normalizeDefaultOptions","recurrenceModules","startOptions","mod","normalizeOptions","obj","RecurrenceRuleError","ValidDateTime","InvalidDateTime","rules","iterate","iterateWithReverseCount","iterateWithCount","normalizeDateTimeArgs","startingDate","nextDate","runRules","isDatePastEnd","run","RecurrenceRule","processor","FrequencyRule","initDate","intervalUnit","frequency","firstIntervalStartDate","normalizedStartDate","intervalStartDate","intervalEndDate","normalizedEndDate","skipToInterval","validateDate","dateIsWithinInterval","setToCurrentInterval","intervalDifference","intervalDifferenceBetweenDates","first","interval","direction","difference","intervalDuration","months","RevFrequencyRule","FREQUENCIES","FrequencyRuleModule","byMillisecondOfSecond","norm","includes","deps","ruleOptionFilled","option","freqCache","WeakMap","RecurrenceRuleBase","has","RevRecurrenceRuleBase","RevByTimeOfUnitRule","currentTime","baseGranularity","RevByMillisecondOfSecondRule","ByTimeOfUnitRule","ByMillisecondOfSecondRule","ByMillisecondOfSecondRuleModule","num","RevBySecondOfMinuteRule","bySecondOfMinute","BySecondOfMinuteRule","BySecondOfMinuteRuleModule","RevByMinuteOfHourRule","byMinuteOfHour","ByMinuteOfHourRule","ByMinuteOfHourRuleModule","RevByHourOfDayRule","byHourOfDay","ByHourOfDayRule","ByHourOfDayRuleModule","getNextWeekday","getNthWeekdayOfMonth","nth","ByDayOfMonthRule","normalizedByDayOfMonth","normalizeByDayOfMonth","byDayOfMonth","byDayOfWeek","currentDay","nextMonth","lengthOfMonth","filteredByDayOfMonth","entry","nthWeekdayOfMonth","Set","RevByDayOfMonthRule","ByDayOfMonthRuleModule","byDayOfYear","getNthWeekdayOfYear","getPreviousWeekday","RevByDayOfWeekRule","byMonthOfYear","expandYearly","expandMonthly","expand","getPrevWeekdaysOfYear","getPrevWeekdaysOfMonth","normalizedNthWeekdaysOfYear","normalizedNextWeekdays","normalizedNthWeekdaysOfMonth","ByDayOfWeekRule","getNextWeekdaysOfYear","getNextWeekdaysOfMonth","ByDayOfWeekRuleModule","invalidWeeday","find","RevByMonthOfYearRule","currentMonth","ByMonthOfYearRule","ByMonthOfYearRuleModule","ICAL_RULES","serialize","opts","type","nested","serializeDataToJSON","ParseJSONError","registerJSONSerializerFn","SerializeJSONError","JSON_FN_MAP","gen","StandardDateAdapter","datetime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","root","lib","version","settings","currency","symbol","format","decimal","thousand","precision","grouping","number","nativeMap","nativeIsArray","isString","charCodeAt","substr","isObject","defaults","defs","context","j","checkPrecision","round","checkCurrencyFormat","match","pos","neg","replace","zero","unformat","regex","RegExp","unformatted","toFixed","exponentialForm","rounded","finalResult","formatNumber","usePrecision","negative","parseInt","formatMoney","formats","useFormat","formatColumn","list","padAfterSymbol","maxLength","formatted","fVal","join","accounting","Utils","pth","ZipEntry","ZipFile","get_Bool","def","get_Str","defaultOptions","noSort","readEntries","Constants","NONE","fs","inBuffer","create","Uint8Array","isBuffer","BUFFER","filetools","existsSync","FILE","filename","readFileSync","Errors","INVALID_FILENAME","_zip","canonical","sanitize","getEntry","item","entryName","header","fixPath","zipPath","posix","normalize","sep","readFile","pass","getData","readFileAsync","getDataAsync","readAsText","encoding","readAsTextAsync","deleteFile","deleteEntry","addZipComment","comment","getZipComment","addZipEntryComment","getZipEntryComment","updateFile","setData","addLocalFile","localPath","zipName","p","_attr","statSync","addFile","FILE_NOT_FOUND","addLocalFolder","rx","items","findFiles","self","filepath","relative","stats","isFile","alloc","addLocalFolderAsync","open","code","stat","er0","er1","addLocalFolderPromise","props","Promise","resolve","reject","attr","update","isStat","Stats","mtime","fileattr","isDirectory","isWin","unix","mode","setEntry","getEntries","getEntryCount","extractEntryTo","targetPath","maintainEntryPath","overwrite","keepOriginalPermission","outFileName","NO_ENTRY","target","basename","children","getEntryChildren","child","CANT_EXTRACT_FILE","childName","fileAttr","writeFileTo","CANT_OVERRIDE","extractAllTo","NO_ZIP","makeDir","utimesSync","extractAllToAsync","getPath","getError","msg","file","dirEntries","fileEntries","dirPath","dirAttr","chmodSync","er","filePath","err_1","writeFileToAsync","succ","utimes","err_2","delete","writeZip","targetFileName","zipData","compressToBuffer","ok","writeZipPromise","perm","toBufferPromise","ret","toAsyncBuffer","toBuffer","onSuccess","onFail","onItemStart","onItemEnd","_verMade","_version","_flags","_method","_time","_crc","_compressedSize","_size","_fnameLen","_extraLen","_comLen","_diskStart","_inattr","_offset","FLG_EFS","_dataHeader","setTime","made","flags","STORED","DEFLATED","crc","max","compressedSize","fileNameLength","extraLength","commentLength","diskNumStart","inAttr","offset","encripted","entryHeaderSize","CENHDR","realDataOffset","LOCHDR","fnameLen","extraLen","dataHeader","loadDataHeaderFromBinary","readUInt32LE","LOCSIG","INVALID_LOC","readUInt16LE","LOCVER","LOCFLG","LOCHOW","LOCTIM","LOCCRC","LOCSIZ","LOCLEN","LOCNAM","LOCEXT","loadFromBinary","CENSIG","INVALID_CEN","CENVEM","CENVER","CENFLG","CENHOW","CENTIM","CENCRC","CENSIZ","CENLEN","CENNAM","CENEXT","CENCOM","CENDSK","CENATT","CENATX","CENOFF","dataHeaderToBinary","writeUInt32LE","writeUInt16LE","entryHeaderToBinary","fill","bytes","nr","methodToString","EntryHeader","MainHeader","_volumeEntries","_totalEntries","_commentLength","diskEntries","totalEntries","mainHeaderSize","ENDHDR","ENDSIG","ZIP64HDR","ZIP64SIG","INVALID_END","ENDSUB","ENDTOT","ENDSIZ","ENDOFF","ENDCOM","readBigUInt64LE","ZIP64SUB","ZIP64TOT","ZIP64SIZ","ZIP64OFF","toBinary","len","offs","inbuf","zlib","chunkSize","deflate","deflateRawSync","deflateAsync","tmp","createDeflateRaw","parts","on","buf","written","part","copy","Deflater","Inflater","ZipCrypto","inflate","inflateRawSync","inflateAsync","createInflateRaw","randomFillSync","crctable","Uint32Array","t","uMul","imul","crc32update","pCrc32","bval","genSalt","node","salt","random","Initkeys","pw","updateKeys","byteValue","k","make_decrypter","pwd","c","make_encrypter","decrypt","decrypter","_salter","encrypt","oldlike","encrypter","EXTSIG","EXTHDR","EXTCRC","EXTSIZ","EXTLEN","END64HDR","END64SIG","END64START","END64OFF","END64NUMDISKS","ZIP64LEAD","ZIP64SIZE","ZIP64VEM","ZIP64VER","ZIP64DSK","ZIP64DSKDIR","ZIP64SIZB","ZIP64EXTRA","SHRUNK","REDUCED1","REDUCED2","REDUCED3","REDUCED4","IMPLODED","ENHANCED_DEFLATED","PKWARE","BZIP2","LZMA","IBM_TERSE","IBM_LZ77","AES_ENCRYPT","FLG_ENC","FLG_COMP1","FLG_COMP2","FLG_DESC","FLG_ENH","FLG_PATCH","FLG_STR","FLG_MSK","EF_ID","EF_SIZE","ID_ZIP64","ID_AVINFO","ID_PFS","ID_OS2","ID_NTFS","ID_OPENVMS","ID_UNIX","ID_FORK","ID_PATCH","ID_X509_PKCS7","ID_X509_CERTID_F","ID_X509_CERTID_C","ID_STRONGENC","ID_RECORD_MGT","ID_X509_PKCS7_RL","ID_IBM1","ID_IBM2","ID_POSZIP","EF_ZIP64_OR_32","EF_ZIP64_OR_16","EF_ZIP64_SUNCOMP","EF_ZIP64_SCOMP","EF_ZIP64_RHO","EF_ZIP64_DSN","NO_DATA","BAD_CRC","FILE_IN_THE_WAY","UNKNOWN_METHOD","AVAIL_DATA","INVALID_DISTANCE","TO_MANY_CODES","INVALID_REPEAT_LEN","INVALID_REPEAT_FIRST","INCOMPLETE_CODES","INVALID_DYN_DISTANCE","INVALID_CODES_LEN","INVALID_STORE_BLOCK","INVALID_BLOCK_TYPE","DIRECTORY_CONTENT_ERROR","NOT_IMPLEMENTED","INVALID_FORMAT","_path","_obj","newAttr","_stat","directory","readonly","hidden","executable","atime","readOnly","decodeAttributes","encodeAttributes","isReadOnly","isHidden","isExecutable","mTime","aTime","process","versions","originalFs","FileAttr","fsystem","platform","is_Obj","crcTable","folder","mkdirSync","fpath","resolvedPath","dirname","fd","openSync","writeSync","closeSync","exists","exist","chmod","write","close","findSync","dir","pattern","recursive","files","readdirSync","concat","getAttributes","setAttributes","byte","crc32","genCRCTable","off","safeSuffix","prefix","buffer","swap64","Headers","Methods","_entryHeader","_entryName","_comment","_isDirectory","uncompressedData","_extra","getCompressedDataFromZip","crc32OK","decompress","async","compressedData","inflater","compress","deflater","deflated","readUInt64LE","parseExtra","signature","parseZip64ExtendedInformation","rawEntryName","lastChar","extra","n","getCompressedData","getCompressedDataAsync","changed","packHeader","addpos","entryList","entryTable","mainHeader","loadedEntries","readMainHeader","iterateEntries","readNow","endStart","endOffset","commentEnd","sortEntries","toLowerCase","localeCompare","_self","zipEntry","dataBlock","entryHeaders","totalSize","dindex","entryNameLen","postHeader","dataLength","entryHeader","outBuffer","mh","compress2Buffer","entryLists","ArraySpeciesCreate","Call","CreateDataPropertyOrThrow","Get","HasProperty","IsCallable","LengthOfArrayLike","ToBoolean","ToObject","ToString","callBound","boxedString","splitString","strSplit","callbackfn","O","thisArg","A","Pk","kPresent","kValue","selected","define","RequireObjectCoercible","implementation","getPolyfill","polyfill","shim","$slice","bound","apply","arrayMethodBoxesProperly","shimArrayPrototypeMap","availableTypedArrays","typedArray","global","GetIntrinsic","callBind","$indexOf","callBoundIntrinsic","allowMissing","intrinsic","bind","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","func","desc","configurable","applyBind","charenc","utf8","stringToBytes","bin","unescape","encodeURIComponent","bytesToString","decodeURIComponent","escape","String","fromCharCode","base64map","crypt","rotl","rotr","endian","randomBytes","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","triplet","charAt","base64ToBytes","imod4","pow","ResizeableBuffer","prepend","resize","clone","reset","Transform","tab","nl","np","cr","space","bom_utf8","Parser","readableObjectMode","underscore","bom","CsvError","fnCastField","cast","cast_date","fnFirstLineToHeaders","columns","normalizeColumnsArray","columns_duplicates_to_array","delimiter_json","delimiter","from_line","info","max_record_size","objname","on_record","quote","raw","record_delimiter","rd","relax","relax_column_count","relax_column_count_less","relax_column_count_more","skip_empty_lines","skip_lines_with_empty_values","skip_lines_with_error","rtrim","ltrim","trim","to_line","comment_lines","empty_lines","invalid_field_length","lines","records","state","bomSkipped","castField","commenting","enabled","escaping","escapeIsQuote","expectedRecordLength","field","firstLineToHeaders","previousBuf","quoting","stop","rawBuffer","record","recordHasError","record_length","recordDelimiterMaxLength","trimChars","wasQuoting","wasRowDelimiter","_transform","__parse","_flush","nextBuf","compare","bufLen","__needMoreData","record_delimiterCount","__autoDiscoverRowDelimiter","chr","nextChr","isNextChrTrimable","__isCharTrimable","isNextChrComment","__compareBytes","isNextChrDelimiter","__isDelimiter","isNextChrRowDelimiter","__isRecordDelimiter","__error","__context","recordDelimiterLength","skipCommentLine","__resetField","__resetRow","errField","__onField","errRecord","__onRow","commentCount","delimiterLength","lappend","rappend","recordLength","isRecordEmpty","__firstLineToColumns","disabled","__push","normalizedHeaders","trimRight","__cast","f","isColumns","__isFloat","sourceBuf","targetBuf","firtByte","sourceLength","numOfCharLeft","requiredLength","loop1","del","rdLength","emit","column","argument","parser","read","setImmediate","contexts","captureStackTrace","normalizedColumns","err1","err2","Stringifier","castPath","charCodeOfDot","getTag","isKey","isSymbol","reEscapeChar","reIsDeepProp","reIsPlainProp","rePropName","stringToPath","toKey","util","stringifier","nextTick","d","base1","base2","base3","base4","isRegExp","quoted_match","ref","writableObjectMode","quoted","quoted_empty","quoted_string","eof","normalize_columns","bool","boolean","string","chunkIsHeader","containsEscape","containsQuote","containsRowDelimiter","containsdelimiter","csvrecord","m","quotedMatch","quotedString","ref1","regexp","shouldQuote","expression","subString","INFINITY","StringDecoder","decoder","localeCurrency","currencies","localeFormats","defaultCurrency","thousandsSeparator","decimalSeparator","symbolOnLeft","spaceBetweenAmountAndSymbol","decimalDigits","defaultLocaleFormat","formatMapping","locale","getCurrency","localeMatch","exec","language","region","localeFormat","findCurrency","isUndefined","currencyCode","__this","that","limit","thisLength","thatLength","matrix","prepare","this_i","that_j","cost","steps","similarity","addLeadingZeros","targetLength","sign","output","dirtyObject","property","cloneObject","dayPeriodEnum","am","pm","midnight","noon","morning","afternoon","evening","night","formatters","G","localize","era","width","signedYear","ordinalNumber","lightFormatters","Y","signedWeekYear","getUTCWeekYear","weekYear","twoDigitYear","R","isoWeekYear","getUTCISOWeekYear","u","Q","quarter","q","M","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","weekStartsOn","isoDayOfWeek","hours","dayPeriodEnumValue","dayPeriod","B","h","H","K","S","numberOfDigits","milliseconds","fractionalSeconds","X","_localize","originalDate","_originalDate","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","z","T","dirtyDelimiter","absOffset","minutes","dateLongFormatter","formatLong","timeLongFormatter","dateTimeLongFormatter","matchResult","datePattern","timePattern","dateTimeFormat","dateTime","longFormatters","P","getTimezoneOffsetInMilliseconds","baseTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","toDate","startOfYearTimestamp","startOfUTCISOWeek","startOfUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeek","startOfUTCWeekYear","dirtyOptions","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","protectedTokens","isProtectedToken","throwProtectedError","setUTCDay","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","remainder","dayIndex","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","fourthOfJanuary","firstWeek","dirtyNumber","addDays","setDate","addHours","addISOWeekYears","setISOWeekYear","getISOWeekYear","addMinutes","addMonths","setFullYear","setHours","getDaysInMonth","setMonth","addQuarters","addSeconds","addWeeks","addYears","areIntervalsOverlapping","dirtyIntervalLeft","dirtyIntervalRight","intervalLeft","intervalRight","leftStartTime","leftEndTime","rightStartTime","rightEndTime","closestIndexTo","dirtyDateToCompare","dirtyDatesArray","dateToCompare","timeToCompare","datesArray","minDistance","currentDate","distance","closestTo","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","compareDesc","differenceInCalendarDays","startOfDayLeft","startOfDay","startOfDayRight","timestampLeft","timestampRight","differenceInCalendarISOWeekYears","differenceInCalendarISOWeeks","startOfISOWeekLeft","startOfISOWeek","startOfISOWeekRight","differenceInCalendarMonths","yearDiff","monthDiff","differenceInCalendarQuarters","quarterDiff","getQuarter","differenceInCalendarWeeks","startOfWeekLeft","startOfWeek","startOfWeekRight","differenceInCalendarYears","differenceInDays","isLastDayNotFull","differenceInHours","differenceInMilliseconds","differenceInISOWeekYears","subISOWeekYears","isLastISOWeekYearNotFull","differenceInMinutes","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","isLastYearNotFull","eachDayOfInterval","dirtyInterval","endDate","endTime","step","eachWeekOfInterval","startDateWeek","endDateWeek","weeks","currentWeek","eachWeekendOfInterval","dateInterval","weekends","isWeekend","isSunday","eachWeekendOfMonth","startOfMonth","endOfMonth","eachWeekendOfYear","startOfYear","endOfYear","endOfDay","endOfDecade","decade","endOfHour","setMinutes","endOfISOWeek","endOfWeek","endOfISOWeekYear","setMilliseconds","endOfMinute","endOfQuarter","endOfSecond","getDay","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","defaultLocale","isValid","utcDate","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","awareOfUnicodeTokens","MINUTES_IN_DAY","MINUTES_IN_ALMOST_TWO_DAYS","MINUTES_IN_MONTH","MINUTES_IN_TWO_MONTHS","formatDistance","dirtyBaseDate","comparison","localizeOptions","addSuffix","Boolean","seconds","offsetInSeconds","includeSeconds","nearestMonth","monthsSinceStartOfYear","years","MINUTES_IN_YEAR","formatDistanceStrict","roundingMethod","roundingMethodFn","formatRelative","baseDate","utcBaseDate","fromUnixTime","dirtyUnixTime","unixTime","dayOfMonth","getDayOfYear","monthIndex","lastDayOfMonth","getDecade","getISODay","getISOWeek","startOfISOWeekYear","getISOWeeksInYear","thisYear","nextYear","getOverlappingDaysInIntervals","isOverlapping","overlapStartDate","overlapEndDate","differenceInMs","getUnixTime","getWeek","startOfWeekYear","getWeekOfMonth","startWeekDay","currentWeekDay","startWeekDayWithOptions","getWeekYear","getWeeksInMonth","getYear","dirtyLeftDate","dirtyRightDate","isFirstDayOfMonth","isFriday","isLastDayOfMonth","isMonday","isSameDay","dateLeftStartOfDay","dateRightStartOfDay","isSameHour","dateLeftStartOfHour","startOfHour","dateRightStartOfHour","isSameISOWeek","isSameWeek","isSameISOWeekYear","dateLeftStartOfYear","dateRightStartOfYear","isSameMinute","dateLeftStartOfMinute","startOfMinute","dateRightStartOfMinute","isSameMonth","isSameQuarter","dateLeftStartOfQuarter","startOfQuarter","dateRightStartOfQuarter","isSameSecond","dateLeftStartOfSecond","startOfSecond","dateRightStartOfSecond","dateLeftStartOfWeek","dateRightStartOfWeek","isSameYear","isSaturday","isThursday","isTuesday","isWednesday","isWithinInterval","startTime","lastDayOfDecade","lastDayOfISOWeek","lastDayOfWeek","lastDayOfISOWeekYear","lastDayOfQuarter","lastDayOfYear","lightFormat","buildFormatLongFn","defaultWidth","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","argumentCallback","buildMatchFn","dirtyString","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","rest","predicate","buildMatchPatternFn","parseResult","parsePattern","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","dateFormats","full","long","medium","short","timeFormats","dateTimeFormats","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","eraValues","narrow","abbreviated","wide","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","rem100","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","priority","isTwoDigitYear","validate","normalizedTwoDigitYear","firstWeekOfYear","wholeWeekDays","isPM","timestampIsSet","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","uniquePrioritySetters","setter","setterArray","convertedDate","DEFAULT_ADDITIONAL_DIGITS","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","parseTimezone","fullTime","fullTimeDate","fullTimeDateNextDay","offsetDiff","timeString","captures","century","isWeekDate","parseDateUnit","validateWeekDate","dayOfISOWeekYear","validateDayOfYearDate","parseTimeUnit","validateTime","timezoneString","validateTimezone","fourthOfJanuaryDay","daysInMonths","_year","_hours","roundToNearestMinutes","nearestTo","roundedMinutes","remainderMinutes","addedMinutes","dirtyDayOfMonth","setDay","setDayOfYear","dirtyDayOfYear","dirtyHours","setISODay","setISOWeek","dirtyISOWeekYear","dirtyMilliseconds","dirtyMinutes","dirtyMonth","setQuarter","dirtyQuarter","oldQuarter","dirtySeconds","setWeek","setWeekYear","dirtyWeekYear","setYear","dirtyYear","startOfDecade","cleanDate","subDays","subHours","subMinutes","subMonths","subQuarters","subSeconds","subWeeks","subYears","argStr","stack","objectKeys","isArguments","is","isRegex","whichBoxedPrimitive","whichCollection","getIterator","getSideChannel","whichTypedArray","$getTime","gPO","getPrototypeOf","$objToString","$Set","$mapHas","$mapGet","$mapSize","$setAdd","$setDelete","$setHas","$setSize","setHasEqualElement","val1","channel","internalDeepEqual","findLooseMatchingPrimitives","prim","mapMightHaveLoosePrim","altValue","curB","looseOpts","strict","setMightHaveLoosePrim","mapHasEqualEntry","key1","item1","key2","actual","expected","actualBoxed","expectedBoxed","hasActual","hasExpected","sentinel","objEquiv","setEquiv","iA","iB","resultA","resultB","mapEquiv","item2","aIsArray","bIsArray","aIsError","bIsError","aIsRegex","bIsRegex","source","aIsDate","bIsDate","aIsBuffer","bIsBuffer","ka","kb","aCollection","bCollection","deepEqual","hasSymbols","toStr","origDefineProperty","defineProperty","isFunction","arePropertyDescriptorsSupported","enumerable","supportsDescriptors","writable","defineProperties","predicates","getOwnPropertySymbols","$Array","$species","$TypeError","IsArray","IsConstructor","IsInteger","Type","originalArray","C","F","V","argumentsList","DefineOwnProperty","FromPropertyDescriptor","OrdinaryGetOwnProperty","IsDataDescriptor","IsExtensible","IsPropertyKey","SameValue","CreateDataProperty","oldDesc","extensible","immutable","success","isPropertyDescriptor","IsAccessorDescriptor","ToPropertyDescriptor","DefinePropertyOrThrow","Desc","assertRecord","inspect","$construct","isConstructorMarker","badArrayLike","$Object","isPrimitive","$preventExtensions","preventExtensions","$isExtensible","isExtensible","$isNaN","$isFinite","absValue","$match","hasRegExpMatcher","IsRegExp","ToLength","$isEnumerable","arrayLength","regexLastIndex","ES5ToInteger","ToNumber","ToInteger","MAX_SAFE_INTEGER","$Number","$RegExp","$parseInteger","regexTester","$strSlice","isBinary","isOctal","isInvalidHexLiteral","nonWS","nonWSregex","hasNonWS","ws","trimRegex","$replace","$trim","ToPrimitive","trimmed","toPrimitive","Obj","getter","$String","ES5Type","$abs","$floor","CheckObjectCoercible","optMessage","$sign","$SyntaxError","allowed","isData","IsAccessor","recordType","argumentName","isFinite","Infinity","IsPropertyDescriptor","ES","$Math","$test","properlyBoxed","properlyBoxesNonStrict","properlyBoxesStrict","threwException","__","$iterator","$Map","$arrayPush","$charCodeAt","$stringSlice","advanceStringIndex","getArrayIterator","arraylike","getNonCollectionIterator","noPrimordialCollections","nextIndex","isMap","isSet","$mapForEach","$setForEach","$mapIterator","$setIterator","getStopIterationIterator","$mapAtAtIterator","$setAtAtIterator","getCollectionIterator","isCallable","ordinaryToPrimitive","OrdinaryToPrimitive","hint","methodNames","GetMethod","exoticToPrim","ES5internalSlots","actualHint","methods","hasOwn","ctx","ERROR_MESSAGE","funcType","binder","boundLength","boundArgs","Function","Empty","SyntaxError","$Function","getEvalledConstructor","expressionSyntax","getOwnPropertyDescriptor","throwTypeError","ThrowTypeError","callee","calleeThrows","gOPDthrows","getProto","__proto__","needsEval","TypedArray","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Proxy","ReferenceError","Reflect","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","$jscomp","scope","findInternal","ASSUME_ES5","ASSUME_NO_NATIVE_MAP","ASSUME_NO_NATIVE_SET","SIMPLE_FROUND_POLYFILL","getGlobal","window","checkStringArgs","g","COMPILED","goog","isDef","isBoolean","isNumber","exportPath_","execScript","CLOSURE_UNCOMPILED_DEFINES","CLOSURE_DEFINES","nodeType","FEATURESET_YEAR","DEBUG","LOCALE","TRUSTED_SITE","STRICT_MODE_COMPATIBLE","DISALLOW_TEST_ONLY_CODE","ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING","provide","isInModuleLoader_","isProvided_","constructNamespace_","implicitNamespaces_","lastIndexOf","getObjectByName","getScriptNonce","getScriptNonce_","document","cspNonce_","NONCE_PATTERN_","querySelector","nonce","getAttribute","VALID_MODULE_RE_","search","isInGoogModuleLoader_","moduleLoaderState_","moduleName","getInternal_","loadedModules_","ModuleType","ES6","GOOG","isInEs6ModuleLoader_","getCurrentModulePath","declareLegacyNamespace","declareModuleId","moduleId","setTestOnly","forwardDeclare","isDefAndNotNull","globalize","addDependency","DEPENDENCIES_ENABLED","debugLoader_","ENABLE_DEBUG_LOADER","logToConsole_","requested","load_","requireType","basePath","nullFunction","abstractMethod","addSingletonGetter","instance_","getInstance","instantiatedSingletons_","LOAD_MODULE_USING_EVAL","SEAL_MODULE_EXPORTS","TRANSPILE","ASSUME_ES_MODULES_TRANSPILED","TRANSPILE_TO_LANGUAGE","TRANSPILER","hasBadLetScoping","useSafari10Workaround","workaroundSafari10EvalBug","loadModule","loadModuleFromSource_","seal","normalizePath_","loadFileSync_","CLOSURE_LOAD_FILE_SYNC","XMLHttpRequest","send","responseText","transpile_","transpile","$gwtExport","typeOf","propertyIsEnumerable","isNull","isArrayLike","isDateLike","getUid","UID_PROPERTY_","uidCounter_","hasUid","removeUid","removeAttribute","getHashCode","removeHashCode","bindNative_","bindJs_","partial","mixin","globalEval","evalWorksForGlobals_","_evalTest_","createElement","defer","appendChild","createTextNode","head","removeChild","getCssName","cssNameMapping_","cssNameMappingStyle_","CLOSURE_CSS_NAME_MAP_FN","setCssNameMapping","CLOSURE_CSS_NAME_MAPPING","getMsg","html","getMsgWithFallback","exportSymbol","exportProperty","inherits","superClass_","caller","defineClass","statics","createSealingConstructor_","applyProperties_","SEAL_CLASS_INSTANCES","isUnsealable_","UNSEALABLE_CONSTRUCTOR_PROPERTY_","OBJECT_PROTOTYPE_FIELDS_","tagUnsealableClass","inHtmlDocument_","isDocumentLoading_","attachEvent","readyState","findBasePath_","CLOSURE_BASE_PATH","currentScript","getElementsByTagName","src","Transpiler","requiresTranspilation_","transpilationTarget_","createRequiresTranspilation_","es3","navigator","userAgent","needsTranspile","transpiler_","protectScriptTag_","DebugLoader_","dependencies_","idToPath_","written_","loadingDeps_","depsToLoad_","paused_","factory_","DependencyFactory","deferredCallbacks_","deferredQueue_","bootstrap","setTimeout","getPathFromDeps_","onLoad","loadClosureDeps","createDependency","loadDeps_","areDepsLoaded_","requires","setDependencyFactory","loading_","pause","resume","resume_","loaded","loaded_","pending","setModuleState","registerEs6ModuleExports","registerGoogModuleExports","clearModuleState","defer_","areDepsLoaded","load","pause_","LoadController","Dependency","relativePath","provides","loadFlags","loadCallbacks_","getPathName","callbackMap_","registerCallback_","unregisterCallback_","callback_","CLOSURE_IMPORT_SCRIPT","IS_OLD_IE_","TRUSTED_TYPES_POLICY_","createHTML","setAttribute","onreadystatechange","onload","createScriptURL","Es6ModuleDependency","textContent","createScript","TransformedDependency","contents_","lazyFetch_","transform","ensure","TranspiledDependency","transpiler","PreTranspiledEs6ModuleDependency","GoogModuleDependency","needsTranspile_","atob","all","lang","CLOSURE_NO_DEPS","TRUSTED_TYPES_POLICY_NAME","identity_","createTrustedTypesPolicy","TrustedTypes","createPolicy","createURL","jspb","BinaryConstants","ConstBinaryMessage","BinaryMessage","FieldType","INVALID","DOUBLE","FLOAT","INT64","UINT64","INT32","FIXED64","FIXED32","BOOL","STRING","GROUP","MESSAGE","BYTES","UINT32","ENUM","SFIXED32","SFIXED64","SINT32","SINT64","FHASH64","VHASH64","WireType","VARINT","DELIMITED","START_GROUP","END_GROUP","FieldTypeToWireType","INVALID_FIELD_NUMBER","FLOAT32_EPS","FLOAT32_MIN","FLOAT32_MAX","FLOAT64_EPS","FLOAT64_MIN","FLOAT64_MAX","TWO_TO_20","TWO_TO_23","TWO_TO_31","TWO_TO_32","TWO_TO_52","TWO_TO_63","TWO_TO_64","ZERO_HASH","dom","NodeType","ELEMENT","ATTRIBUTE","TEXT","CDATA_SECTION","ENTITY_REFERENCE","ENTITY","PROCESSING_INSTRUCTION","COMMENT","DOCUMENT","DOCUMENT_TYPE","DOCUMENT_FRAGMENT","NOTATION","reportErrorToServer","asserts","ENABLE_ASSERTS","AssertionError","subs_","messagePattern","DEFAULT_ERROR_HANDLER","errorHandler_","doAssertFailure_","setErrorHandler","assert","assertExists","fail","assertNumber","assertString","assertFunction","assertObject","assertArray","assertBoolean","assertElement","assertInstanceof","getType_","assertFinite","assertObjectPrototypeIsIntact","displayName","NATIVE_ARRAY_PROTOTYPES","ASSUME_NATIVE_FUNCTIONS","peek","forEachRight","reduceRight","findRight","findIndexRight","contains","isEmpty","clear","insert","insertAt","insertArrayAt","insertBefore","removeAt","removeLast","removeIf","removeAllIf","extend","removeDuplicates","binarySearch","binarySearch_","defaultCompare","binarySelect","stableSort","sortByKey","sortObjectsByKey","isSorted","equals","defaultCompareEquality","compare3","inverseDefaultCompare","binaryInsert","binaryRemove","toObject","range","repeat","flatten","rotate","moveItem","zip","shuffle","copyByIndex","concatMap","stringToByteArray","byteArrayToString","byteArrayToHex","hexToByteArray","stringToUtf8ByteArray","utf8ByteArrayToString","xorByteArray","internal","startsWith","endsWith","caseInsensitiveStartsWith","caseInsensitiveCompare","caseInsensitiveEndsWith","caseInsensitiveEquals","isEmptyOrWhitespace","newLineToBr","htmlEscape","AMP_RE_","LT_RE_","GT_RE_","QUOT_RE_","SINGLE_QUOTE_RE_","NULL_RE_","ALL_RE_","whitespaceEscape","caseInsensitiveContains","compareVersions","compareElements_","TypedString","Const","stringConstValueWithSecurityContract__googStringSecurityPrivate_","GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_","STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_","TYPE_MARKER_","implementsGoogStringTypedString","getTypedStringValue","unwrap","EMPTY","url","createObjectUrl","getUrlObject_","createObjectURL","revokeObjectUrl","revokeObjectURL","findUrlObject_","URL","webkitURL","browserSupportsObjectUrls","trustedtypes","PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY","i18n","bidi","FORCE_RTL","IS_RTL","Format","LRE","RLE","PDF","LRM","RLM","Dir","LTR","RTL","NEUTRAL","RIGHT","LEFT","I18N_RIGHT","I18N_LEFT","toDir","ltrChars_","rtlChars_","htmlSkipReg_","stripHtmlIfNeeded_","rtlCharReg_","ltrCharReg_","hasAnyRtl","hasRtlChar","hasAnyLtr","ltrRe_","rtlRe_","isRtlChar","isLtrChar","isNeutralChar","ltrDirCheckRe_","rtlDirCheckRe_","startsWithRtl","isRtlText","startsWithLtr","isLtrText","isRequiredLtrRe_","isNeutralText","ltrExitDirCheckRe_","rtlExitDirCheckRe_","endsWithLtr","isLtrExitText","endsWithRtl","isRtlExitText","rtlLocalesRe_","isRtlLanguage","bracketGuardTextRe_","guardBracketInText","enforceRtlInHtml","enforceRtlInText","enforceLtrInHtml","enforceLtrInText","dimensionsRe_","leftRe_","rightRe_","tempRe_","mirrorCSS","doubleQuoteSubstituteRe_","singleQuoteSubstituteRe_","normalizeHebrewQuote","wordSeparatorRe_","hasNumeralsRe_","rtlDetectionThreshold_","estimateDirection","detectRtlDirectionality","setElementDirAndAlign","style","textAlign","setElementDirByTextDirectionality","DirectionalString","TrustedResourceUrl","privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_","trustedURL_","TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","implementsGoogI18nBidiDirectionalString","getDirection","cloneWithParams","URL_PARAM_PARSER_","createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse","stringifyParams_","unwrapTrustedScriptURL","unwrapTrustedURL","BASE_URL_","FORMAT_MARKER_","formatWithParams","fromConstant","fromConstants","SafeUrl","privateDoNotAccessOrElseSafeUrlWrappedValue_","SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","INNOCUOUS_STRING","createSafeUrlSecurityPrivateDoNotAccessOrElse","SAFE_MIME_TYPE_PATTERN_","isSafeMimeType","fromBlob","DATA_URL_PATTERN_","fromDataUrl","fromTelUrl","SIP_URL_PATTERN_","fromSipUrl","fromFacebookMessengerUrl","fromWhatsAppUrl","fromSmsUrl","isSmsUrlBodyValid_","fromSshUrl","sanitizeChromeExtensionUrl","sanitizeExtensionUrl_","sanitizeFirefoxExtensionUrl","sanitizeEdgeExtensionUrl","fromTrustedResourceUrl","SAFE_URL_PATTERN_","SAFE_URL_PATTERN","sanitizeAssertUnchanged","ABOUT_BLANK","SafeStyle","privateDoNotAccessOrElseSafeStyleWrappedValue_","SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","createSafeStyleSecurityPrivateDoNotAccessOrElse","initSecurityPrivateDoNotAccessOrElse_","sanitizePropertyValue_","sanitizePropertyValueString_","FUNCTIONS_RE_","URL_RE_","VALUE_RE_","COMMENT_RE_","hasBalancedQuotes_","hasBalancedSquareBrackets_","VALUE_ALLOWED_CHARS_","sanitizeUrl_","SafeScript","privateDoNotAccessOrElseSafeScriptWrappedValue_","SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","createSafeScriptSecurityPrivateDoNotAccessOrElse","fromConstantAndArgs","stringify_","fromJson","unwrapTrustedScript","getCount","getAnyKey","getAnyValue","containsValue","getValues","getKeys","getValueByKeys","containsKey","findValue","setIfUndefined","setWithReturnValueIfNotSet","unsafeClone","transpose","PROTOTYPE_FIELDS_","createSet","createImmutableView","isFrozen","freeze","isImmutableView","getAllPropertyNames","getOwnPropertyNames","getSuperClass","SafeStyleSheet","privateDoNotAccessOrElseSafeStyleSheetWrappedValue_","SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","createRule","hasBalancedBrackets_","createSafeStyleSheetSecurityPrivateDoNotAccessOrElse","tags","VOID_TAGS_","area","br","col","command","embed","hr","img","keygen","link","meta","param","wbr","isVoidTag","HtmlElement","TagName","tagName_","ABBR","ACRONYM","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","AUDIO","BASE","BASEFONT","BDI","BDO","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","IFRAME","IMG","INPUT","INS","ISINDEX","KBD","KEYGEN","LABEL","LEGEND","LI","LINK","MAIN","MAP","MARK","MATH","MENU","MENUITEM","META","METER","NAV","NOFRAMES","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","OUTPUT","PARAM","PICTURE","PRE","PROGRESS","RP","RT","RTC","RUBY","SAMP","SCRIPT","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","SVG","TABLE","TBODY","TD","TEMPLATE","TEXTAREA","TFOOT","TH","THEAD","TIME","TITLE","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR","labs","getNativeUserAgentString_","getNavigator_","userAgent_","setUserAgent","getUserAgent","matchUserAgent","matchUserAgentIgnoreCase","extractVersionTuples","browser","matchOpera_","matchIE_","matchEdgeHtml_","matchEdgeChromium_","matchOperaChromium_","matchFirefox_","matchSafari_","matchChrome_","matchCoast_","isSilk","matchIosWebview_","matchAndroidBrowser_","isChrome","isFirefox","isOpera","isIE","isEdge","isEdgeChromium","isOperaChromium","isSafari","isCoast","isIosWebview","isAndroidBrowser","getVersion","getIEVersion_","isVersionOrHigher","SafeHtml","privateDoNotAccessOrElseSafeHtmlWrappedValue_","SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_","dir_","unwrapTrustedHTML","createSafeHtmlSecurityPrivateDoNotAccessOrElse","htmlEscapePreservingNewlines","htmlEscapePreservingNewlinesAndSpaces","VALID_NAMES_IN_TAG_","URL_ATTRIBUTES_","action","cite","formaction","href","manifest","poster","NOT_ALLOWED_TAG_NAMES_","verifyTagName","createSafeHtmlTagSecurityPrivateDoNotAccessOrElse","createIframe","srcdoc","combineAttributes","sandbox","createSandboxIframe","canUseSandboxIframe","HTMLIFrameElement","createScriptSrc","createStyle","createMetaRefresh","getAttrNameAndValue_","getStyleValue_","createWithDir","concatWithDir","stringifyAttributes","DOCTYPE_HTML","uncheckedconversions","safeHtmlFromStringKnownToSatisfyTypeContract","safeScriptFromStringKnownToSatisfyTypeContract","safeStyleFromStringKnownToSatisfyTypeContract","safeStyleSheetFromStringKnownToSatisfyTypeContract","safeUrlFromStringKnownToSatisfyTypeContract","trustedResourceUrlFromStringKnownToSatisfyTypeContract","assertIsLocation","getWindow_","Location","Element","debugStringForType_","assertIsElementType_","assertIsHTMLAnchorElement","assertIsHTMLButtonElement","assertIsHTMLLinkElement","assertIsHTMLImageElement","assertIsHTMLAudioElement","assertIsHTMLVideoElement","assertIsHTMLInputElement","assertIsHTMLTextAreaElement","assertIsHTMLCanvasElement","assertIsHTMLEmbedElement","assertIsHTMLFormElement","assertIsHTMLFrameElement","assertIsHTMLIFrameElement","assertIsHTMLObjectElement","assertIsHTMLScriptElement","ownerDocument","defaultView","parentWindow","functions","constant","FALSE","TRUE","NULL","identity","lock","partialRight","withReturnValue","sequence","equalTo","compose","and","or","not","CACHE_RETURN_VALUE","cacheReturnValue","once","debounce","clearTimeout","throttle","rateLimit","safe","InsertAdjacentHtmlPosition","AFTERBEGIN","AFTEREND","BEFOREBEGIN","BEFOREEND","insertAdjacentHtml","insertAdjacentHTML","SET_INNER_HTML_DISALLOWED_TAGS_","isInnerHtmlCleanupRecursive_","firstChild","innerHTML","parentElement","unsafeSetInnerHtmlDoNotUseOrElse","lastChild","setInnerHtml","tagName","setOuterHtml","outerHTML","setFormElementAction","setButtonFormAction","formAction","setInputFormAction","setStyle","cssText","documentWrite","setAnchorHref","setImageSrc","setAudioSrc","setVideoSrc","setEmbedSrc","setFrameSrc","setIframeSrc","setIframeSrcdoc","setLinkHrefAndRel","rel","setObjectData","setScriptSrc","setScriptContent","setLocationHref","assignLocation","replaceLocation","openInWindow","parseFromStringHtml","parseFromString","createImageFromBlob","Image","DETECT_DOUBLE_ESCAPING","FORCE_NON_DOM_HTML_UNESCAPING","Unicode","NBSP","subs","collapseWhitespace","isEmptyString","isEmptyOrWhitespaceSafe","makeSafe","isEmptySafe","isBreakingWhitespace","isAlpha","isNumeric","isAlphaNumeric","isSpace","isUnicodeChar","stripNewlines","canonicalizeNewlines","normalizeWhitespace","normalizeSpaces","collapseBreakingSpaces","trimLeft","numberAwareCompare_","intAwareCompare","floatAwareCompare","numerateCompare","urlEncode","urlDecode","E_RE_","unescapeEntities","unescapeEntitiesUsingDom_","unescapePureXmlEntities_","unescapeEntitiesWithDocument","HTML_ENTITY_PATTERN_","nodeValue","preserveSpaces","stripQuotes","truncate","truncateMiddle","specialEscapeChars_","jsEscapeCache_","escapeChar","escapeString","countOf","removeAll","regExpEscape","replaceAll","padNumber","buildString","getRandomString","hashCode","uniqueStringCounter_","createUniqueString","toNumber","isLowerCamelCase","isUpperCamelCase","toCamelCase","toSelectorCase","toTitleCase","capitalize","splitLimit","lastComponent","editDistance","isAndroid","isIpod","isIphone","isIpad","isIos","isMacintosh","isLinux","isWindows","isChromeOS","isChromecast","isKaiOS","isGo2Phone","reflect","objectProperty","sinkValue","canAccessProperty","cache","engine","isPresto","isTrident","isWebKit","isGecko","getEngineTuple_","getVersionForKey_","ASSUME_IE","ASSUME_EDGE","ASSUME_GECKO","ASSUME_WEBKIT","ASSUME_MOBILE_WEBKIT","ASSUME_OPERA","ASSUME_ANY_VERSION","BROWSER_KNOWN_","getUserAgentString","getNavigatorTyped","getNavigator","OPERA","IE","EDGE","EDGE_OR_IE","GECKO","WEBKIT","isMobile_","MOBILE","SAFARI","determinePlatform_","PLATFORM","ASSUME_MAC","ASSUME_WINDOWS","ASSUME_LINUX","ASSUME_X11","ASSUME_ANDROID","ASSUME_IPHONE","ASSUME_IPAD","ASSUME_IPOD","ASSUME_KAIOS","ASSUME_GO2PHONE","PLATFORM_KNOWN_","MAC","WINDOWS","isLegacyLinux_","LINUX","isX11_","appVersion","X11","ANDROID","IPHONE","IPAD","IPOD","IOS","KAIOS","GO2PHONE","determineVersion_","getVersionRegexResult_","getDocumentMode_","documentMode","VERSION","isVersionOrHigherCache_","isVersion","isDocumentModeOrHigher","DOCUMENT_MODE","isDocumentMode","product","ASSUME_FIREFOX","ASSUME_CHROME","ASSUME_SAFARI","PRODUCT_KNOWN_","FIREFOX","isIphoneOrIpod_","CHROME","isSafariDesktop_","DEFAULT_ALPHABET_COMMON_","ENCODED_VALS","ENCODED_VALS_WEBSAFE","Alphabet","DEFAULT","NO_PADDING","WEBSAFE","WEBSAFE_DOT_PADDING","WEBSAFE_NO_PADDING","paddingChars_","isPadding_","byteToCharMaps_","charToByteMap_","ASSUME_NATIVE_SUPPORT_","HAS_NATIVE_ENCODE_","HAS_NATIVE_DECODE_","encodeByteArray","init_","encodeString","decodeString","decodeStringInternal_","decodeStringToByteArray","decodeStringToUint8Array","subarray","utils","split64Low","split64High","splitUint64","splitInt64","splitZigzag64","splitFloat32","LN2","splitFloat64","splitHash64","joinUint64","joinInt64","toZigzag64","joinZigzag64","fromZigzag64","joinFloat32","joinFloat64","joinHash64","DIGITS","ZERO_CHAR_CODE_","A_CHAR_CODE_","joinUnsignedDecimalString","joinSignedDecimalString","hash64ToDecimalString","hash64ArrayToDecimalStrings","decimalStringToHash64","splitDecimalString","toHexDigit_","fromHexCharCode_","hash64ToHexString","hexStringToHash64","hash64ToNumber","numberToHash64","countVarints","countVarintFields","countFixedFields_","countFixed32Fields","countFixed64Fields","countDelimitedFields","debugBytesToTextFormat","byteSourceToUint8Array","debugScalarToTextFormat","BinaryDecoder","bytes_","cursor_","end_","start_","error_","setBlock","instanceCache_","free","getBuffer","getEnd","setEnd","getCursor","setCursor","advance","atEnd","pastEnd","readSplitVarint64","readSplitZigzagVarint64","readSplitFixed64","skipVarint","unskipVarint","readUnsignedVarint32","readSignedVarint32","readUnsignedVarint32String","readSignedVarint32String","readZigzagVarint32","readUnsignedVarint64","readUnsignedVarint64String","readSignedVarint64","readSignedVarint64String","readZigzagVarint64","readZigzagVarintHash64","readZigzagVarint64String","readUint8","readUint16","readUint32","readUint64","readUint64String","readInt8","readInt16","readInt32","readInt64","readInt64String","readFloat","readDouble","readBool","readEnum","readString","readStringWithLength","readBytes","readVarintHash64","readFixedHash64","BinaryReader","decoder_","fieldCursor_","nextField_","nextWireType_","readCallbacks_","getFieldCursor","getFieldNumber","getWireType","isEndGroup","nextField","unskipHeader","skipMatchingFields","skipField","skipVarintField","skipDelimitedField","skipFixed32Field","skipFixed64Field","skipGroup","registerReadCallback","runReadCallback","readAny","readFixed64","readFixed32","readSfixed32","readSfixed64","readSint32","readSint64","readMessage","readGroup","getFieldDecoder","readInt32String","readUint32String","readSint64String","readFixed64String","readSfixed32String","readSfixed64String","readSintHash64","readPackedField_","readPackedInt32","readPackedInt32String","readPackedInt64","readPackedInt64String","readPackedUint32","readPackedUint32String","readPackedUint64","readPackedUint64String","readPackedSint32","readPackedSint64","readPackedSint64String","readPackedFixed32","readPackedFixed64","readPackedFixed64String","readPackedSfixed32","readPackedSfixed64","readPackedSfixed64String","readPackedFloat","readPackedDouble","readPackedBool","readPackedEnum","readPackedVarintHash64","readPackedFixedHash64","arr_","valueCtor_","map_","arrClean","loadFromArray_","Entry_","valueWrapper","stringKeys_","wrapEntry_","fromObject","ArrayIteratorIterable_","idx_","getLength","getEntryList","serializeBinary","beginSubMessage","endSubMessage","deserializeBinary","ExtensionFieldInfo","fieldIndex","fieldName","ctor","toObjectFn","isRepeated","ExtensionFieldBinaryInfo","fieldInfo","binaryReaderFn","binaryWriterFn","binaryMessageSerializeFn","binaryMessageDeserializeFn","isPacked","isMessageType","Message","GENERATE_TO_OBJECT","GENERATE_FROM_OBJECT","GENERATE_TO_STRING","ASSUME_LOCAL_ARRAYS","SERIALIZE_EMPTY_TRAILING_FIELDS","SUPPORTS_UINT8ARRAY_","getJsPbMessageId","messageId_","getIndex_","arrayIndexOffset_","hiddenES6Property_","getFieldNumber_","initialize","wrappers_","initPivotAndExtensionObject_","convertedPrimitiveFields_","repeatedFields","pivot_","EMPTY_LIST_SENTINEL_","maybeInitEmptyExtensionObject_","extensionObject_","computeOneofCase","isArray_","isExtensionObject_","MAX_VALUE","toObjectList","toObjectExtension","serializeBinaryExtensions","readBinaryExtension","getField","getRepeatedField","getOptionalFloatingPointField","getBooleanField","getRepeatedFloatingPointField","getRepeatedBooleanField","bytesAsB64","bytesAsU8","bytesListAsB64","assertConsistentTypes_","bytesListAsU8","getFieldWithDefault","getBooleanFieldWithDefault","getFloatingPointFieldWithDefault","getFieldProto3","getMapField","setField","setProto3IntField","setFieldIgnoringDefault_","setProto3FloatField","setProto3BooleanField","setProto3StringField","setProto3BytesField","setProto3EnumField","setProto3StringIntField","addToRepeatedField","setOneofField","getWrapperField","getRepeatedWrapperField","wrapRepeatedField_","setWrapperField","setOneofWrapperField","setRepeatedWrapperField","addToRepeatedWrapperField","toMap","syncMapFields_","getExtension","setExtension","compareFields","compareExtensions","cloneMessage","clone_","copyInto","registerMessageType","messageId","messageSetExtensions","messageSetExtensionsBinary","arith","UInt64","lo","hi","cmp","rightShift","leftShift","msb","lsb","sub","mul32x32","mul","div","fromString","Int64","BinaryEncoder","buffer_","writeSplitVarint64","writeSplitFixed64","writeUint32","writeUnsignedVarint32","writeSignedVarint32","writeUnsignedVarint64","writeSignedVarint64","writeZigzagVarint32","writeZigzagVarint64","writeZigzagVarint64String","writeZigzagVarintHash64","writeUint8","writeUint16","writeUint64","writeInt8","writeInt16","writeInt32","writeInt64","writeInt64String","writeFloat","writeDouble","writeBool","writeEnum","writeBytes","writeVarintHash64","writeFixedHash64","writeString","BinaryWriter","blocks_","totalLength_","encoder_","bookmarks_","appendUint8Array_","beginDelimited_","writeFieldHeader_","endDelimited_","writeSerializedMessage","maybeWriteSerializedMessage","getResultBuffer","getResultBase64String","writeAny","writeFixed64","writeFixed32","writeSfixed32","writeSfixed64","writeSint32","writeSint64","writeUnsignedVarint32_","writeSignedVarint32_","writeUnsignedVarint64_","writeSignedVarint64_","writeZigzagVarint32_","writeZigzagVarint64_","writeZigzagVarint64String_","writeZigzagVarintHash64_","writeInt32String","writeUint32String","writeUint64String","writeSintHash64","writeSint64String","writeFixed64String","writeSfixed64String","writeMessage","writeMessageSet","writeGroup","writeSplitZigzagVarint64","writeRepeatedInt32","writeRepeatedInt32String","writeRepeatedInt64","writeRepeatedSplitFixed64","writeRepeatedSplitVarint64","writeRepeatedSplitZigzagVarint64","writeRepeatedInt64String","writeRepeatedUint32","writeRepeatedUint32String","writeRepeatedUint64","writeRepeatedUint64String","writeRepeatedSint32","writeRepeatedSint64","writeRepeatedSint64String","writeRepeatedSintHash64","writeRepeatedFixed32","writeRepeatedFixed64","writeRepeatedFixed64String","writeRepeatedSfixed32","writeRepeatedSfixed64","writeRepeatedSfixed64String","writeRepeatedFloat","writeRepeatedDouble","writeRepeatedBool","writeRepeatedEnum","writeRepeatedString","writeRepeatedBytes","writeRepeatedMessage","writeRepeatedGroup","writeRepeatedFixedHash64","writeRepeatedVarintHash64","writePackedInt32","writePackedInt32String","writePackedInt64","writePackedSplitFixed64","writePackedSplitVarint64","writePackedSplitZigzagVarint64","writePackedInt64String","writePackedUint32","writePackedUint32String","writePackedUint64","writePackedUint64String","writePackedSint32","writePackedSint64","writePackedSint64String","writePackedSintHash64","writePackedFixed32","writePackedFixed64","writePackedFixed64String","writePackedSfixed32","writePackedSfixed64","writePackedSfixed64String","writePackedFloat","writePackedDouble","writePackedBool","writePackedEnum","writePackedFixedHash64","writePackedVarintHash64","Export","origSymbol","hasSymbolSham","hasNativeSymbols","sym","symObj","symVal","syms","descriptor","hasToStringTag","toStringTag","$toString","isStandardArguments","isLegacyArguments","supportsStandardArguments","bigIntValueOf","tryBigInt","tryBigIntObject","isBigInt","$boolToStr","tryBooleanObject","booleanBrandCheck","boolClass","isSlowBuffer","_isBuffer","readFloatLE","fnToStr","reflectApply","isCallableMarker","constructorRegex","isES6ClassFn","isES6ClassFunction","fnStr","tryFunctionObject","tryFunctionToStr","fnClass","genClass","documentDotAll","strClass","tryDateObject","tryDateGetDayCall","dateClass","isDateObject","exported","numToStr","tryNumberObject","numClass","isNumberObject","$exec","isRegexMarker","badStringifier","throwRegexMarker","gOPD","regexClass","hasLastIndexDataProperty","strValue","tryStringObject","symToStr","symStringRegex","isSymbolObject","isRealSymbolObject","typedArrays","toStrTags","proto","superProto","tryTypedArrays","tryAllTypedArrays","anyTrue","isTypedArray","tag","$WeakMap","$WeakSet","isWeakMap","isWeakSet","getCountryCode","localeString","components","countryCode","getLocales","locales","AD","AE","AF","AG","AI","AL","AM","AN","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HT","HU","ID","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SX","SY","SZ","TC","TF","TG","TJ","TK","TL","TM","TN","TO","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","md5","FF","_ff","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","_blocksize","_digestsize","digestbytes","asBytes","asString","simpleIsEqual","resultFn","lastThis","lastArgs","lastResult","calledOnce","isNewArgEqualToLast","newArg","_len","newArgs","_key","_global","MurmurHashV2","seed","MurmurHashV3","h1","h1b","c1","c1b","c2","c2b","k1","murmur","v2","v3","propIsEnumerable","shouldUseNative","test1","test2","order2","test3","letter","symbols","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","gOPS","symToString","hasShammedSymbols","isEnumerable","inspectCustom","custom","inspectSymbol","inspect_","depth","seen","quoteStyle","maxStringLength","customInspect","indent","inspectString","maxDepth","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","nodeName","attrs","attributes","wrapQuotes","childNodes","xs","singleLineValues","indentedJoin","isError","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","ys","isPlainObject","protoTag","stringTag","constructorTag","defaultStyle","quoteChar","HTMLElement","remaining","trailer","lowbyte","joinedEntries","baseIndent","lineJoiner","isArr","symMap","numberIsNaN","shimObjectIs","testObjectIs","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","theKeys","skipProto","skipConstructor","origKeys","originalKeys","shimObjectKeys","keysWorksWithArguments","canBeObject","$push","$propIsEnumerable","originalGetSymbols","source1","objTarget","getSymbols","lacksProperEnumerationOrder","letters","assignHasPendingExceptions","thrower","shimAssign","ignoreCase","multiline","dotAll","unicode","sticky","flagsBound","TypeErr","shimFlags","$weakMapGet","$weakMapSet","$weakMapHas","$mapSet","listGetNode","listGet","objects","listSet","listHas","$wm","$m","$o","isExtendedLengthPath","hasNonAscii","v1","v4","uuid","byteToHex","bytesToUuid","bth","crypto","nodeRNG","rng","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","rnds","ii","foundName","injected","runImport","budgetName","loadBudget","budgetId","id","batchBudgetUpdates","runQuery","query","getBudgetMonths","getBudgetMonth","setBudgetAmount","categoryId","setBudgetCarryover","flag","addTransactions","accountId","transactions","importTransactions","getTransactions","filterTransactions","updateTransaction","fields","deleteTransaction","getAccounts","createAccount","account","initialBalance","updateAccount","closeAccount","transferAccountId","transferCategoryId","reopenAccount","deleteAccount","getCategoryGroups","grouped","createCategoryGroup","group","updateCategoryGroup","deleteCategoryGroup","getCategories","createCategory","category","updateCategory","deleteCategory","getPayees","createPayee","payee","updatePayee","deletePayee","getPayeeRules","payeeId","createPayeeRule","payee_id","updatePayeeRule","deletePayeeRule","Query","filterExpressions","selectExpressions","groupExpressions","orderExpressions","calculation","rawMode","withDead","expr","unfilter","exprs","exprSet","select","calculate","groupBy","orderBy","tableOptions","table","amountToInteger","integerToAmount","normalizePathSep","AdmZip","mapAccountType","keyName","_parse","monthFromDate","getCurrentMonth","importAccounts","entityIdMap","accounts","isTombstone","accountType","accountName","offbudget","onBudget","closed","entityId","importCategories","masterCategories","masterCategory","subCategories","cat","is_income","masterCategoryId","importPayees","payees","autoFillCategoryId","transfer_acct","targetAccountId","categories","incomeCategoryId","getCategory","isOffBudget","acctId","acct","transaction","sortOrder","transactionsGrouped","toImport","transferId","transferTransactionId","newTransaction","notes","memo","transfer_id","subtransactions","subTransactions","fillInBudgets","categoryBudgets","budgets","budgeted","importBudgets","monthlyBudgets","earliestMonth","carryoverFlags","budget","filled","monthlySubCategoryBudgets","catBudget","catId","overspendingHandling","estimateRecentness","findLatestDevice","zipped","devices","contents","hasFullKnowledge","deviceGUID","shortName","shortDeviceId","recentness","knowledge","doImport","getBudgetName","unixFilepath","getFile","paths","importBuffer","dirMatch","metaStr","budgetPath","relativeDataFolderName","deviceFiles","yfullPath","amountFromYnab","deleted","on_budget","incomeCatId","ynabIncomeCategories","checkSpecialCat","category_group_id","category_groups","groupId","cats","newCategory","startingBalanceCatId","startingPayeeYNAB","subtransactionsGrouped","subtrans","category_id","account_id","cleared","imported_id","import_id","transfer_transaction_id","transfer_account_id","internalCatIdYnab","creditcardCatIdYnab","importYNAB5","runMigration","db","getValue","cachedValue","execQuery","monthBudget","dbmonth","sheetName","carryover","buffers","parseNote","note","parsed","FileSystem","_filename","FLG_LNG","_permissions","PATH_SEPARATOR","recoursive","writeInt32LE","inputType","nameA","nameB","Yallist","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","LRUCache","lc","stale","maxAge","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","hit","itemCount","rforEach","thisp","walker","tail","forEachStep","dump","isStale","dumpLru","Entry","expiresAt","prune","doUse","unshiftNode","removeNode","handlers","evt","Node","pushNode","forEachReverse","getReverse","mapReverse","initial","acc","reduceReverse","toArrayReverse","sliceReverse","pickRandom","integer","findMin","getStartingBalanceCat","extractCommonThings","incomePayee","expensePayees","expenseGroup","incomeGroup","bill","expenseCategories","billCategories","billPayees","fillPrimaryChecking","numTransactions","monthUtils","pick","earliestDate","starting_balance_flag","fillChecking","added","fastMode","fillInvestment","fillSavings","fillMortgage","fillOther","createBudget","primaryAccount","earliestPrimaryDate","setBudget","budgetActions","setBudgetIfSpent","spent","sheet","runMutator","batchMessages","prevSaved","toBudget","available","createTestBudget","setSyncingMode","offBudget","categoryGroups","isIncome","allGroups","runHandler","aqlQuery","$sum","primaryBalance","$gt","lastDeposit","prefs","isCached","captureException","exc","SentryClient","captureBreadcrumb","breadcrumb","addBreadcrumb","lootFs","getStorePath","getDataDir","store","persisted","persist","_saveStore","writeFile","getItem","setItem","removeItem","multiGet","multiSet","keyValues","multiRemove","fetchBinary","fileStream","createWriteStream","documentDir","rootPath","__dirname","__filename","env","ACTUAL_DATA_DIR","_setDocumentDir","getDocumentDir","getBudgetDir","bundledDatabasePath","migrationsPath","demoBudgetPath","listDir","readdir","access","constants","F_OK","mkdir","copyFile","frompath","topath","readStream","createReadStream","writeStream","removeFile","unlink","removeDir","dirpath","rmdir","removeDirRecursively","fullpath","getModifiedTime","Database","verifyParamTypes","sql","params","fetchAll","stmt","changes","insertId","lastInsertRowid","transactionDepth","asyncTransaction","openDatabase","pathOrBuffer","closeDatabase","exportDatabase","v4Sync","exportToCSV","accountNamesById","reduced","categoryNamesById","subCategory","payeeNamesById","transactionsForExport","Account","Payee","Notes","Category","Amount","csvStringify","exportQueryToCSV","Id","ParentId","IsParent","splits","parentsPayees","trans","noParents","handoffPublicToken","institution","publicToken","asyncStorage","userId","institution_id","post","getConfig","PLAID_SERVER","item_id","public_token","bank_id","addAccounts","bankId","accountIds","offbudgetIds","userKey","bankSync","official_name","fromPlaidAccountType","balance_current","balances","current","mask","bank","parseFile","ext","parseQIF","parseCSV","parseOFX","csv2json","qif2json","looselyParseAmount","payee_name","imported_payee","getOFXTransactions","initModule","fi_id","dayFromDate","description","row","getStartingBalancePayee","qif","line","division","address","lArray","subcategory","clearedStatus","sArray","dateFormat","safeNumber","safeParseInt","RuleError","parseRecurDate","recurConfigToRSchedule","RSchedule","parseDateString","dateFns","parseBetweenAmount","between","num1","num2","CONDITION_TYPES","ops","nullable","op","Condition","fieldTypes","typeName","rawValue","unparsedValue","fieldValue","outflow","inflow","extractValue","fieldDate","fullDate","high","low","yearFromDate","threshold","getApproxNumberThreshold","sortNumbers","ACTION_OPS","Action","stage","conditions","actions","evalConditions","condition","execActions","getId","RuleIndexer","getIndex","getIndexForValue","getKey","getIndexes","cond","indexes","getApplicableRules","indexedRules","fastSetMerge","OP_SCORES","oneOf","isapprox","isbetween","gt","gte","lt","lte","computeScore","initialScore","score","_rankRules","scores","r1","r2","score1","score2","id1","id2","rankRules","pre","normal","migrateIds","mappings","ci","ai","iterateIds","counts","ruleiter","vi","levenshtein","BankSyncError","makeSplitTransaction","recalculateSplit","is_parent","idx","makeChildTransaction","sort_order","parent","getAccountBalance","updateAccountBalance","balance","fromPlaid","transaction_id","downloadTransactions","since","allTransactions","accountBalance","pageSize","numDownloaded","start_date","end_date","error_code","error_type","total_transactions","resolvePayee","payeeName","payeesToCreate","newPayee","normalizeTransactions","rawPayeeName","normalized","title","createNewPayees","addsAndUpdates","usedPayeeIds","reconcileTransactions","hasMatched","updated","transactionsStep1","fuzzyDataset","transactionsStep2","transactionsStep3","existing","updates","hasFieldsChanged","finalTransaction","batchUpdateTransactions","runTransfers","newTransactions","syncAccount","latestTransaction","startingTransaction","acctRow","startingDay","currentBalance","previousBalance","oldestDate","initialId","lowerCase","specials","character","convertToRegExp","parseMatch","lead","forced","lower","parsedMatch","fullLower","customSpecials","special","replaceRegExp","conjunctions","articles","prepositions","intended","allRules","unlistenSync","firstcharIndexer","payeeIndexer","resetState","invert","fromEntries","internalFields","schemaConfig","views","publicFields","fromInternalField","toInternalField","ruleModel","requiredFields","toJS","parseArray","fromJS","makeRule","FIELD_TYPES","getMappings","loadRules","addSyncListener","onApplySync","getRules","insertRule","updateRule","deleteRule","oldValues","newValues","newValue","oldRule","tombstone","tables","finalTrans","allChanges","conditionsToAQL","recurDateBounds","filters","$and","$lt","$transform","$eq","$or","$gte","$lte","applyActions","transactionIds","parsedActions","getRulesForPayee","getIsSetterRules","condField","actionField","condValue","actionValue","getOneOfSetterRules","updatePayeeRenameRule","fromNames","renameRule","getProbableCategory","winner","updateCategoryRules","payeeIds","transIds","register","toDateRepr","partitionByField","categoriesToSet","latestTrans","ruleSetters","newRule","migrateOldRules","allPayees","payeesById","rulesByPayeeId","payeeRules","r","payeeRule","catRules","ids","prevMode","connection","idsWithChildren","whereIds","whereIn","rows","getTransactionsByIds","incrFetch","where","learnCategories","detectOrphanPayees","addedIds","updatedIds","deletedIds","oldPayees","descUpdatedIds","allAdded","allUpdated","allDeleted","resultAdded","resultUpdated","transfer","newPayeeIds","allOrphaned","orphanedIds","updatedPayeeIds","getPayee","getTransferredAccount","clearCategory","transferAcct","fromOffBudget","toOffBudget","addTransfer","transferredAccount","fromPayee","parent_id","categoryCleared","removeTransfer","transferTrans","is_child","updateTransfer","onInsert","onDelete","onUpdate","transactionModel","models","toExternal","fromExternal","imported_description","financial_id","transferred_id","accountModel","categoryModel","cat_group","categoryGroupModel","payeeModel","payeeRuleModel","resolveName","IMPORT_MODE","APIError","withMutation","latestTimestamp","getClock","getNumClients","dataset","undoDisabled","validateMonth","validateExpenseCategory","batchPromise","currentId","avoidUpload","markCacheDirty","cloudStorage","getCellValue","incomeAvailable","lastMonthOverspent","forNextMonth","totalBudgeted","fromLastMonth","totalIncome","totalSpent","totalBalance","received","startMonth","ungroupTransactions","serverHandlers","App","services","events","mitt","unlistenServices","service","combine","apps","app","listeners","listener","startServices","stopServices","unlisten","createApp","_uid","resetUid","uid","tableName","CompileError","nativeDateToInt","pad","dateToInt","addTombstone","schema","tableId","whereStr","hasTombstone","popPath","isKeyword","quoteAlias","typed","literal","getFieldDescription","fieldDesc","makePath","initialTable","joinTable","parentParts","parentPath","parentDesc","joinField","resolvePath","fullName","implicitTableName","pathInfo","transformField","implicitTableId","validateRefs","refPath","refPathInfo","noMapping","fieldStr","parseMonth","badDateFormat","inferParam","existingType","paramType","casts","float","castInput","expr2","castedExpr","valArray","types","validateArgLength","saveStack","compileStack","prettyValue","expanded","getCompileError","stackStr","fieldRef","opData","rootMethod","methodArgs","compileLiteral","compileExpr","implicitField","paramName","namedParameters","compileFunction","assertType","acceptedTypes","assertArgLength","argExprs","arg1","order","orders","compileOrderBy","arg2","arg3","conds","compileConditions","compileOp","opExpr","rhs","lhs","left","right","condsObj","compiled","compileAnd","compileOr","compileWhere","compileJoins","tableRef","internalTableFilters","joins","dependencies","expandStar","compileSelect","isAggregate","outputTypes","compileGroupBy","$dir","AGGREGATE_FUNCTIONS","isAggregateFunction","isAggregateQuery","queryState","compileQuery","tableViews","tableFilters","customizeQuery","isJoin","view","dependences","sqlPieces","defaultConstructQuery","generateSQLWithState","generateSQL","applyTypes","convertOutputType","runCompiledQuery","pieces","executors","paramArray","convertInputType","isRequired","required","fromDateRepr","conform","skipNull","tableSchema","convertForInsert","rawObj","default","convertForUpdate","convertFromSelect","toGroup","parents","mapper","childs","execTransactions","splitType","execTransactionsBasic","execTransactionsGrouped","_isUnhappy","isHappyPathQuery","whereDead","allSql","matched","rowSql","finalSql","allRows","pid","_parent_id","_unmatched","next_date","completed","posts_transaction","_payee","_account","_amount","_amountOp","_conditions","_actions","$condition","$nocase","v_payees","v_categories","v_schedules","v_transactions_internal","v_transactions_internal_alive","v_transactions","_runCompiledQuery","schemaExecutors","_runQuery","selectFields","as","needsAs","makeViews","viewStrs","fieldMappings","viewName","publicMaker","overrides","internalMaker","LATEST_BACKUP_FILENAME","serviceInterval","getBackups","budgetDir","backupDir","backups","b1","b2","getLatestBackup","isLatest","getAvailableBackups","latestBackup","backup","updateBackups","byDay","removed","dayBackups","isToday","currentBackups","makeBackup","backupId","backupPath","sqlite","toRemove","loadBackup","stopBackupService","startBackupService","lastSyncedTimestamp","lastUploaded","clearInterval","setInterval","getSheetValue","cell","calcBufferedAmount","buffered","getBudgetTable","budgetType","isReflectBudget","isZeroBudget","dbMonth","getBudgetData","getAllMonths","createdMonths","latest","getBudget","setBuffer","setCarryover","copyPreviousMonth","prevMonth","budgetData","prevBudget","setZero","set3MonthAvg","prevMonth1","prevMonth2","prevMonth3","spent1","spent2","spent3","avg","setAllFuture","holdForNextMonth","bufferedAmount","holdForFutureMonths","resetHold","coverOverspending","toBudgeted","leftover","leftoverFrom","amountCovered","fromBudgeted","transferAvailable","transferCategory","setCategoryCarryover","mutator","undoable","mergeUpdates","merged","getBudgetType","getBudgetRange","prevSheetName","createDynamic","initialValue","rollover","report","sumAmounts","handleAccountChange","oldValue","recompute","handleTransactionChange","changedFields","handleCategoryMappingChange","handleCategoryChange","addDeps","addDependencies","removeDeps","removeDependencies","handleCategoryGroupChange","handleBudgetMonthChange","handleBudgetChange","triggerBudgetChanges","old","getChangedValues","doTransfer","categoryIds","totalValue","transferValue","setMeta","createAllBudgets","earliestTransaction","newMonths","setType","nodes","getNodes","cellName","deleteCell","startCacheBarrier","bounds","endCacheBarrier","createStatic","sumAmount","prevCarryover","prevLeftover","refresh","createSummary","income","getBlankSheet","blankMonth","createBlankCategory","createBlankMonth","prevLeftoverPos","flatten2","unflatten2","amounts","lastOverspent","blankSheet","clearSheet","UPLOAD_FREQUENCY_IN_DAYS","checkHTTPStatus","HTTPError","fetchJSON","checkKey","userToken","cloudFileId","encryptKeyId","SYNC_SERVER","fileId","reason","encryption","hasKey","resetSyncState","newKeyState","IS_BETA","PostError","keyId","keySalt","testContent","exportBuffer","rawDbContent","memDb","dbContent","resetClock","metaContent","upload","FileUploadError","zipContent","uploadContent","uploadMeta","encrypted","isMissingKey","possiblyUpload","listRemoteFiles","download","arrayBuffer","ab","FileDownloadError","fileData","encryptMeta","dbEntry","metaEntry","dbFile","metaFile","SIGNUP_SERVER","setConfig","dbPath","getDatabasePath","setDatabase","reopenDatabase","db_","resetQueryCache","getDatabase","loadClock","clock","deserializeClock","setClock","Timestamp","makeClientId","makeClock","serializeClock","_queryCache","LRU","cached","prepared","firstSync","sendMessages","insertWithUUID","delete_","selectWithSchema","selectFirstWithSchema","insertWithSchema","updateWithSchema","getCategoriesGrouped","insertCategoryGroup","lastGroup","SORT_INCREMENT","moveCategoryGroup","targetId","shoveSortOrders","insertCategory","id_","lastCat","moveCategory","existingTransfers","mapping","insertPayee","deleteTransferPayee","mergePayees","groupById","getOrphanedPayees","getPayeeByName","insertPayeeRule","insertAccount","moveAccount","getTransaction","_addFragmentForAccount","addWhere","showClosed","showOffbudget","fragment","getTransactionsByDate","insertTransaction","allMappings","loadMappings","getMapping","midpoint","below","above","terms","makeQuery","pageCount","fetchedIds","ids2","ENCRYPTION_ALGORITHM","sha256String","createHash","digest","masterKey","masterKeyBuffer","iv","cipher","createCipheriv","final","authTag","getAuthTag","algorithm","decipher","createDecipheriv","setAuthTag","decrypted","createKey","createKeyBuffer","importKey","numBytes","pbkdf2Sync","Key","createFromPassword","password","internals","createFromBase64","loadKey","keyInstance","unloadKey","unloadAllKeys","statusCode","responseBody","SyncError","TransactionError","isCodeError","YNAB4","YNAB5","unresolveName","SyncPb","DEMO_BUDGET_ID","TEST_BUDGET_ID","onSheetChange","names","_getNode","joinURL","pathname","undo","redo","withUndo","term","latestDate","notPaged","groupCategories","payeeCounts","mergeIds","orphaned","validateRule","runValidation","conditionErrors","ruleFieldTypes","actionErrors","someDeletionsFailed","nodeSheet","getNode","createQuery","accts","upgradingId","balance_available","balance_limit","stopPolling","matchedTransactions","updatedAccounts","linkToken","link_token","maxMonths","tracking","trackUsage","autoUpdate","floatingSidebar","seenTutorial","encryptKey","stringToInteger","getDefaultDocumentDir","prefsToSet","resetSync","repairSync","makeTestMessage","seenSubscribe","offline","fullSync","prefsPath","findBudgets","recomputeAll","showUpdate","initialFullSync","currentPrefs","trackSizes","getFileSize","dbSize","cacheSize","testMode","testBudgetId","clearFullSyncTimeout","uniqueFileName","idFromFileName","budgetVersion","updateVersion","logger","setNode","Platform","isWeb","isMobile","__TESTING__","syncMigrations","clearUndo","unseen","installAPI","injectAPI","schedulesApp","budgetApp","notesApp","toolsApp","ACTUAL_DOCUMENT_DIR","setupDocumentsDir","ensureExists","initApp","isDev","socketName","keysStr","lastBudget","$send","$query","$q","$db","$setSyncingMode","ACTUAL_APP_VERSION","dataDir","serverURL","ACTUAL_SERVER_URL","cwd","sendMessage","syncAndReceiveMessages","merkle","SyncProtoBuf","addEventListener","shutdown","trie","keyToTimestamp","fullkey","hash","millis","insertKey","build","timestamps","trie1","trie2","node1","node2","keyset","diffkey","next1","next2","MIGRATIONS_DIR","javascriptMigrations","m1632571489012","withMigrationsDir","oldDir","getMigrationsDir","getMigrationId","getUpMigration","getAppliedMigrations","getMigrationList","migrationsDir","m1","m2","getPending","appliedIds","applyJavaScript","dbInterface","applySql","applyMigration","checkDatabaseValidity","migrate","migration","validateAccountType","categoryGroup","validateType","isParent","isChild","runningMethods","currentContext","mutatingMethods","globalMutationsEnabled","_latestHandlerNames","isMutating","flushRunningMethods","wait","undoTag","promise","enableGlobalMutations","disableGlobalMutations","sequential","initialContext","finally","withMutatorContext","prevContext","getMutatorContext","counters","unrecord","isDesktop","throwIfNot200","contentType","postBinary","loadPrefs","dummyTestPrefs","savePrefs","avoidSync","messages","unloadPrefs","getPrefs","getDefaultPrefs","readPrefs","arr1","arr2","updateConditions","newConditions","scheduleConds","extractScheduleConds","newScheduleConds","replacements","getNextDate","dateCond","getRuleForSchedule","ruleId","fixRuleForSchedule","newId","setNextDate","newNextDate","nd","base_next_date","base_next_date_ts","local_next_date","local_next_date_ts","createSchedule","scheduleId","nextDateRepr","nextDateId","schedule_id","updateSchedule","resetNextDate","oldConditions","stripType","deleteSchedule","skipNextDate","getPossibleTransactions","discoverSchedules","findSchedules","getUpcomingDates","onRuleUpdate","payeeIdx","accountIdx","amountIdx","dateIdx","trackJSONPaths","found","postTransactionForSchedule","getScheduledAmount","advanceSchedulesService","syncSuccess","getHasTransactionsQuery","hasTransData","hasTrans","failedToPost","didPost","getStatus","syncDisabled","subtype","completeEvent","lastScheduleRun","takeDates","getRank","day1","day2","dayDiff","matchSchedules","allOccurs","partialMatchRank","baseOccur","occurs","occur","rank","exactAmount","exact","exactDate","schedulesForPattern","baseStart","numDays","baseConfig","weekly","every2weeks","monthly","monthlyLastDay","s1","s2","monthly1stor3rd","dayValue","monthly2ndor4th","findStartDate","currentConfig","prevConfig","allSchedules","finalized","globalSheet","globalOnChange","globalCacheDb","updateSpreadsheetCache","rawDb","setCacheStatus","mainDb","cacheDb","clean","isCacheDirty","loadSpreadsheet","cacheEnabled","cachePath","Spreadsheet","cachedRows","loadUserBudgets","unloadSpreadsheet","unload","reloadSpreadsheet","startTransaction","budgetMonths","budgetMonth","sheetForMonth","endTransaction","getCell","waitOnSpreadsheet","onFinish","firstValue","Graph","serialized","graph","addNode","adjacent","adjacentIncoming","addEdge","removeEdge","removeIncomingEdges","topologicalSort","generateDOT","getEdges","edges","incomingEdges","incoming","iter","cur","topologicalSortUntil","visited","sorted","sourceNodes","edgeStrings","adj","edge","saveCache","dirtyCells","computeQueue","_meta","hasCell","cells","queueComputation","cellNames","running","runComputations","_dependencies","dep","markCacheSafe","cacheBarrier","pendingChange","getExpr","getCellExpr","getCellValueLoose","bootup","onReady","_markDirty","dynamic","resolved","voidCell","voidValue","newDeps","triggerDatabaseChanges","resolveNamesAsObjects","sheets","resolveNamesAsArrays","coerceBuffer","encode","requestPb","SyncRequest","envelopePb","MessageEnvelope","setTimestamp","messagePb","setDataset","setRow","setColumn","setValue","binaryMsg","EncryptedData","setIv","setAuthtag","setContent","setIsencrypted","addMessages","setGroupid","setFileid","setKeyid","setSince","decode","responsePb","SyncResponse","getMerkle","getMessagesList","getTimestamp","getIsencrypted","binary","getContent","getIv","getAuthtag","getDataset","getRow","getColumn","FULL_SYNC_DELAY","SYNCING_MODE","checkSyncingMode","partIds","serializeValue","deserializeValue","_syncListeners","compareMessages","newMessages","timestampStr","applyMessagesForImport","applyMessages","t1","t2","idsPerTable","fetchData","setIn","oldData","currentMerkle","getIn","setBudgetType","newData","getTablesFromMessages","prevData","receiveMessages","recv","_sendMessages","scheduleFullSync","IS_BATCHING","_BATCHED","batched","getMessagesSince","localMessages","syncTimeout","_fullSync","sinceTimestamp","prevDiffTime","encoder","resBuffer","localTimeChanged","receivedMessages","diffTime","rebuiltMerkle","rebuildMerkleHash","numMessages","clocks","randomString","migrateParentIds","toApply","parentId","_unlisten","listen","globalThis","opt_data","repeatedFields_","opt_includeInstance","includeInstance","getIv_asB64","authtag","getAuthtag_asB64","getData_asB64","$jspbMessageInstance","reader","deserializeBinaryFromReader","writer","serializeBinaryToWriter","getIv_asU8","getAuthtag_asU8","getData_asU8","isencrypted","getContent_asB64","getContent_asU8","messagesList","fileid","groupid","keyid","getFileid","getGroupid","getKeyid","getSince","setMessagesList","opt_value","opt_index","clearMessagesList","setMerkle","rebuilt","keyState","clock_","MutableTimestamp","maxDrift","counter","_state","murmurhash","setMillis","setCounter","phys","lOld","cOld","lNew","cNew","ClockDriftError","OverflowError","lMsg","cMsg","isoString","DuplicateNodeError","blankPayeeRows","parentPayee","clearedRows","deletedRows","numBlankPayees","numCleared","numDeleted","Mixpanel","currentUniqueId","isEnabled","toggle","hashed","isAnonymous","distinctId","hashedId","setProfile","$name","login","startBuffering","stopBuffering","BUFFERING","MESSAGE_HISTORY","CURSOR","HISTORY_SIZE","trimHistory","markers","cutoff","appendMessages","undoListening","marker","applyUndoAction","undoMessage","oldItem","redoResurrections","resurrect","runMigrations","migrations","updateViews","hashKey","currentHash","existingFiles","initialName","newName","prettyAccountType","determineOffBudget","sequenceState","queue","pump","onceFn","IS_TESTING","month1","month2","_range","inclusive","rangeInclusive","_dayRange","dayRange","dayRangeInclusive","getMonthIndex","getYearStart","getYearEnd","nameForMonth","getDateFormatRegex","memoizeOne","getDayMonthFormat","getDayMonthRegex","getMonthYearFormat","getMonthYearRegex","getShortYearFormat","getShortYearRegex","withoutValidatedRefs","getPrimaryOrderBy","defaultOrderBy","orderExprs","firstOrder","TYPE_INFO","amountInflow","amountOutfow","mapField","friendlyOp","deserializeField","getFieldError","unparse","inputKey","unparsed","makeValue","currencyToAmount","makeNumberSuffix","prettyDayName","SU","TU","WE","getRecurringDescription","p1","p2","typeOrder","valOrder","strs","uniqueDays","dayName","abbrevDay","dayNames","SplitTransactionError","makeChild","findParentIndex","getSplit","parentIndex","groupTransaction","ungroupTransaction","applyTransactionDiff","groupedTrans","applyChanges","replaceTransactions","transactionsCopy","newSplit","_deleted","diffItems","newTrans","addSplitTransaction","prevSub","splitTransaction","realizeTempTransactions","currencyFormatter","cleanUUID","mergeObjects","composeCellChanges","flattenArray","arrays","shallowEqual","numKeysA","numKeysB","obj1","obj2","hasChanged","groupBySingle","_groupById","newItems","newGrouped","newItem","debugMemoFailure","prevProps","nextProps","throwError","set1","set2","finalSet","titleFirst","numberFormats","label","numberFormat","setNumberFormat","separator","getNumberFormat","toRelaxedNumber","currencyToInteger","toRelaxedInteger","integerToCurrency","amountToCurrency","amountToPrettyCurrency","semverToNumber"],"mappings":"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,EAAuBf,QAAQ,CAAC7B,KAAT,CAAeJ,QAAtC;AADK,SAA5C,CADK,EAILtC,KAJF;AAKD,OATD,MASO;AACL;AACA;AACAoF,YAAI,GAAGb,QAAQ,CAAC3B,IAAT,CAAckE,SAAd,EAAyB9G,KAAhC;AACD;AACF;;AACD,WAAOzE,SAAP;AACD;;AAhDwC;;AAmD3C,MAAMgW,IAAN,SAAmBP,QAAnB,CAA4B;AAC1B;AACF;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;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;AACExa,aAAW,CAAC4C,MAAD,EAASM,OAAO,GAAG,EAAnB,EAAuB;AAChC,UAAM6X,IAAI,CAACN,eAAX,EAA4B7X,MAA5B,EAAoCM,OAApC;AACD;;AACDnC,KAAG,CAACR,IAAD,EAAOiJ,KAAP,EAAcwR,SAAS,GAAG,EAA1B,EAA8B;AAC/B,QAAI9X,OAAO,GAAGwX,wEAAgB,CAAC,KAAKxX,OAAN,CAA9B;AACA,QAAI4I,QAAQ,GAAG,KAAKA,QAApB;;AACA,QAAIvL,IAAI,KAAK,UAAb,EAAyB;AACvB,UAAIiJ,KAAK,KAAK,KAAKsC,QAAf,IAA2B,CAACkP,SAAS,CAACpH,aAA1C,E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;AACvB,UAAMuE,MAAM,GAAG,IAAIG,eAAJ,CAAoB,KAAK/O,MAAL,CAAYqK,IAAhC,EAAsCpB,IAAtC,CAAf;;AACA,WAAO,CAAC2F,MAAM,CAACjG,IAAf,EAAqB;AACnB,YAAM+E,SAAS,GAAG,MAAM,KAAKT,kBAAL,CAAwB2B,MAAM,CAAChI,KAA/B,CAAxB;AACA,YAAMmS,SAAS,GAAGnK,MAAM,CAAChI,KAAzB,CAFmB,CAGnB;;AACAgI,YAAM,CAACpF,IAAP,CAAYkE,SAAZ;;AACA,aACE,EAAEA,SAAS,IAAIA,SAAS,CAACxB,UAAzB,KACA,CAAC0C,MAAM,CAACjG,IADR,IAEAiG,MAAM,CAAChI,KAAP,CAAa2E,OAAb,CAAqBwN,SAArB,CAHF,EAIE;AACAnK,cAAM,CAACpF,IAAP;AACD;AACF;AACF;;AACDqF,qBAAmB,GAAG;AACpB,WAAO,CAAC,EAAE,KAAK7O,MAAL,CAAYqK,IAAZ,IAAoB,KAAKrK,MAAL,CAAYqK,IAAZ,CAAiBR,UAAvC,CAAR;AACD;;AACDiF,sBAAoB,GAAG;AACrB,WAAO,CAAC,EAAE,KAAK9O,MAAL,CAAYqK,IAAZ,IAAoB,KAAKrK,MAAL,CAAYqK,IAAZ,CAAiBW,WAAvC,CAAR;AACD;;AAjCmC;;AAoCtC,MAAMgO,QAAN,SAAuBV,YAAvB,CAAoC;AAClC;AACF;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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C,CAAD,CAA9B;;AACA,QAAIC,cAAc,KAAK,GAAvB,EAA4B;AAC1B,aAAOE,kBAAkB,CAACH,SAAD,CAAzB;AACD;;AAED,QAAII,SAAS,GAAG7O,uEAAU,CAAC0O,cAAD,CAA1B;;AACA,QAAIG,SAAJ,EAAe;AACb,UAAI,CAACxpD,OAAO,CAACypD,oBAAT,IAAiChJ,sFAAgB,CAAC2I,SAAD,CAArD,EAAkE;AAChE1I,iGAAmB,CAAC0I,SAAD,CAAnB;AACD;;AACD,aAAOI,SAAS,CAACP,OAAD,EAAUG,SAAV,EAAqB/Q,MAAM,CAACwC,QAA5B,EAAsCsO,gBAAtC,CAAhB;AACD;;AAED,WAAOC,SAAP;AACD,GAhCU,EAiCV1hC,IAjCU,CAiCL,EAjCK,CAAb;AAmCA,SAAOlmB,MAAP;AACD;;AAED,SAAS+nD,kBAAT,CAA4B55C,KAA5B,EAAmC;AACjC,SAAOA,KAAK,CAACqW,KAAN,CAAY2iC,mBAAZ,EAAiC,CAAjC,EAAoCxiC,OAApC,CAA4CyiC,iBAA5C,EAA+D,GAA/D,CAAP;AACD,C;;;;;;;;;;;;AC3bD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIc,cAAc,GAAG,IAArB;AACA,IAAIC,0BAA0B,GAAG,IAAjC;AACA,IAAIC,gBAAgB,GAAG,KAAvB;AACA,IAAIC,qBAAqB,GAAG,KAA5B;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;AACA;AACA;AACA;AACA;A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O;AACL,QAAIO,sBAAsB,GAAGhsC,MAAM,GAAG,EAAtC;AACA,QAAIisC,KAAK,GAAGxnD,IAAI,CAACuF,KAAL,CAAWgW,MAAM,GAAG,EAApB,CAAZ,CAFK,CAIL;;AACA,QAAIgsC,sBAAsB,GAAG,CAA7B,EAAgC;AAC9B,aAAOnS,MAAM,CAACyR,cAAP,CAAsB,aAAtB,EAAqCW,KAArC,EAA4CR,eAA5C,CAAP,CAD8B,CAG9B;AACD,KAJD,MAIO,IAAIO,sBAAsB,GAAG,CAA7B,EAAgC;AACrC,aAAOnS,MAAM,CAACyR,cAAP,CAAsB,YAAtB,EAAoCW,KAApC,EAA2CR,eAA3C,CAAP,CADqC,CAGrC;AACD,KAJM,MAIA;AACL,aAAO5R,MAAM,CAACyR,cAAP,CAAsB,cAAtB,EAAsCW,KAAK,GAAG,CAA9C,EAAiDR,eAAjD,CAAP;AACD;AACF;AACF,C;;;;;;;;;;;;AC9OD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAIP,cAAc,GAAG,IAArB;AACA,IAAIE,gBAAgB,GAAG,KAAvB;AACA,IAAIc,eAAe,GAAG,MAAtB;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;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;;AACe,SAASC,oBAAT,CACb/zC,SADa,EAEbmzC,aAFa,EAGb9J,YAHa,EAIb;AACA,MAAInpC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,oCAAoCD,SAAS,CAAChW,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAId,OAAO,GAAGigD,YAAY,IAAI,EAA9B;AACA,MAAI5H,MAAM,GAAGr4C,OAAO,CAACq4C,MAAR,IAAkB0Q,8DAA/B;;AAEA,MAAI,CAAC1Q,MAAM,CAACyR,cAAZ,EAA4B;AAC1B,UAAM,IAAIzJ,UAAJ,CAAe,sDAAf,CAAN;AACD;;AAED,MAAI2J,UAAU,GAAGpG,oEAAU,CAAChtC,SAAD,EAAYmzC,aAAZ,CAA3B;;AAEA,MAAI5jD,KAAK,CAAC6jD,UAAD,CAAT,EAAuB;AACrB,UAAM,IAAI3J,UAAJ,CAAe,oBAAf,CAAN;AACD;;AAED,MAAI4J,eAAe,GAAGhQ,yEAAW,CAACj6C,OAAD,CAAjC;AACAiqD,iBAAe,CAACC,SAAhB,GAA4BC,OAAO,CAACnqD,OAAO,CAACkqD,SAAT,CAAnC;AACAD,iBAAe,CAACD,UAAhB,GAA6BA,UAA7B;AAEA,MAAIjG,QAAJ;AACA,MAAIC,SAAJ;;AACA,MAAIgG,UAAU,GAAG,CAAjB,EAAoB;AAClBjG,YAAQ,GAAGxE,gEAAM,CAACwK,aAAD,CAAjB;AACA/F,aAAS,GAAGzE,gEAAM,CAAC3oC,SAAD,CAAlB;AACD,GAHD,MAGO;AACLmtC,YAAQ,GAAGxE,gEAAM,CAAC3oC,SAAD,CAAjB;AACAotC,aAAS,GAAGzE,gEAAM,CAACwK,aAAD,CAAlB;AACD;;AAED,MAAIa,cAAc,GAChB5qD,OAAO,CAAC4qD,cAAR,IAA0B,IAA1B,GAAiC,OAAjC,GAA2C/f,MAAM,CAAC7qC,OAAO,CAAC4qD,cAAT,CADnD;AAEA,MAAIC,gBAAJ;;AAEA,MAAID,cAAc,KAAK,OAAvB,EAAgC;AAC9BC,oBAAgB,GAAG5nD,IAAI,CAACuF,KAAxB;AACD,GAFD,MAEO,IAAIoiD,cAAc,KAAK,MAAvB,EAA+B;AACpCC,oBAAgB,GAAG5nD,IAAI,CAACG,IAAxB;AACD,GAFM,MAEA,IAAIwnD,cAAc,KAAK,OAAvB,EAAgC;AACrCC,oBAAgB,GAAG5nD,IAAI,CAAC6iB,KAAxB;AACD,GAFM,MAEA;AACL,UAAM,IAAIu6B,UAAJ,CAAe,mDAAf,CAAN;AACD;;AAED,MAAI+J,OAAO,GAAGjE,6EAAmB,CAACnC,SAAD,EAAYD,QAAZ,CAAjC;AACA,MAAIsG,eAAe,GACjB,CAAClL,6FAA+B,CAAC6E,SAAD,CAA/B,GACC7E,6FAA+B,CAAC4E,QAAD,CADjC,IAEA,IAHF;AAIA,MAAIxF,OAAO,GAAGsM,gBAAgB,CAAC,CAACT,OAAO,GAAGC,eAAX,IAA8B,EAA/B,CAA9B;AAEA,MAAIh3C,IAAJ;;AACA,MAAIrT,OAAO,CAACqT,IAAR,IAAgB,IAApB,EAA0B;AACxB,QAAIkrC,OAAO,GAAG,CAAd,EAAiB;AACflrC,UAAI,GAAG,QAAP;AACD,KAFD,MAEO,IAAIkrC,OAAO,GAAG,EAAd,EAAkB;AACvBlrC,UAAI,GAAG,QAAP;AACD,KAFM,MAEA,IAAIkrC,OAAO,GAAGmL,cAAd,EAA8B;AACnCr2C,UAAI,GAAG,MAAP;AACD,KAFM,MAEA,IAAIkrC,OAAO,GAAGqL,gBAAd,EAAgC;AACrCv2C,UAAI,GAAG,KAAP;AACD,KAFM,MAEA,IAAIkrC,OAAO,GAAGmM,eAAd,EAA+B;AACpCr3C,UAAI,GAAG,OAAP;AACD,KAFM,MAEA;AACLA,UAAI,GAAG,MAAP;AACD;AACF,GAdD,MAcO;AACLA,QAAI,GAAGw3B,MAAM,CAAC7qC,OAAO,CAACqT,IAAT,CAAb;AACD,GAxED,CA0EA;;;AACA,MAAIA,IAAI,KAAK,QAAb,EAAuB;AACrB,WAAOglC,MAAM,CAACyR,cAAP,CAAsB,UAAtB,EAAkCM,OAAlC,EAA2CH,eAA3C,CAAP,CADqB,CAGrB;AACD,GAJD,MAIO,IAAI52C,IAAI,KAAK,QAAb,EAAuB;AAC5B,WAAOglC,MAAM,CAACyR,cAAP,CAAsB,UAAtB,EAAkCvL,OAAlC,EAA2C0L,eAA3C,CAAP,CAD4B,CAG5B;AACD,GAJM,MAIA,IAAI52C,IAAI,KAAK,MAAb,EAAqB;AAC1B,QAAI0pC,KAAK,GAAG8N,gBAAgB,CAACtM,OAAO,GAAG,EAAX,CAA5B;AACA,WAAOlG,MAAM,CAACyR,cAAP,CAAsB,QAAtB,EAAgC/M,KAAhC,EAAuCkN,eAAvC,CAAP,CAF0B,CAI1B;AACD,GALM,MAKA,IAAI52C,IAAI,KAAK,KAAb,EAAoB;AACzB,QAAI+D,IAAI,GAAGyzC,gBAAgB,CAACtM,OAAO,GAAGmL,cAAX,CAA3B;AACA,WAAOrR,MAAM,CAACyR,cAAP,CAAsB,OAAtB,EAA+B1yC,IAA/B,EAAqC6yC,eAArC,CAAP,CAFyB,CAIzB;AACD,GALM,MAKA,IAAI52C,IAAI,KAAK,OAAb,EAAsB;AAC3B,QAAImL,MAAM,GAAGqsC,gBAAgB,CAACtM,OAAO,GAAGqL,gBAAX,CAA7B;AACA,WAAOvR,MAAM,CAACyR,cAAP,CAAsB,SAAtB,EAAiCtrC,MAAjC,EAAyCyrC,eAAzC,CAAP,CAF2B,CAI3B;AACD,GALM,MAKA,IAAI52C,IAAI,KAAK,MAAb,EAAqB;AAC1B,QAAIo3C,KAAK,GAAGI,gBAAgB,CAACtM,OAAO,GAAGmM,eAAX,CAA5B;AACA,WAAOrS,MAAM,CAACyR,cAAP,CAAsB,QAAtB,EAAgCW,KAAhC,EAAuCR,eAAvC,CAAP;AACD;;AAED,QAAM,IAAI5J,UAAJ,CACJ,mEADI,CAAN;AAGD,C;;;;;;;;;;;;AC7QD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASyK,cAAT,CAAwBl0C,SAAxB,EAAmCmzC,aAAnC,EAAkD9J,YAAlD,EAAgE;AAC7E,MAAInpC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,oCAAoCD,SAAS,CAAChW,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIm0C,QAAQ,GAAGxL,gEAAM,CAACwK,aAAD,CAArB;AAEA,MAAI/pD,OAAO,GAAGigD,YAAY,IAAI,EAA9B;AACA,MAAI5H,MAAM,GAAGr4C,OAAO,CAACq4C,MAAR,IAAkB0Q,8DAA/B;;AAEA,MAAI,CAAC1Q,MAAM,CAACwC,QAAZ,EAAsB;AACpB,UAAM,IAAIwF,UAAJ,CAAe,uCAAf,CAAN;AACD;;AAED,MAAI,CAAChI,MAAM,CAACoG,UAAZ,EAAwB;AACtB,UAAM,IAAI4B,UAAJ,CAAe,yCAAf,CAAN;AACD;;AAED,MAAI,CAAChI,MAAM,CAACyS,cAAZ,EAA4B;AAC1B,UAAM,IAAIzK,UAAJ,CAAe,6CAAf,CAAN;AACD;;AAED,MAAI9pC,IAAI,GAAG2tC,kFAAwB,CAACx4C,IAAD,EAAOq/C,QAAP,CAAnC;;AAEA,MAAI5kD,KAAK,CAACoQ,IAAD,CAAT,EAAiB;AACf,UAAM,IAAI8pC,UAAJ,CAAe,oBAAf,CAAN;AACD;;AAED,MAAI5gD,KAAJ;;AACA,MAAI8W,IAAI,GAAG,CAAC,CAAZ,EAAe;AACb9W,SAAK,GAAG,OAAR;AACD,GAFD,MAEO,IAAI8W,IAAI,GAAG,CAAC,CAAZ,EAAe;AACpB9W,SAAK,GAAG,UAAR;AACD,GAFM,MAEA,IAAI8W,IAAI,GAAG,CAAX,EAAc;AACnB9W,SAAK,GAAG,WAAR;AACD,GAFM,MAEA,IAAI8W,IAAI,GAAG,CAAX,EAAc;AACnB9W,SAAK,GAAG,OAAR;AACD,GAFM,MAEA,IAAI8W,IAAI,GAAG,CAAX,EAAc;AACnB9W,SAAK,GAAG,UAAR;AACD,GAFM,MAEA,IAAI8W,IAAI,GAAG,CAAX,EAAc;AACnB9W,SAAK,GAAG,UAAR;AACD,GAFM,MAEA;AACLA,SAAK,GAAG,OAAR;AACD;;AAED,MAAIwpD,OAAO,GAAGC,yEAAe,CAACx9C,IAAD,EAAOyzC,6FAA+B,CAACzzC,IAAD,CAAtC,CAA7B;AACA,MAAIs/C,WAAW,GAAG9B,yEAAe,CAC/B6B,QAD+B,EAE/B5L,6FAA+B,CAAC4L,QAAD,CAFA,CAAjC;AAIA,MAAIjC,SAAS,GAAGzQ,MAAM,CAACyS,cAAP,CAAsBrrD,KAAtB,EAA6BwpD,OAA7B,EAAsC+B,WAAtC,EAAmDhrD,OAAnD,CAAhB;AACA,SAAO6kB,gEAAM,CAACnZ,IAAD,EAAOo9C,SAAP,EAAkB9oD,OAAlB,CAAb;AACD,C;;;;;;;;;;;;AC/FD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASirD,YAAT,CAAsBC,aAAtB,EAAqC;AAClD,MAAIp0C,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAIqqD,QAAQ,GAAG30C,uEAAS,CAAC00C,aAAD,CAAxB;AAEA,SAAO3L,gEAAM,CAAC4L,QAAQ,GAAG,IAAZ,CAAb;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASjnC,OAAT,CAAiBtN,SAAjB,EAA4B;AACzC,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIw0C,UAAU,GAAG1/C,IAAI,CAACwY,OAAL,EAAjB;AACA,SAAOknC,UAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS5C,MAAT,CAAgB5xC,SAAhB,EAA2B;AACxC,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAI7L,GAAG,GAAGW,IAAI,CAAC88C,MAAL,EAAV;AACA,SAAOz9C,GAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASsgD,YAAT,CAAsBz0C,SAAtB,EAAiC;AAC9C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIL,IAAI,GAAG2tC,kFAAwB,CAACx4C,IAAD,EAAOg8C,qEAAW,CAACh8C,IAAD,CAAlB,CAAnC;AACA,MAAI8wC,SAAS,GAAGjmC,IAAI,GAAG,CAAvB;AACA,SAAOimC,SAAP;AACD,C;;;;;;;;;;;;ACpCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS2F,cAAT,CAAwBvrC,SAAxB,EAAmC;AAChD,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIlE,IAAI,GAAGhH,IAAI,CAACsY,WAAL,EAAX;AACA,MAAIsnC,UAAU,GAAG5/C,IAAI,CAACuY,QAAL,EAAjB;AACA,MAAIsnC,cAAc,GAAG,IAAInnD,IAAJ,CAAS,CAAT,CAArB;AACAmnD,gBAAc,CAACtJ,WAAf,CAA2BvvC,IAA3B,EAAiC44C,UAAU,GAAG,CAA9C,EAAiD,CAAjD;AACAC,gBAAc,CAACrJ,QAAf,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC;AACA,SAAOqJ,cAAc,CAACrnC,OAAf,EAAP;AACD,C;;;;;;;;;;;;ACrCD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASzI,aAAT,CAAuB7E,SAAvB,EAAkC;AAC/C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;;AAEA,MAAIzQ,KAAK,CAACuF,IAAD,CAAT,EAAiB;AACf,WAAO+K,GAAP;AACD;;AAED,SAAOH,oEAAU,CAAC5K,IAAD,CAAV,GAAmB,GAAnB,GAAyB,GAAhC;AACD,C;;;;;;;;;;;;ACtCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS8/C,SAAT,CAAmB50C,SAAnB,EAA8B;AAC3C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIlE,IAAI,GAAGhH,IAAI,CAACsY,WAAL,EAAX;AACA,MAAI8jC,MAAM,GAAG7kD,IAAI,CAACuF,KAAL,CAAWkK,IAAI,GAAG,EAAlB,IAAwB,EAArC;AACA,SAAOo1C,MAAP;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS3jC,QAAT,CAAkBvN,SAAlB,EAA6B;AAC1C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAImmC,KAAK,GAAGrxC,IAAI,CAACyY,QAAL,EAAZ;AACA,SAAO44B,KAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS0O,SAAT,CAAmB70C,SAAnB,EAA8B;AAC3C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAI7L,GAAG,GAAGW,IAAI,CAAC88C,MAAL,EAAV;;AAEA,MAAIz9C,GAAG,KAAK,CAAZ,EAAe;AACbA,OAAG,GAAG,CAAN;AACD;;AAED,SAAOA,GAAP;AACD,C;;;;;;;;;;;;ACzCD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAIuH,oBAAoB,GAAG,SAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASo5C,UAAT,CAAoB90C,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIL,IAAI,GAAGouC,wEAAc,CAACj5C,IAAD,CAAd,CAAqBjD,OAArB,KAAiCkjD,4EAAkB,CAACjgD,IAAD,CAAlB,CAAyBjD,OAAzB,EAA5C,CAR4C,CAU5C;AACA;AACA;;AACA,SAAOxF,IAAI,CAAC6iB,KAAL,CAAWvP,IAAI,GAAGjE,oBAAlB,IAA0C,CAAjD;AACD,C;;;;;;;;;;;;AC3CD;AAAA;AAAA;AAAA;AAAA;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;;AACe,SAASwvC,cAAT,CAAwBlrC,SAAxB,EAAmC;AAChD,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIlE,IAAI,GAAGhH,IAAI,CAACsY,WAAL,EAAX;AAEA,MAAI27B,yBAAyB,GAAG,IAAIv7C,IAAJ,CAAS,CAAT,CAAhC;AACAu7C,2BAAyB,CAACsC,WAA1B,CAAsCvvC,IAAI,GAAG,CAA7C,EAAgD,CAAhD,EAAmD,CAAnD;AACAitC,2BAAyB,CAACuC,QAA1B,CAAmC,CAAnC,EAAsC,CAAtC,EAAyC,CAAzC,EAA4C,CAA5C;AACA,MAAItC,eAAe,GAAG+E,wEAAc,CAAChF,yBAAD,CAApC;AAEA,MAAIE,yBAAyB,GAAG,IAAIz7C,IAAJ,CAAS,CAAT,CAAhC;AACAy7C,2BAAyB,CAACoC,WAA1B,CAAsCvvC,IAAtC,EAA4C,CAA5C,EAA+C,CAA/C;AACAmtC,2BAAyB,CAACqC,QAA1B,CAAmC,CAAnC,EAAsC,CAAtC,EAAyC,CAAzC,EAA4C,CAA5C;AACA,MAAIpC,eAAe,GAAG6E,wEAAc,CAAC9E,yBAAD,CAApC;;AAEA,MAAIn0C,IAAI,CAACjD,OAAL,MAAkBm3C,eAAe,CAACn3C,OAAhB,EAAtB,EAAiD;AAC/C,WAAOiK,IAAI,GAAG,CAAd;AACD,GAFD,MAEO,IAAIhH,IAAI,CAACjD,OAAL,MAAkBq3C,eAAe,CAACr3C,OAAhB,EAAtB,EAAiD;AACtD,WAAOiK,IAAP;AACD,GAFM,MAEA;AACL,WAAOA,IAAI,GAAG,CAAd;AACD;AACF,C;;;;;;;;;;;;AC3DD;AAAA;AAAA;AAAA;AAAA;AACA;AAEA,IAAIJ,oBAAoB,GAAG,SAA3B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASs5C,iBAAT,CAA2Bh1C,SAA3B,EAAsC;AACnD,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI+qD,QAAQ,GAAGF,4EAAkB,CAAC/0C,SAAD,CAAjC;AACA,MAAIk1C,QAAQ,GAAGH,4EAAkB,CAACpJ,kEAAQ,CAACsJ,QAAD,EAAW,EAAX,CAAT,CAAjC;AACA,MAAIt1C,IAAI,GAAGu1C,QAAQ,CAACt7C,OAAT,KAAqBq7C,QAAQ,CAACr7C,OAAT,EAAhC,CATmD,CAUnD;AACA;AACA;;AACA,SAAOvN,IAAI,CAAC6iB,KAAL,CAAWvP,IAAI,GAAGjE,oBAAlB,CAAP;AACD,C;;;;;;;;;;;;AC1CD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASgS,eAAT,CAAyB1N,SAAzB,EAAoC;AACjD,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAI4mC,YAAY,GAAG9xC,IAAI,CAAC4Y,eAAL,EAAnB;AACA,SAAOk5B,YAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASp5B,UAAT,CAAoBxN,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAI2nC,OAAO,GAAG7yC,IAAI,CAAC0Y,UAAL,EAAd;AACA,SAAOm6B,OAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASt6B,QAAT,CAAkBrN,SAAlB,EAA6B;AAC1C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIjE,KAAK,GAAGjH,IAAI,CAACuY,QAAL,EAAZ;AACA,SAAOtR,KAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA,IAAIN,mBAAmB,GAAG,KAAK,EAAL,GAAU,EAAV,GAAe,IAAzC;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;;AACe,SAAS05C,6BAAT,CACbrJ,iBADa,EAEbC,kBAFa,EAGb;AACA,MAAI7rC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,oCAAoCD,SAAS,CAAChW,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAI8hD,YAAY,GAAGF,iBAAiB,IAAI,EAAxC;AACA,MAAIG,aAAa,GAAGF,kBAAkB,IAAI,EAA1C;AACA,MAAIG,aAAa,GAAGvD,gEAAM,CAACqD,YAAY,CAAC55C,KAAd,CAAN,CAA2BP,OAA3B,EAApB;AACA,MAAIs6C,WAAW,GAAGxD,gEAAM,CAACqD,YAAY,CAACp5C,GAAd,CAAN,CAAyBf,OAAzB,EAAlB;AACA,MAAIu6C,cAAc,GAAGzD,gEAAM,CAACsD,aAAa,CAAC75C,KAAf,CAAN,CAA4BP,OAA5B,EAArB;AACA,MAAIw6C,YAAY,GAAG1D,gEAAM,CAACsD,aAAa,CAACr5C,GAAf,CAAN,CAA0Bf,OAA1B,EAAnB,CAZA,CAcA;;AACA,MAAI,EAAEq6C,aAAa,IAAIC,WAAjB,IAAgCC,cAAc,IAAIC,YAApD,CAAJ,EAAuE;AACrE,UAAM,IAAI5C,UAAJ,CAAe,kBAAf,CAAN;AACD;;AAED,MAAI2L,aAAa,GACflJ,aAAa,GAAGG,YAAhB,IAAgCD,cAAc,GAAGD,WADnD;;AAGA,MAAI,CAACiJ,aAAL,EAAoB;AAClB,WAAO,CAAP;AACD;;AAED,MAAIC,gBAAgB,GAClBjJ,cAAc,GAAGF,aAAjB,GAAiCA,aAAjC,GAAiDE,cADnD;AAGA,MAAIkJ,cAAc,GAAGjJ,YAAY,GAAGF,WAAf,GAA6BA,WAA7B,GAA2CE,YAAhE;AAEA,MAAIkJ,cAAc,GAAGD,cAAc,GAAGD,gBAAtC;AAEA,SAAOhpD,IAAI,CAACG,IAAL,CAAU+oD,cAAc,GAAG95C,mBAA3B,CAAP;AACD,C;;;;;;;;;;;;AC1GD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS6yC,UAAT,CAAoBtuC,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIilC,OAAO,GAAG54C,IAAI,CAACuF,KAAL,CAAWkD,IAAI,CAACuY,QAAL,KAAkB,CAA7B,IAAkC,CAAhD;AACA,SAAO43B,OAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASx3B,UAAT,CAAoBzN,SAApB,EAA+B;AAC5C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIwzC,OAAO,GAAG1+C,IAAI,CAAC2Y,UAAL,EAAd;AACA,SAAO+lC,OAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS3hD,OAAT,CAAiBmO,SAAjB,EAA4B;AACzC,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAII,SAAS,GAAGtL,IAAI,CAACjD,OAAL,EAAhB;AACA,SAAOuO,SAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASo1C,WAAT,CAAqBx1C,SAArB,EAAgC;AAC7C,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SAAOmC,IAAI,CAACuF,KAAL,CAAWC,iEAAO,CAACmO,SAAD,CAAP,GAAqB,IAAhC,CAAP;AACD,C;;;;;;;;;;;;AC/BD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAItE,oBAAoB,GAAG,SAA3B;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;;AAEe,SAAS+5C,OAAT,CAAiBz1C,SAAjB,EAA4B5W,OAA5B,EAAqC;AAClD,MAAI8W,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIL,IAAI,GACN8uC,qEAAW,CAAC35C,IAAD,EAAO1L,OAAP,CAAX,CAA2ByI,OAA3B,KACA6jD,yEAAe,CAAC5gD,IAAD,EAAO1L,OAAP,CAAf,CAA+ByI,OAA/B,EAFF,CARkD,CAYlD;AACA;AACA;;AACA,SAAOxF,IAAI,CAAC6iB,KAAL,CAAWvP,IAAI,GAAGjE,oBAAlB,IAA0C,CAAjD;AACD,C;;;;;;;;;;;;AChED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;;AACe,SAASi6C,cAAT,CAAwB7gD,IAAxB,EAA8Bu0C,YAA9B,EAA4C;AACzD,MAAInpC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAId,OAAO,GAAGigD,YAAY,IAAI,EAA9B;AACA,MAAI5H,MAAM,GAAGr4C,OAAO,CAACq4C,MAArB;AACA,MAAIwI,kBAAkB,GACpBxI,MAAM,IAAIA,MAAM,CAACr4C,OAAjB,IAA4Bq4C,MAAM,CAACr4C,OAAP,CAAe68C,YAD7C;AAEA,MAAIiE,mBAAmB,GACrBD,kBAAkB,IAAI,IAAtB,GAA6B,CAA7B,GAAiCrqC,uEAAS,CAACqqC,kBAAD,CAD5C;AAEA,MAAIhE,YAAY,GACd78C,OAAO,CAAC68C,YAAR,IAAwB,IAAxB,GACIiE,mBADJ,GAEItqC,uEAAS,CAACxW,OAAO,CAAC68C,YAAT,CAHf,CAbyD,CAkBzD;;AACA,MAAI,EAAEA,YAAY,IAAI,CAAhB,IAAqBA,YAAY,IAAI,CAAvC,CAAJ,EAA+C;AAC7C,UAAM,IAAIwD,UAAJ,CAAe,kDAAf,CAAN;AACD;;AAED,MAAImM,YAAY,GAAGhE,gEAAM,CAACjB,sEAAY,CAAC77C,IAAD,CAAb,CAAzB;AACA,MAAI+gD,cAAc,GAAGjE,gEAAM,CAAC98C,IAAD,CAA3B;AAEA,MAAIghD,uBAAuB,GACzBF,YAAY,GAAG3P,YAAf,GAA8B,IAAIA,YAAlC,GAAiD2P,YADnD;AAEA,MAAIj2C,IAAI,GAAGm2C,uBAAuB,GAAGD,cAA1B,GAA2C,IAAI5P,YAA/C,GAA8D,CAAzE;AAEA,SAAO55C,IAAI,CAACG,IAAL,CAAU,CAAC8gB,iEAAO,CAACxY,IAAD,CAAP,GAAgB6K,IAAjB,IAAyB,CAAnC,CAAP;AACD,C;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASo2C,WAAT,CAAqB/1C,SAArB,EAAgCqpC,YAAhC,EAA8C;AAC3D,MAAInpC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIlE,IAAI,GAAGhH,IAAI,CAACsY,WAAL,EAAX;AAEA,MAAIhkB,OAAO,GAAGigD,YAAY,IAAI,EAA9B;AACA,MAAI5H,MAAM,GAAGr4C,OAAO,CAACq4C,MAArB;AACA,MAAI6H,2BAA2B,GAC7B7H,MAAM,IAAIA,MAAM,CAACr4C,OAAjB,IAA4Bq4C,MAAM,CAACr4C,OAAP,CAAemgD,qBAD7C;AAEA,MAAIC,4BAA4B,GAC9BF,2BAA2B,IAAI,IAA/B,GACI,CADJ,GAEI1pC,uEAAS,CAAC0pC,2BAAD,CAHf;AAIA,MAAIC,qBAAqB,GACvBngD,OAAO,CAACmgD,qBAAR,IAAiC,IAAjC,GACIC,4BADJ,GAEI5pC,uEAAS,CAACxW,OAAO,CAACmgD,qBAAT,CAHf,CAlB2D,CAuB3D;;AACA,MAAI,EAAEA,qBAAqB,IAAI,CAAzB,IAA8BA,qBAAqB,IAAI,CAAzD,CAAJ,EAAiE;AAC/D,UAAM,IAAIE,UAAJ,CACJ,2DADI,CAAN;AAGD;;AAED,MAAIC,mBAAmB,GAAG,IAAIl8C,IAAJ,CAAS,CAAT,CAA1B;AACAk8C,qBAAmB,CAAC2B,WAApB,CAAgCvvC,IAAI,GAAG,CAAvC,EAA0C,CAA1C,EAA6CytC,qBAA7C;AACAG,qBAAmB,CAAC4B,QAApB,CAA6B,CAA7B,EAAgC,CAAhC,EAAmC,CAAnC,EAAsC,CAAtC;AACA,MAAItC,eAAe,GAAGyF,qEAAW,CAAC/E,mBAAD,EAAsBL,YAAtB,CAAjC;AAEA,MAAIM,mBAAmB,GAAG,IAAIn8C,IAAJ,CAAS,CAAT,CAA1B;AACAm8C,qBAAmB,CAAC0B,WAApB,CAAgCvvC,IAAhC,EAAsC,CAAtC,EAAyCytC,qBAAzC;AACAI,qBAAmB,CAAC2B,QAApB,CAA6B,CAA7B,EAAgC,CAAhC,EAAmC,CAAnC,EAAsC,CAAtC;AACA,MAAIpC,eAAe,GAAGuF,qEAAW,CAAC9E,mBAAD,EAAsBN,YAAtB,CAAjC;;AAEA,MAAIv0C,IAAI,CAACjD,OAAL,MAAkBm3C,eAAe,CAACn3C,OAAhB,EAAtB,EAAiD;AAC/C,WAAOiK,IAAI,GAAG,CAAd;AACD,GAFD,MAEO,IAAIhH,IAAI,CAACjD,OAAL,MAAkBq3C,eAAe,CAACr3C,OAAhB,EAAtB,EAAiD;AACtD,WAAOiK,IAAP;AACD,GAFM,MAEA;AACL,WAAOA,IAAI,GAAG,CAAd;AACD;AACF,C;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;AAAA;AAAA;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;AACA;AACA;AACA;AACA;;AACe,SAASk6C,eAAT,CAAyBlhD,IAAzB,EAA+B1L,OAA/B,EAAwC;AACrD,MAAI8W,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,SACEqkD,mFAAyB,CACvBoG,wEAAc,CAAC7/C,IAAD,CADS,EAEvB67C,sEAAY,CAAC77C,IAAD,CAFW,EAGvB1L,OAHuB,CAAzB,GAII,CALN;AAOD,C;;;;;;;;;;;;ACjDD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS6sD,OAAT,CAAiBj2C,SAAjB,EAA4B;AACzC,MAAIE,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,mCAAmCD,SAAS,CAAChW,MAA7C,GAAsD,UADlD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIlE,IAAI,GAAGhH,IAAI,CAACsY,WAAL,EAAX;AACA,SAAOtR,IAAP;AACD,C;;;;;;;;;;;;ACjCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AAGA;AACA;AACA;AAGA;AAGA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;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;AAGA;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;AAGA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3LA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS3G,OAAT,CAAiB6K,SAAjB,EAA4BusC,kBAA5B,EAAgD;AAC7D,MAAIrsC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,oCAAoCD,SAAS,CAAChW,MAA9C,GAAuD,UADnD,CAAN;AAGD;;AAED,MAAI4K,IAAI,GAAG6zC,gEAAM,CAAC3oC,SAAD,CAAjB;AACA,MAAIysC,aAAa,GAAG9D,gEAAM,CAAC4D,kBAAD,CAA1B;AACA,SAAOz3C,IAAI,CAACjD,OAAL,KAAiB46C,aAAa,CAAC56C,OAAd,EAAxB;AACD,C;;;;;;;;;;;;AClCD;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASuC,QAAT,CAAkB4L,SAAlB,EAA6BusC,kBAA7B,EAAiD;AAC9D,MAAIrsC,SAAS,CAAChW,MAAV,GAAmB,CAAvB,EAA0B;AACxB,UAAM,IAAIiW,SAAJ,CACJ,oCAAoCD,SAAS,CAAChW,MAA9C,GAAuD,UADnD,CAAN;AAGD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AIC,iBAAiB,GAAG,KAAxB;AAEA,IAAI4O,mBAAmB,GAAG,IAA1B;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AAC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","file":"bundle.api.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded chunks\n \t// \"0\" means \"already loaded\"\n \tvar installedChunks = {\n \t\t\"main\": 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// uncaught error handler for webpack runtime\n \t__webpack_require__.oe = function(err) {\n \t\tprocess.nextTick(function() {\n \t\t\tthrow err; // catch this error by using import().catch()\n \t\t});\n \t};\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./packages/loot-core/src/server/main.js\");\n","/**\n * Group profile methods. Learn more: https://help.mixpanel.com/hc/en-us/articles/360025333632\n */\n\nconst {ProfileHelpers} = require('./profile_helpers');\n\nclass MixpanelGroups extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = '/groups';\n }\n\n /** groups.set_once(group_key, group_id, prop, to, modifiers, callback)\n ---\n The same as groups.set, but adds a property value to a group only if it has not been set before.\n */\n set_once(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._set(prop, to, modifiers, callback, {identifiers, set_once: true});\n }\n\n /**\n groups.set(group_key, group_id, prop, to, modifiers, callback)\n ---\n set properties on a group profile\n\n usage:\n\n mixpanel.groups.set('company', 'Acme Inc.', '$name', 'Acme Inc.');\n\n mixpanel.groups.set('company', 'Acme Inc.', {\n 'Industry': 'widgets',\n '$name': 'Acme Inc.',\n });\n */\n set(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._set(prop, to, modifiers, callback, {identifiers});\n }\n\n /**\n groups.delete_group(group_key, group_id, modifiers, callback)\n ---\n delete a group profile permanently\n\n usage:\n\n mixpanel.groups.delete_group('company', 'Acme Inc.');\n */\n delete_group(group_key, group_id, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._delete_profile({identifiers, modifiers, callback});\n }\n\n /**\n groups.remove(group_key, group_id, data, modifiers, callback)\n ---\n remove a value from a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.remove('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.remove('company', 'Acme Inc.', {\n 'products': 'anvil',\n 'customer segments': 'coyotes'\n });\n */\n remove(group_key, group_id, data, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._remove({identifiers, data, modifiers, callback});\n }\n\n /**\n groups.union(group_key, group_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': ['anvil'], 'customer segments': ['coyotes']});\n */\n union(group_key, group_id, data, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._union({identifiers, data, modifiers, callback})\n }\n\n /**\n groups.unset(group_key, group_id, prop, modifiers, callback)\n ---\n delete a property on a group profile\n\n usage:\n\n mixpanel.groups.unset('company', 'Acme Inc.', 'products');\n\n mixpanel.groups.unset('company', 'Acme Inc.', ['products', 'customer segments']);\n */\n unset(group_key, group_id, prop, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._unset({identifiers, prop, modifiers, callback})\n }\n}\n\nexports.MixpanelGroups = MixpanelGroups;\n","/*\n Heavily inspired by the original js library copyright Mixpanel, Inc.\n (http://mixpanel.com/)\n\n Copyright (c) 2012 Carl Sverre\n\n Released under the MIT license.\n*/\n\nconst {async_all, ensure_timestamp} = require('./utils');\nconst {MixpanelGroups} = require('./groups');\nconst {MixpanelPeople} = require('./people');\n\nconst DEFAULT_CONFIG = {\n test: false,\n debug: false,\n verbose: false,\n host: 'api.mixpanel.com',\n protocol: 'https',\n path: '',\n};\n\nfunction base64(str) {\n return typeof btoa !== 'undefined' ? btoa(str) : Buffer.from(str).toString('base64');\n}\n\nvar create_client = function(token, config) {\n if (!token) {\n throw new Error(\"The Mixpanel Client needs a Mixpanel token: `init(token)`\");\n }\n\n // mixpanel constants\n const MAX_BATCH_SIZE = 50;\n const TRACK_AGE_LIMIT = 60 * 60 * 24 * 5;\n\n const metrics = {\n token,\n config: {...DEFAULT_CONFIG},\n };\n\n\n /**\n * sends an async GET or POST request to mixpanel\n * for batch processes data must be send in the body of a POST\n * @param {object} options\n * @param {string} options.endpoint\n * @param {object} options.data the data to send in the request\n * @param {string} [options.method] e.g. `get` or `post`, defaults to `get`\n * @param {function} callback called on request completion or error\n */\n metrics.send_request = function(options, callback) {\n callback = callback || function() {};\n\n let content = base64(JSON.stringify(options.data));\n const endpoint = options.endpoint;\n const method = (options.method || 'GET').toUpperCase();\n let query_params = {\n 'ip': 0,\n 'verbose': metrics.config.verbose ? 1 : 0\n };\n const key = metrics.config.key;\n const secret = metrics.config.secret;\n let request_options = {\n headers: {},\n };\n let request;\n\n let request_base = `${metrics.config.protocol}://${metrics.config.host}`;\n if(metrics.config.port) {\n request_base += `:${metrics.config.port}`;\n }\n\n if (method === 'POST') {\n content = 'data=' + content;\n request_options.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n request_options.headers['Content-Length'] = content.length;\n } else if (method === 'GET') {\n query_params.data = content;\n }\n\n\n // add auth params\n if (secret) {\n if (metrics.config.protocol !== 'https') {\n throw new Error(\"Must use HTTPS if authenticating with API Secret\");\n }\n const encoded = base64(secret + ':');\n request_options.headers['Authorization'] = 'Basic ' + encoded;\n } else if (key) {\n query_params.api_key = key;\n } else if (endpoint === '/import') {\n throw new Error(\"The Mixpanel Client needs a Mixpanel API Secret when importing old events: `init(token, { secret: ... })`\");\n }\n\n if (metrics.config.test) {\n query_params.test = 1;\n }\n\n request_options.path = metrics.config.path + endpoint + \"?\" + (new URLSearchParams(query_params).toString());\n\n fetch(request_base + request_options.path, {\n method,\n headers: request_options.headers,\n body: method !== 'GET' ? content : null\n })\n .then(res => {\n return res.text();\n })\n .then(text => {\n var e;\n if (metrics.config.verbose) {\n try {\n var result = JSON.parse(text);\n if(result.status != 1) {\n e = new Error(\"Mixpanel Server Error: \" + result.error);\n }\n }\n catch(ex) {\n e = new Error(\"Could not parse response from Mixpanel\");\n }\n }\n else {\n e = (text !== '1') ? new Error(\"Mixpanel Server Error: \" + text) : undefined;\n }\n\n callback(e);\n })\n .catch(e => {\n console.log('error', e)\n if (metrics.config.debug) {\n console.log(\"Got Error: \" + e.message);\n }\n callback(e);\n })\n };\n\n /**\n * Send an event to Mixpanel, using the specified endpoint (e.g., track/import)\n * @param {string} endpoint - API endpoint name\n * @param {string} event - event name\n * @param {object} properties - event properties\n * @param {Function} [callback] - callback for request completion/error\n */\n metrics.send_event_request = function(endpoint, event, properties, callback) {\n properties.token = metrics.token;\n properties.mp_lib = \"node\";\n\n var data = {\n event: event,\n properties: properties\n };\n\n if (metrics.config.debug) {\n console.log(\"Sending the following event to Mixpanel:\\n\", data);\n }\n\n metrics.send_request({ method: \"GET\", endpoint: endpoint, data: data }, callback);\n };\n\n /**\n * breaks array into equal-sized chunks, with the last chunk being the remainder\n * @param {Array} arr\n * @param {number} size\n * @returns {Array}\n */\n var chunk = function(arr, size) {\n var chunks = [],\n i = 0,\n total = arr.length;\n\n while (i < total) {\n chunks.push(arr.slice(i, i += size));\n }\n return chunks;\n };\n\n /**\n * sends events in batches\n * @param {object} options\n * @param {[{}]} options.event_list array of event objects\n * @param {string} options.endpoint e.g. `/track` or `/import`\n * @param {number} [options.max_concurrent_requests] limits concurrent async requests over the network\n * @param {number} [options.max_batch_size] limits number of events sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n *\n */\n var send_batch_requests = function(options, callback) {\n var event_list = options.event_list,\n endpoint = options.endpoint,\n max_batch_size = options.max_batch_size ? Math.min(MAX_BATCH_SIZE, options.max_batch_size) : MAX_BATCH_SIZE,\n // to maintain original intention of max_batch_size; if max_batch_size is greater than 50, we assume the user is trying to set max_concurrent_requests\n max_concurrent_requests = options.max_concurrent_requests || (options.max_batch_size > MAX_BATCH_SIZE && Math.ceil(options.max_batch_size / MAX_BATCH_SIZE)),\n event_batches = chunk(event_list, max_batch_size),\n request_batches = max_concurrent_requests ? chunk(event_batches, max_concurrent_requests) : [event_batches],\n total_event_batches = event_batches.length,\n total_request_batches = request_batches.length;\n\n /**\n * sends a batch of events to mixpanel through http api\n * @param {Array} batch\n * @param {Function} cb\n */\n function send_event_batch(batch, cb) {\n if (batch.length > 0) {\n batch = batch.map(function (event) {\n var properties = event.properties;\n\n if (endpoint === '/import' || event.properties.time) {\n // usually there will be a time property, but not required for `/track` endpoint\n event.properties.time = ensure_timestamp(event.properties.time);\n }\n event.properties.token = event.properties.token || metrics.token;\n return event;\n });\n\n // must be a POST\n metrics.send_request({ method: \"POST\", endpoint: endpoint, data: batch }, cb);\n }\n }\n\n /**\n * Asynchronously sends batches of requests\n * @param {number} index\n */\n function send_next_request_batch(index) {\n var request_batch = request_batches[index],\n cb = function (errors, results) {\n index += 1;\n if (index === total_request_batches) {\n callback && callback(errors, results);\n } else {\n send_next_request_batch(index);\n }\n };\n\n async_all(request_batch, send_event_batch, cb);\n }\n\n // init recursive function\n send_next_request_batch(0);\n\n if (metrics.config.debug) {\n console.log(\n \"Sending \" + event_list.length + \" events to Mixpanel in \" +\n total_event_batches + \" batches of events and \" +\n total_request_batches + \" batches of requests\"\n );\n }\n };\n\n /**\n track(event, properties, callback)\n ---\n this function sends an event to mixpanel.\n\n event:string the event name\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.track = function(event, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n // time is optional for `track` but must be less than 5 days old if set\n if (properties.time) {\n properties.time = ensure_timestamp(properties.time);\n if (properties.time < Date.now() / 1000 - TRACK_AGE_LIMIT) {\n throw new Error(\"`track` not allowed for event more than 5 days old; use `mixpanel.import()`\");\n }\n }\n\n metrics.send_event_request(\"/track\", event, properties, callback);\n };\n\n /**\n * send a batch of events to mixpanel `track` endpoint: this should only be used if events are less than 5 days old\n * @param {Array} event_list array of event objects to track\n * @param {object} [options]\n * @param {number} [options.max_concurrent_requests] number of concurrent http requests that can be made to mixpanel\n * @param {number} [options.max_batch_size] number of events that can be sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n */\n metrics.track_batch = function(event_list, options, callback) {\n options = options || {};\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n var batch_options = {\n event_list: event_list,\n endpoint: \"/track\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size\n };\n\n send_batch_requests(batch_options, callback);\n };\n\n /**\n import(event, time, properties, callback)\n ---\n This function sends an event to mixpanel using the import\n endpoint. The time argument should be either a Date or Number,\n and should signify the time the event occurred.\n\n It is highly recommended that you specify the distinct_id\n property for each event you import, otherwise the events will be\n tied to the IP address of the sending machine.\n\n For more information look at:\n https://mixpanel.com/docs/api-documentation/importing-events-older-than-31-days\n\n event:string the event name\n time:date|number the time of the event\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.import = function(event, time, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n properties.time = ensure_timestamp(time);\n\n metrics.send_event_request(\"/import\", event, properties, callback);\n };\n\n /**\n import_batch(event_list, options, callback)\n ---\n This function sends a list of events to mixpanel using the import\n endpoint. The format of the event array should be:\n\n [\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date(), // Number or Date; required for each event\n \"key\": \"val\",\n ...\n }\n },\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date() // Number or Date; required for each event\n }\n },\n ...\n ]\n\n See import() for further information about the import endpoint.\n\n Options:\n max_batch_size: the maximum number of events to be transmitted over\n the network simultaneously. useful for capping bandwidth\n usage.\n max_concurrent_requests: the maximum number of concurrent http requests that\n can be made to mixpanel; also useful for capping bandwidth.\n\n N.B.: the Mixpanel API only accepts 50 events per request, so regardless\n of max_batch_size, larger lists of events will be chunked further into\n groups of 50.\n\n event_list:array list of event names and properties\n options:object optional batch configuration\n callback:function(error_list:array) callback is called when the request is\n finished or an error occurs\n */\n metrics.import_batch = function(event_list, options, callback) {\n var batch_options;\n\n if (typeof(options) === \"function\" || !options) {\n callback = options;\n options = {};\n }\n batch_options = {\n event_list: event_list,\n endpoint: \"/import\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size\n };\n send_batch_requests(batch_options, callback);\n };\n\n /**\n alias(distinct_id, alias)\n ---\n This function creates an alias for distinct_id\n\n For more information look at:\n https://mixpanel.com/docs/integration-libraries/using-mixpanel-alias\n\n distinct_id:string the current identifier\n alias:string the future alias\n */\n metrics.alias = function(distinct_id, alias, callback) {\n var properties = {\n distinct_id: distinct_id,\n alias: alias\n };\n\n metrics.track('$create_alias', properties, callback);\n };\n\n metrics.identify = function(identified_id, anon_id, callback) {\n var properties = {\n distinct_id: identified_id,\n $identified_id: identified_id,\n $anon_id: anon_id \n };\n\n metrics.track('$identify', properties, callback);\n };\n\n metrics.groups = new MixpanelGroups(metrics);\n metrics.people = new MixpanelPeople(metrics);\n\n /**\n set_config(config)\n ---\n Modifies the mixpanel config\n\n config:object an object with properties to override in the\n mixpanel client config\n */\n metrics.set_config = function(config) {\n Object.assign(metrics.config, config);\n if (config.host) {\n // Split host into host and port\n const [host, port] = config.host.split(':');\n metrics.config.host = host;\n if (port) {\n metrics.config.port = Number(port);\n }\n }\n };\n\n if (config) {\n metrics.set_config(config);\n }\n\n return metrics;\n};\n\n// module exporting\nmodule.exports = {\n Client: function(token) {\n console.warn(\"The function `Client(token)` is deprecated. It is now called `init(token)`.\");\n return create_client(token);\n },\n init: create_client\n};\n","const {merge_modifiers, ProfileHelpers} = require('./profile_helpers');\n\nclass MixpanelPeople extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = '/engage';\n }\n\n /** people.set_once(distinct_id, prop, to, modifiers, callback)\n ---\n The same as people.set but in the words of mixpanel:\n mixpanel.people.set_once\n\n \" This method allows you to set a user attribute, only if\n it is not currently set. It can be called multiple times\n safely, so is perfect for storing things like the first date\n you saw a user, or the referrer that brought them to your\n website for the first time. \"\n\n */\n set_once(distinct_id, prop, to, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._set(prop, to, modifiers, callback, {identifiers, set_once: true});\n }\n\n /**\n people.set(distinct_id, prop, to, modifiers, callback)\n ---\n set properties on an user record in engage\n\n usage:\n\n mixpanel.people.set('bob', 'gender', 'm');\n\n mixpanel.people.set('joe', {\n 'company': 'acme',\n 'plan': 'premium'\n });\n */\n set(distinct_id, prop, to, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._set(prop, to, modifiers, callback, {identifiers});\n }\n\n /**\n people.increment(distinct_id, prop, by, modifiers, callback)\n ---\n increment/decrement properties on an user record in engage\n\n usage:\n\n mixpanel.people.increment('bob', 'page_views', 1);\n\n // or, for convenience, if you're just incrementing a counter by 1, you can\n // simply do\n mixpanel.people.increment('bob', 'page_views');\n\n // to decrement a counter, pass a negative number\n mixpanel.people.increment('bob', 'credits_left', -1);\n\n // like mixpanel.people.set(), you can increment multiple properties at once:\n mixpanel.people.increment('bob', {\n counter1: 1,\n counter2: 3,\n counter3: -2\n });\n */\n increment(distinct_id, prop, by, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n var $add = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(by) === 'object') {\n callback = modifiers;\n modifiers = by;\n } else {\n callback = by;\n }\n for (const [key, val] of Object.entries(prop)) {\n if (isNaN(parseFloat(val))) {\n if (this.mixpanel.config.debug) {\n console.error(\"Invalid increment value passed to mixpanel.people.increment - must be a number\");\n console.error(\"Passed \" + key + \":\" + val);\n }\n } else {\n $add[key] = val;\n }\n };\n } else {\n if (typeof(by) === 'number' || !by) {\n by = by || 1;\n $add[prop] = by;\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n } else if (typeof(by) === 'function') {\n callback = by;\n $add[prop] = 1;\n } else {\n callback = modifiers;\n modifiers = (typeof(by) === 'object') ? by : {};\n $add[prop] = 1;\n }\n }\n\n var data = {\n '$add': $add,\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n console.log(\"Sending the following data to Mixpanel (Engage):\");\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.append(distinct_id, prop, value, modifiers, callback)\n ---\n Append a value to a list-valued people analytics property.\n\n usage:\n\n // append a value to a list, creating it if needed\n mixpanel.people.append('bob', 'pages_visited', 'homepage');\n\n // like mixpanel.people.set(), you can append multiple properties at once:\n mixpanel.people.append('bob', {\n list1: 'bob',\n list2: 123\n });\n */\n append(distinct_id, prop, value, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n var $append = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(value) === 'object') {\n callback = modifiers;\n modifiers = value;\n } else {\n callback = value;\n }\n Object.keys(prop).forEach(function(key) {\n $append[key] = prop[key];\n });\n } else {\n $append[prop] = value;\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n }\n\n var data = {\n '$append': $append,\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n console.log(\"Sending the following data to Mixpanel (Engage):\");\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.track_charge(distinct_id, amount, properties, modifiers, callback)\n ---\n Record that you have charged the current user a certain\n amount of money.\n\n usage:\n\n // charge a user $29.99\n mixpanel.people.track_charge('bob', 29.99);\n\n // charge a user $19 on the 1st of february\n mixpanel.people.track_charge('bob', 19, { '$time': new Date('feb 1 2012') });\n */\n track_charge(distinct_id, amount, properties, modifiers, callback) {\n if (typeof(properties) === 'function' || !properties) {\n callback = properties || function() {};\n properties = {};\n } else {\n if (typeof(modifiers) === 'function' || !modifiers) {\n callback = modifiers || function() {};\n if (properties.$ignore_time || properties.hasOwnProperty(\"$ip\")) {\n modifiers = {};\n Object.keys(properties).forEach(function(key) {\n modifiers[key] = properties[key];\n delete properties[key];\n });\n }\n }\n }\n\n if (typeof(amount) !== 'number') {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n console.error(\"Invalid value passed to mixpanel.people.track_charge - must be a number\");\n return;\n }\n }\n\n properties.$amount = amount;\n\n if (properties.hasOwnProperty('$time')) {\n var time = properties.$time;\n if (Object.prototype.toString.call(time) === '[object Date]') {\n properties.$time = time.toISOString();\n }\n }\n\n var data = {\n '$append': { '$transactions': properties },\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n console.log(\"Sending the following data to Mixpanel (Engage):\");\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.clear_charges(distinct_id, modifiers, callback)\n ---\n Clear all the current user's transactions.\n\n usage:\n\n mixpanel.people.clear_charges('bob');\n */\n clear_charges(distinct_id, modifiers, callback) {\n var data = {\n '$set': { '$transactions': [] },\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n if (typeof(modifiers) === 'function') { callback = modifiers; }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n console.log(\"Clearing this user's charges:\", distinct_id);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.delete_user(distinct_id, modifiers, callback)\n ---\n delete an user record in engage\n\n usage:\n\n mixpanel.people.delete_user('bob');\n */\n delete_user(distinct_id, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._delete_profile({identifiers, modifiers, callback});\n }\n\n /**\n people.remove(distinct_id, data, modifiers, callback)\n ---\n remove a value from a list-valued user profile property.\n\n usage:\n\n mixpanel.people.remove('bob', {'browsers': 'firefox'});\n\n mixpanel.people.remove('bob', {'browsers': 'chrome', 'os': 'linux'});\n */\n remove(distinct_id, data, modifiers, callback) {\n const identifiers = {'$distinct_id': distinct_id};\n this._remove({identifiers, data, modifiers, callback})\n }\n\n /**\n people.union(distinct_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued people analytics property.\n\n usage:\n\n mixpanel.people.union('bob', {'browsers': 'firefox'});\n\n mixpanel.people.union('bob', {'browsers': ['chrome'], os: ['linux']});\n */\n union(distinct_id, data, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._union({identifiers, data, modifiers, callback});\n }\n\n /**\n people.unset(distinct_id, prop, modifiers, callback)\n ---\n delete a property on an user record in engage\n\n usage:\n\n mixpanel.people.unset('bob', 'page_views');\n\n mixpanel.people.unset('bob', ['page_views', 'last_login']);\n */\n unset(distinct_id, prop, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._unset({identifiers, prop, modifiers, callback});\n }\n};\n\nexports.MixpanelPeople = MixpanelPeople;\n","/**\n * Mixin with profile-related helpers (for people and groups)\n */\n\nconst {ensure_timestamp} = require('./utils');\n\nfunction merge_modifiers(data, modifiers) {\n if (modifiers) {\n if (modifiers.$ignore_alias) {\n data.$ignore_alias = modifiers.$ignore_alias;\n }\n if (modifiers.$ignore_time) {\n data.$ignore_time = modifiers.$ignore_time;\n }\n if (modifiers.hasOwnProperty(\"$ip\")) {\n data.$ip = modifiers.$ip;\n }\n if (modifiers.hasOwnProperty(\"$time\")) {\n data.$time = ensure_timestamp(modifiers.$time);\n }\n }\n return data;\n};\nexports.merge_modifiers = merge_modifiers;\n\nexports.ProfileHelpers = (Base = Object) => class extends Base {\n get token() {\n return this.mixpanel.token;\n }\n\n get config() {\n return this.mixpanel.config;\n }\n\n _set(prop, to, modifiers, callback, {identifiers, set_once = false}) {\n let $set = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(to) === 'object') {\n callback = modifiers;\n modifiers = to;\n } else {\n callback = to;\n }\n $set = prop;\n } else {\n $set[prop] = to;\n if (typeof(modifiers) === 'function' || !modifiers) {\n callback = modifiers;\n }\n }\n\n let data = {\n '$token': this.token,\n ...identifiers,\n };\n\n const set_key = set_once ? \"$set_once\" : \"$set\";\n data[set_key] = $set;\n\n if ('ip' in $set) {\n data.$ip = $set.ip;\n delete $set.ip;\n }\n\n if ($set.$ignore_time) {\n data.$ignore_time = $set.$ignore_time;\n delete $set.$ignore_time;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n console.log(`Sending the following data to Mixpanel (${this.endpoint}):`);\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _delete_profile({identifiers, modifiers, callback}){\n let data = {\n '$delete': '',\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') { callback = modifiers; }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n console.log(`Deleting profile ${JSON.stringify(identifiers)}`);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _remove({identifiers, data, modifiers, callback}) {\n let $remove = {};\n\n if (typeof(data) !== 'object' || Array.isArray(data)) {\n if (this.config.debug) {\n console.error(\"Invalid value passed to #remove - data must be an object with scalar values\");\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (typeof(val) === 'string' || typeof(val) === 'number') {\n $remove[key] = val;\n } else {\n if (this.config.debug) {\n console.error(\"Invalid argument passed to #remove - values must be scalar\");\n console.error(\"Passed \" + key + ':', val);\n }\n return;\n }\n }\n\n if (Object.keys($remove).length === 0) {\n return;\n }\n\n data = {\n '$remove': $remove,\n '$token': this.token,\n ...identifiers\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n console.log(`Sending the following data to Mixpanel (${this.endpoint}):`);\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _union({identifiers, data, modifiers, callback}) {\n let $union = {};\n\n if (typeof(data) !== 'object' || Array.isArray(data)) {\n if (this.config.debug) {\n console.error(\"Invalid value passed to #union - data must be an object with scalar or array values\");\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (Array.isArray(val)) {\n var merge_values = val.filter(function(v) {\n return typeof(v) === 'string' || typeof(v) === 'number';\n });\n if (merge_values.length > 0) {\n $union[key] = merge_values;\n }\n } else if (typeof(val) === 'string' || typeof(val) === 'number') {\n $union[key] = [val];\n } else {\n if (this.config.debug) {\n console.error(\"Invalid argument passed to #union - values must be a scalar value or array\");\n console.error(\"Passed \" + key + ':', val);\n }\n }\n }\n\n if (Object.keys($union).length === 0) {\n return;\n }\n\n data = {\n '$union': $union,\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n console.log(`Sending the following data to Mixpanel (${this.endpoint}):`);\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _unset({identifiers, prop, modifiers, callback}){\n let $unset = [];\n\n if (Array.isArray(prop)) {\n $unset = prop;\n } else if (typeof(prop) === 'string') {\n $unset = [prop];\n } else {\n if (this.config.debug) {\n console.error(\"Invalid argument passed to #unset - must be a string or array\");\n console.error(\"Passed: \" + prop);\n }\n return;\n }\n\n let data = {\n '$unset': $unset,\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n console.log(`Sending the following data to Mixpanel (${this.endpoint}):`);\n console.log(data);\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n};\n","/**\n * helper to wait for all callbacks to complete; similar to `Promise.all`\n * exposed to metrics object for unit tests\n * @param {Array} requests\n * @param {Function} handler\n * @param {Function} callback\n */\nexports.async_all = function(requests, handler, callback) {\n var total = requests.length,\n errors = null,\n results = [],\n done = function (err, result) {\n if (err) {\n // errors are `null` unless there is an error, which allows for promisification\n errors = errors || [];\n errors.push(err);\n }\n results.push(result);\n if (--total === 0) {\n callback(errors, results)\n }\n };\n\n if (total === 0) {\n callback(errors, results);\n } else {\n for(var i = 0, l = requests.length; i < l; i++) {\n handler(requests[i], done);\n }\n }\n};\n\n/**\n * Validate type of time property, and convert to Unix timestamp if necessary\n * @param {Date|number} time - value to check\n * @returns {number} Unix timestamp\n */\nexports.ensure_timestamp = function(time) {\n if (!(time instanceof Date || typeof time === \"number\")) {\n throw new Error(\"`time` property must be a Date or Unix timestamp and is only required for `import` endpoint\");\n }\n return time instanceof Date ? Math.floor(time.getTime() / 1000) : time;\n};\n","import {\n ArgumentError,\n getDifferenceBetweenWeekdays,\n DateAdapterBase as DateAdapterBase$1,\n dateInputToDateTime,\n dateInputToDateAdapter,\n normalizeDateTimeTimezone as normalizeDateTimeTimezone$1,\n InfiniteLoopError,\n dateTimeSortComparer,\n cloneRuleOptions,\n normalizeRuleOptions,\n RecurrenceRulesIterator,\n recurrenceRulesReducer,\n DateTime as DateTime$1,\n} from '@rschedule/core';\n\nclass OccurrenceGenerator {\n constructor(args = {}) {\n this.timezone = args.timezone !== undefined ? args.timezone : null;\n this.maxDuration = args.maxDuration || 0;\n }\n /** Returns the first occurrence or, if there are no occurrences, null. */\n get firstDate() {\n if (this._firstDate !== undefined) return this._firstDate;\n const start = this._run().next().value;\n this._firstDate = start ? this.dateAdapter.fromDateTime(start) : null;\n return this._firstDate;\n }\n /** If generator is infinite, returns `null`. Otherwise returns the end date */\n get lastDate() {\n if (this._lastDate !== undefined) return this._lastDate;\n if (this.isInfinite) {\n this._lastDate = null;\n return null;\n }\n const end = this._run({ reverse: true }).next().value;\n this._lastDate = end ? this.dateAdapter.fromDateTime(end) : null;\n return this._lastDate;\n }\n pipe(...operators) {\n return operators.reduce((prev, curr) => curr({ base: prev, timezone: this.timezone }), this);\n }\n /**\n * Processes the object's rules/dates and returns an iterable for the occurrences.\n *\n * Options object:\n * - `start` the date to begin iteration on\n * - `end` the date to end iteration on\n * - `take` the max number of dates to take before ending iteration\n * - `reverse` whether to iterate in reverse or not\n *\n * Examples:\n *\n * ```\n * const iterator = schedule.occurrences({ start: new Date(), take: 5 });\n \n * for (const date of iterator) {\n * // do stuff\n * }\n \n * iterator.toArray() // returns Date array\n * iterator.next().value // returns next Date\n * ```\n *\n */\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n /**\n * Iterates over the object's occurrences and bundles them into collections\n * with a specified granularity (default is `\"YEARLY\"`). Make sure to\n * read about each option & combination of options below.\n *\n * Options object:\n * - start?: DateAdapter\n * - end?: DateAdapter\n * - take?: number\n * - reverse?: NOT SUPPORTED\n * - granularity?: CollectionsGranularity\n * - weekStart?: DateAdapter.Weekday\n * - skipEmptyPeriods?: boolean\n *\n * Returned `Collection` object:\n *\n * - `dates` property containing an array of DateAdapter objects.\n * - `granularity` property containing the granularity.\n * - `CollectionsGranularity` === `RuleOptions.Frequency`.\n * - default is `\"YEARLY\"`\n * - `periodStart` property containing a DateAdapter equal to the period's\n * start time.\n * - `periodEnd` property containing a DateAdapter equal to the period's\n * end time.\n *\n * #### Details:\n *\n * `collections()` always returns full periods. This means that the `start` argument is\n * transformed to be the start of whatever period the `start` argument is in, and the\n * `end` argument is transformed to be the end of whatever period the `end` argument is\n * in.\n *\n * - Example: with granularity `\"YEARLY\"`, the `start` argument will be transformed to be the\n * start of the year passed in the `start` argument, and the `end` argument will be transformed\n * to be the end of the year passed in the `end` argument.\n *\n * By default, the `periodStart` value of `Collection` objects produced by this method increments linearly.\n * This means the returned `Collection#dates` property may have length 0. This can be changed by\n * passing the `skipEmptyPeriods: true` option, in which case the `periodStart` from one collection to the\n * next can \"jump\".\n *\n * - Example 1: if your object's first occurrence is 2019/2/1 (February 1st) and you call\n * `collection({skipEmptyPeriods: true, granularity: 'DAILY', start: new Date(2019,0,1)})`\n * (so starting on January 1st), the first Collection produced will have a `periodStart` in February.\n *\n * - Example 2: if your object's first occurrence is 2019/2/1 (February 1st) and you call\n * `collection({granularity: 'DAILY', start: new Date(2019,0,1)})`\n * (so starting on January 1st), the first collection produced will have a `Collection#periodStart`\n * of January 1st and have `Collection#dates === []`. Similarly, the next 30 collections produced\n * (Jan 2nd - 31st) will all contain an empty array for the `dates` property. Then the February 1st\n * `Collection` will contain dates.\n *\n * When giving a `take` argument to `collections()`, you are specifying\n * the number of `Collection` objects to return (rather than occurrences).\n *\n * When choosing a granularity of `\"WEEKLY\"`, the `weekStart` option is required.\n *\n * When choosing a granularity of `\"MONTHLY\"`:\n *\n * - If the `weekStart` option *is not* present, will generate collections with\n * the `periodStart` and `periodEnd` at the beginning and end of each month.\n *\n * - If the `weekStart` option *is* present, will generate collections with the\n * `periodStart` equal to the start of the first week of the month, and the\n * `periodEnd` equal to the end of the last week of the month. This behavior could be\n * desired when rendering opportunities in a calendar view, where the calendar renders\n * full weeks (which may result in the calendar displaying dates in the\n * previous or next months).\n *\n */\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n /**\n * Returns true if an occurrence starts on or between the provided start/end\n * datetimes. If the `excludeEnds` option is provided, then occurrences\n * equal to the start/end times are ignored.\n *\n * If the occurrence generator has a duration, and `excludeEnds !== true`,\n * and a `maxDuration` argument is supplied (either in the constructor or\n * here), then any occurrence that's time overlaps with the start/end times\n * return true.\n */\n occursBetween(startInput, endInput, options = {}) {\n const start = this.normalizeDateInput(startInput);\n const end = this.normalizeDateInput(endInput);\n if (this.hasDuration && !options.excludeEnds) {\n const maxDuration = this.getMaxDuration('occursBetween', options);\n const iterator = this._run({\n start: start.subtract(maxDuration, 'millisecond'),\n end,\n reverse: true,\n });\n for (const day of iterator) {\n if (day.end.isBefore(start)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start, end })) {\n if (options.excludeEnds) {\n if (day.isEqual(start)) {\n continue;\n }\n if (day.isEqual(end)) {\n break;\n }\n }\n return true;\n }\n return false;\n }\n occursOn(rawArgs) {\n const args = this.normalizeOccursOnArgs(rawArgs);\n if (args.weekday) {\n if (this.isInfinite && !args.before) {\n throw new ArgumentError(\n 'When calling `occursOn()` with a `weekday` argument ' +\n 'and an occurrence object that has infinite occurrences, ' +\n 'you must include a `before` argument as well.',\n );\n }\n const start = args.after && (args.excludeEnds ? args.after.add(1, 'day') : args.after);\n const end = args.before && (args.excludeEnds ? args.before.subtract(1, 'day') : args.before);\n const iterator = this._run({ start, end });\n let date = iterator.next().value;\n if (!date) return false;\n while (date) {\n if (date.get('weekday') === args.weekday) {\n return true;\n }\n date = iterator.next({\n skipToDate: date\n .add(getDifferenceBetweenWeekdays(date.get('weekday'), args.weekday), 'day')\n .granularity('day'),\n }).value;\n }\n return false;\n }\n if (!args.date) {\n throw new ArgumentError(\n `\"occursOn()\" must be called with either a \"date\" or \"weekday\" argument`,\n );\n }\n if (this.hasDuration) {\n const maxDuration = this.getMaxDuration('occursOn', args);\n const iterator = this._run({\n start: args.date.subtract(maxDuration, 'millisecond'),\n end: args.date,\n });\n for (const date of iterator) {\n if (date.end.isBefore(args.date)) continue;\n if (date.isAfter(args.date)) return false;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start: args.date, end: args.date })) {\n return !!day;\n }\n return false;\n }\n /**\n * Returns true if an occurrence starts after the provided datetime.\n * If the `excludeStart` option is provided, then occurrences\n * equal to the provided datetime are ignored.\n *\n * If the occurrence generator has a duration, and `excludeStart !== true`,\n * and a `maxDuration` argument is supplied (either in the constructor or\n * here), then any occurrence that's end time is after/equal to the provided\n * datetime return true.\n */\n occursAfter(date, options = {}) {\n const adapter = this.normalizeDateInput(date);\n if (this.hasDuration && !options.excludeStart) {\n const maxDuration = this.getMaxDuration('occursAfter', options);\n const iterator = this._run({\n start: adapter.subtract(maxDuration, 'millisecond'),\n });\n for (const date of iterator) {\n if (date.end.isBefore(adapter)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ start: adapter })) {\n if (options.excludeStart && day.isEqual(adapter)) {\n continue;\n }\n return true;\n }\n return false;\n }\n /**\n * Returns true if an occurrence starts before the provided datetime.\n * If the `excludeStart` option is provided, then occurrences\n * equal to the provided datetime are ignored.\n *\n * If the occurrence generator has a duration, and `excludeStart` is\n * also provided, then this will only return true if an occurrence\n * both starts and ends before the provided datetime.\n */\n occursBefore(date, options = {}) {\n const adapter = this.normalizeDateInput(date);\n if (this.hasDuration && options.excludeStart) {\n for (const day of this._run({ end: adapter, reverse: true })) {\n if (day.end.isAfterOrEqual(adapter)) continue;\n return true;\n }\n return false;\n }\n for (const day of this._run({ end: adapter, reverse: true })) {\n if (options.excludeStart && day.isEqual(adapter)) {\n continue;\n }\n return true;\n }\n return false;\n }\n get dateAdapter() {\n return DateAdapterBase$1.adapter;\n }\n normalizeOccurrencesArgs(rawArgs) {\n return Object.assign(Object.assign({}, rawArgs), {\n start: this.normalizeDateInput(rawArgs.start),\n end: this.normalizeDateInput(rawArgs.end),\n });\n }\n normalizeCollectionsArgs(rawArgs) {\n if (rawArgs.reverse !== undefined) {\n throw new ArgumentError(\n '`collections()` does not support the `reverse` option at this time.',\n );\n }\n return Object.assign(Object.assign({}, rawArgs), {\n start: this.normalizeDateInput(rawArgs.start),\n end: this.normalizeDateInput(rawArgs.end),\n });\n }\n normalizeOccursOnArgs(rawArgs = {}) {\n return Object.assign(Object.assign({}, rawArgs), {\n date: this.normalizeDateInput(rawArgs.date),\n after: this.normalizeDateInput(rawArgs.after),\n before: this.normalizeDateInput(rawArgs.before),\n excludeDates:\n rawArgs.excludeDates && rawArgs.excludeDates.map(date => this.normalizeDateInput(date)),\n });\n }\n normalizeRunArgs(args) {\n return Object.assign(Object.assign({}, args), {\n start: this.normalizeDateInput(args.start),\n end: this.normalizeDateInput(args.end),\n });\n }\n normalizeDateInput(date) {\n return date ? dateInputToDateTime(date, this.timezone) : undefined;\n }\n normalizeDateInputToAdapter(date) {\n if (!date) return;\n return dateInputToDateAdapter(date);\n }\n normalizeRunOutput(date) {\n return normalizeDateTimeTimezone$1(date, this.timezone);\n }\n getMaxDuration(method, options) {\n const maxDuration = options.maxDuration || this.maxDuration;\n if (!Number.isInteger(maxDuration)) {\n throw new ArgumentError(\n `When an occurrence generator ` +\n `has a duration, a 'maxDuration' argument must be supplied ` +\n `to ${method}().`,\n );\n }\n return maxDuration;\n }\n}\nclass OccurrenceIterator {\n constructor(iterable, args) {\n this.iterable = iterable;\n this.args = args;\n // Need to assert the return type of these methods to prevent typescript from\n // incorrectly reducing them to `DateAdapterBase & { generators: G }`.\n this[Symbol.iterator] = () => this.occurrenceIterator();\n this.iterator = iterable._run(args);\n this.isInfinite = iterable.isInfinite;\n }\n next(args) {\n return this.occurrenceIterator(args).next();\n }\n toArray() {\n if (this.args.end || this.args.take || !this.isInfinite) {\n return Array.from(this.occurrenceIterator());\n }\n throw new InfiniteLoopError(\n 'OccurrenceIterator#toArray() can only be called if the iterator ' +\n 'is not infinite, or you provide and `end` argument, or you provide ' +\n 'a `take` argument.',\n );\n }\n *occurrenceIterator(rawArgs) {\n let args = this.normalizeRunArgs(rawArgs);\n let date = this.iterator.next(args).value;\n while (date) {\n const yieldArgs = yield this.normalizeDateOutput(date);\n args = this.normalizeRunArgs(yieldArgs);\n date = this.iterator.next(args).value;\n }\n return undefined;\n }\n normalizeRunArgs(args) {\n return {\n skipToDate: this.normalizeDateInput(args && args.skipToDate),\n };\n }\n normalizeDateInput(date) {\n return date ? dateInputToDateTime(date, this.iterable.timezone) : undefined;\n }\n normalizeDateOutput(date) {\n if (!date) return;\n return date ? DateAdapterBase$1.adapter.fromDateTime(date) : undefined;\n }\n}\nclass Collection {\n constructor(dates = [], granularity, periodStart, periodEnd) {\n this.dates = dates;\n this.granularity = granularity;\n this.periodStart = periodStart;\n this.periodEnd = periodEnd;\n }\n}\nclass CollectionIterator {\n constructor(iterable, args) {\n this.iterable = iterable;\n this.args = args;\n this.granularity = 'year';\n this[Symbol.iterator] = () => this.iterator;\n if (args.granularity) {\n this.granularity = args.granularity;\n if (this.granularity === 'week' && !args.weekStart) {\n throw new Error('\"week\" granularity requires `weekStart` arg');\n }\n }\n if (args.weekStart) {\n this.weekStart = args.weekStart;\n }\n if (args.reverse) {\n throw new Error(\n '`OccurrenceGenerator#collections()` does not support iterating in reverse. ' +\n 'Though `OccurrenceGenerator#occurrences()` does support iterating in reverse.',\n );\n }\n // Set the end arg, if present, to the end of the period.\n this.args = Object.assign(Object.assign({}, args), {\n start: args.start || iterable._run().next().value,\n end: args.end && this.getPeriod(args.end).end,\n });\n this.startDate =\n (this.args.start && this.normalizeDateOutput(this.getPeriod(this.args.start).start)) || null;\n this.iterator = this.collectionIterator();\n }\n next() {\n return this.iterator.next();\n }\n /**\n * While `next()` and `[Symbol.iterator]` both share state,\n * `toArray()` does not share state and always returns the whole\n * collections array.\n */\n toArray() {\n if (this.args.end || this.args.take || !this.iterable.isInfinite) {\n const collections = [];\n for (const collection of this.collectionIterator()) {\n collections.push(collection);\n }\n return collections;\n }\n throw new InfiniteLoopError(\n 'CollectionIterator#toArray() can only be called if the iterator ' +\n 'is not infinite, or you provide and `end` argument, or you provide ' +\n 'a `take` argument.',\n );\n }\n normalizeDateOutput(date) {\n if (!date) return;\n return DateAdapterBase$1.adapter.fromDateTime(date);\n }\n *collectionIterator() {\n if (!this.startDate) return;\n let iterator = this.occurrenceIterator();\n let date = iterator.next().value;\n if (!date) return;\n // `period` === `periodStart` unless the granularity\n // is `MONTHLY` and a `weekStart` param was provided. In this case,\n // period holds a date === the first of the current month while\n // periodStart holds a date === the beginning of the first week of the month\n // (which might be in the the previous month). Read the\n // `OccurrenceGenerator#collections()` description for more info.\n let period = this.getPeriod(this.args.start);\n let dates = [];\n let index = 0;\n while (date && (this.args.take === undefined || this.args.take > index)) {\n while (date && date.isBeforeOrEqual(period.end)) {\n dates.push(date);\n date = iterator.next().value;\n }\n yield new Collection(\n dates.map(date => this.normalizeDateOutput(date)),\n this.granularity,\n this.normalizeDateOutput(period.start),\n this.normalizeDateOutput(period.end),\n );\n if (!date) return;\n dates = [];\n period = !this.args.skipEmptyPeriods\n ? this.getPeriod(this.incrementPeriod(period.period))\n : this.getPeriod(date);\n // With these args, periods may overlap and the same date may show up\n // in two periods. Because of this, we need to reset the iterator\n // (otherwise it won't return a date it has already returned).\n if (this.granularity === 'month' && this.weekStart) {\n iterator = this.iterable._run({\n start: period.start,\n end: this.args.end,\n });\n date = iterator.next().value;\n }\n index++;\n }\n }\n getPeriod(date) {\n let start;\n let end;\n let period;\n if (this.granularity === 'month' && this.weekStart) {\n start = date.granularity('month').granularity('week', { weekStart: this.weekStart });\n end = date.endGranularity('month').endGranularity('week', { weekStart: this.weekStart });\n period = date.granularity('month');\n } else {\n start = date.granularity(this.granularity, { weekStart: this.weekStart });\n end = date.endGranularity(this.granularity, { weekStart: this.weekStart });\n period = start;\n }\n return { start, end, period };\n }\n incrementPeriod(date) {\n return date.add(1, this.granularity);\n }\n occurrenceIterator() {\n let start = this.args.start || this.iterable._run().next().value;\n if (!start) return this.iterable._run(this.args);\n start = this.getPeriod(start).start;\n return this.iterable._run({\n start,\n end: this.args.end,\n });\n }\n}\nclass Operator extends OccurrenceGenerator {\n constructor(streams, config) {\n super(config);\n this.streams = streams;\n this.config = config;\n this.timezone = config.timezone;\n this.streams = streams.map(stream =>\n stream instanceof Operator ? stream : stream.set('timezone', this.timezone),\n );\n this.isInfinite = this.calculateIsInfinite();\n this.hasDuration = this.calculateHasDuration();\n }\n normalizeDateInput(date) {\n if (!date) return;\n return dateInputToDateTime(date, this.timezone);\n }\n normalizeRunOutput(date) {\n return normalizeDateTimeTimezone$1(date, this.timezone);\n }\n}\n\n/**\n * Simple class that lets us access the `value`, `runArgs`, and `done`\n * status of an OccurrenceGenerator iterator\n */\nclass IterableWrapper {\n constructor(generator, runArgs) {\n this.runArgs = runArgs;\n this.stream = generator._run(this.runArgs);\n this.next();\n }\n next(args) {\n const { done, value } = this.stream.next(args);\n this.done = typeof done === 'boolean' ? done : true;\n this.value = value;\n return { done, value };\n }\n}\nfunction processYieldArgs(streams, options = {}, yieldArgs = {}) {\n if (!yieldArgs.skipToDate || streams.length === 0) return;\n // check for invalid `skipToDate` option\n if (\n options.reverse\n ? streams.every(s => s.value.isBeforeOrEqual(yieldArgs.skipToDate))\n : streams.every(s => s.value.isAfterOrEqual(yieldArgs.skipToDate))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n for (const stream of streams) {\n if (stream.done) continue; // no point in calling `next()`\n if (\n options.reverse\n ? stream.value.isBeforeOrEqual(yieldArgs.skipToDate)\n : stream.value.isAfterOrEqual(yieldArgs.skipToDate)\n ) {\n // This can happen there are two streams and one stream starts after the other finishes.\n // Or, when iterating in reverse, when one stream ends before the other starts.\n // In this case we don't want to call `next()` because it will throw an error.\n // In both of these cases, calling `next()` won't do anything anyway.\n continue;\n }\n stream.next(yieldArgs);\n }\n}\n/** sorts ascending with completed iterables at the end */\nfunction streamsComparer(a, b) {\n if (a.done && b.done) return 0;\n if (a.done) return 1;\n if (b.done) return -1;\n if (a.value.isAfter(b.value)) return 1;\n return -1;\n}\n/** sorts descending with completed iterables at the start */\nfunction streamsReverseComparer(a, b) {\n if (a.done && b.done) return 0;\n if (a.done) return -1;\n if (b.done) return 1;\n if (a.value.isAfter(b.value)) return -1;\n return 1;\n}\nfunction selectNextIterable(streams, options = {}, yieldArgs = {}) {\n processYieldArgs(streams, options, yieldArgs);\n return streams\n .sort(options.reverse ? streamsReverseComparer : streamsComparer)\n .filter(s => !s.done)\n .shift();\n}\nfunction selectLastIterable(streams, options = {}, yieldArgs = {}) {\n processYieldArgs(streams, options, yieldArgs);\n return streams\n .sort(options.reverse ? streamsReverseComparer : streamsComparer)\n .filter(s => !s.done)\n .pop();\n}\n\n/**\n * An operator function which accepts a spread of occurrence generators\n * and adds their occurrences to the output.\n *\n * @param streams a spread of occurrence generators\n */\nfunction add(...streams) {\n return options => new AddOperator(streams, options);\n}\nclass AddOperator extends Operator {\n set(_, value) {\n return new AddOperator(\n this.streams.map(stream => stream.set('timezone', value)),\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n const wrappedStreams = this.streams.map(input => new IterableWrapper(input, args));\n if (this.config.base) {\n wrappedStreams.push(new IterableWrapper(this.config.base, args));\n }\n if (wrappedStreams.length === 0) return;\n let stream = selectNextIterable(wrappedStreams, args);\n while (stream && !stream.done) {\n // yield the current stream's value\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n if (!(yieldArgs && yieldArgs.skipToDate)) {\n // iterate the current stream\n stream.next();\n }\n // select the next stream\n stream = selectNextIterable(wrappedStreams, args, yieldArgs);\n }\n }\n calculateIsInfinite() {\n return (\n (this.config.base && this.config.base.isInfinite) ||\n this.streams.some(stream => stream.isInfinite)\n );\n }\n calculateHasDuration() {\n const streamsDuration = this.streams.every(stream => stream.hasDuration);\n if (!this.config.base) return streamsDuration;\n return this.config.base.hasDuration && streamsDuration;\n }\n}\n\nclass Calendar extends OccurrenceGenerator {\n /**\n *\n * Create a new Calendar object with the specified options.\n *\n * ### Options\n *\n * - **timezone**: The timezone that yielded occurrences should be *displayed* in.\n * Note, this one affects the *displayed* timezone of yielded occurrences.\n * For rules, occurrences are first found using the unmodified rule\n * config (including whatever timezone the `start` datetime is defined\n * in), and then converted to the timezone specified here before being\n * yielded. By default, the timezone is *local* time (`null`). So if you don't\n * want your rules to be displayed in local time, you must supply a\n * timezone argument.\n * - **data**: arbitrary data you can associate with this Calendar. This\n * is the only mutable property of `Calendar` objects.\n * - **maxDuration**: currently unused.\n * - **schedules**: either an occurrence generator, or an array of occurrence generators, which should\n * be used to build up this Calendar's occurrences. The Calendar will display the union of occurrences\n * its schedules produce.\n *\n */\n constructor(args = {}) {\n super(args);\n this.schedules = [];\n this.data = args.data;\n if (args.schedules) {\n this.schedules = Array.isArray(args.schedules) ? args.schedules : [args.schedules];\n this.schedules = this.schedules.map(schedule => schedule.set('timezone', this.timezone));\n }\n this.isInfinite = this.schedules.some(schedule => schedule.isInfinite);\n this.hasDuration = this.schedules.every(schedule => schedule.hasDuration);\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n set(prop, value, options) {\n if (prop === 'timezone') {\n return new Calendar({\n schedules: this.schedules.map(schedule => schedule.set(prop, value, options)),\n data: this.data,\n timezone: value,\n maxDuration: this.maxDuration,\n });\n } else if (prop === 'schedules') {\n return new Calendar({\n schedules: Array.isArray(value) ? value : [value],\n data: this.data,\n timezone: this.timezone,\n maxDuration: this.maxDuration,\n });\n }\n throw new ArgumentError('Unknown value for `prop`: ' + `\"${prop}\"`);\n }\n *_run(args = {}) {\n if (this.schedules.length === 0) return;\n const count = args.take;\n delete args.take;\n let iterator;\n if (this.schedules.length === 1) {\n iterator = this.schedules[0]._run(args);\n } else {\n iterator = new AddOperator(this.schedules, {\n timezone: this.timezone,\n })._run(args);\n }\n let date = iterator.next().value;\n let index = 0;\n while (date && (count === undefined || count > index)) {\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n date = iterator.next(yieldArgs).value;\n index++;\n }\n return undefined;\n }\n}\n\nclass Dates extends OccurrenceGenerator {\n constructor(args = {}) {\n super(args);\n this.adapters = [];\n this.isInfinite = false;\n this.maxDuration = 0;\n this.datetimes = [];\n this.data = args.data;\n if (args.dates) {\n this.adapters = args.dates.map(date => {\n let adapter = this.normalizeDateInputToAdapter(date);\n if (args.duration && !adapter.duration) {\n adapter = adapter.set('duration', args.duration);\n }\n return adapter.set('timezone', this.timezone);\n });\n this.datetimes = this.adapters.map(adapter => adapter.toDateTime());\n }\n this.hasDuration = this.datetimes.every(date => !!date.duration);\n if (this.hasDuration) {\n this.maxDuration = this.adapters.reduce(\n (prev, curr) => (curr.duration > prev ? curr.duration : prev),\n 0,\n );\n }\n }\n get length() {\n return this.adapters.length;\n }\n /** Returns the first occurrence or, if there are no occurrences, null. */\n get firstDate() {\n return this.adapters[0] || null;\n }\n /** Returns the last occurrence or, if there are no occurrences, null. */\n get lastDate() {\n return this.adapters[this.length - 1] || null;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n add(value) {\n return new Dates({\n dates: [...this.adapters, value],\n timezone: this.timezone,\n data: this.data,\n });\n }\n remove(value) {\n const dates = this.adapters.slice();\n const input = this.normalizeDateInputToAdapter(value);\n const index = dates.findIndex(date => date.valueOf() === input.valueOf());\n if (index >= 0) {\n dates.splice(index, 1);\n }\n return new Dates({\n dates,\n timezone: this.timezone,\n data: this.data,\n });\n }\n set(prop, value, options = {}) {\n let timezone = this.timezone;\n let dates = this.adapters.slice();\n if (prop === 'timezone') {\n if (value === this.timezone) return this;\n else if (options.keepLocalTime) {\n dates = this.adapters.map(adapter => {\n const json = adapter.toJSON();\n json.timezone = value;\n return this.dateAdapter.fromJSON(json);\n });\n }\n timezone = value;\n } else if (prop === 'dates') {\n dates = value;\n } else if (prop === 'duration') {\n dates = dates.map(date => date.set('duration', value || 0));\n } else {\n throw new ArgumentError(\n `Unexpected prop argument \"${prop}\". Accepted values are \"timezone\" or \"dates\"`,\n );\n }\n return new Dates({\n dates,\n data: this.data,\n timezone,\n });\n }\n filter(fn) {\n return new Dates({\n dates: this.adapters.filter(fn),\n data: this.data,\n timezone: this.timezone,\n });\n }\n *_run(args = {}) {\n let dates = this.datetimes.sort(dateTimeSortComparer);\n if (args.start) {\n dates = dates.filter(date => date.isAfterOrEqual(args.start));\n }\n if (args.end) {\n dates = dates.filter(date => date.isBeforeOrEqual(args.end));\n }\n if (args.reverse) {\n dates = dates.slice().reverse();\n }\n if (args.take) {\n dates = dates.slice(0, args.take);\n }\n const dateCache = dates.slice();\n let date = dateCache.shift();\n let yieldArgs;\n while (date) {\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse ? yieldArgs.skipToDate.isBefore(date) : yieldArgs.skipToDate.isAfter(date))\n ) {\n date = dateCache.shift();\n continue;\n }\n date = date.add(this, 'generator');\n yieldArgs = yield this.normalizeRunOutput(date);\n // Here, we are matching the behavior of the RecurrenceRulesIterator\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse\n ? yieldArgs.skipToDate.isAfterOrEqual(date)\n : yieldArgs.skipToDate.isBeforeOrEqual(date))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = dateCache.shift();\n }\n return undefined;\n }\n}\n\nclass InvalidDateAdapterError extends Error {}\nlet dateAdapterConfig;\nclass DateAdapterBase {\n constructor(_date, options) {\n this.duration = (options && options.duration) || 0;\n this.generators = (options && options.generators && options.generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateAdapterError('duration must be a non-negative integer');\n }\n }\n static set adapter(value) {\n if (dateAdapterConfig) {\n throw new Error(`\"${dateAdapterConfig.name}\" has already been configured.`);\n }\n dateAdapterConfig = value;\n }\n static get adapter() {\n if (!dateAdapterConfig) {\n throw new Error('No date adapter has been configured. See rSchedule docs.');\n }\n return dateAdapterConfig;\n }\n static isDate(_object) {\n throw unimplementedError('isDate()');\n }\n static fromDate(_date, _options) {\n throw unimplementedError('fromDate()');\n }\n static fromJSON(_json) {\n throw unimplementedError('fromJSON()');\n }\n static fromDateTime(_datetime) {\n throw unimplementedError('fromDateTime()');\n }\n toDateTime() {\n const date = DateTime.fromJSON(\n Object.assign(Object.assign({}, this.toJSON()), { generators: this.generators }),\n );\n return date;\n }\n}\nDateAdapterBase.hasTimezoneSupport = false;\nfunction unimplementedError(name) {\n return new Error(`You must implement the \"${name}\" method for this DateAdapter class`);\n}\nvar DateAdapter;\n(function(DateAdapter) {\n DateAdapter.WEEKDAYS = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n DateAdapter.MILLISECONDS_IN_SECOND = 1000;\n DateAdapter.MILLISECONDS_IN_MINUTE = DateAdapter.MILLISECONDS_IN_SECOND * 60;\n DateAdapter.MILLISECONDS_IN_HOUR = DateAdapter.MILLISECONDS_IN_MINUTE * 60;\n DateAdapter.MILLISECONDS_IN_DAY = DateAdapter.MILLISECONDS_IN_HOUR * 24;\n DateAdapter.MILLISECONDS_IN_WEEK = DateAdapter.MILLISECONDS_IN_DAY * 7;\n})(DateAdapter || (DateAdapter = {}));\nclass InvalidDateTimeError extends Error {}\nclass DateTime {\n constructor(date, timezone, duration, generators) {\n this.date = new Date(date);\n this.timezone = timezone || null;\n this.duration = duration || 0;\n this.generators = (generators && generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateTimeError('duration must be a non-negative integer');\n }\n this.assertIsValid();\n }\n // /**\n // * Similar to `Array.isArray()`, `isInstance()` provides a surefire method\n // * of determining if an object is a `DateTime` by checking against the\n // * global symbol registry.\n // */\n // static isInstance(object: any): object is DateTime {\n // return !!(object && object[DATETIME_ID]);\n // }\n static fromJSON(json) {\n const date = new Date(\n Date.UTC(\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ),\n );\n return new DateTime(date, json.timezone, json.duration, json.generators);\n }\n static fromDateAdapter(adapter) {\n return DateTime.fromJSON(\n Object.assign(Object.assign({}, adapter.toJSON()), { generators: adapter.generators }),\n );\n }\n /**\n * Returns `undefined` if `duration` is `0`. Else returns\n * the `end` date.\n */\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = this.add(this.duration, 'millisecond');\n return this._end;\n }\n // While we constrain the argument to be another DateAdapter in typescript\n // we handle the case of someone passing in another type of object in javascript\n isEqual(object) {\n if (!object) {\n return false;\n }\n assertSameTimeZone(this, object);\n return this.valueOf() === object.valueOf();\n }\n isBefore(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() < object.valueOf();\n }\n isBeforeOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() <= object.valueOf();\n }\n isAfter(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() > object.valueOf();\n }\n isAfterOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() >= object.valueOf();\n }\n isOccurring(object) {\n if (!this.duration) {\n throw new Error('DateTime#isOccurring() is only applicable to DateTimes with durations');\n }\n assertSameTimeZone(this, object);\n return (\n object.isAfterOrEqual(this) && object.isBeforeOrEqual(this.add(this.duration, 'millisecond'))\n );\n }\n add(amount, unit) {\n switch (unit) {\n case 'generator': {\n const generators = this.generators.slice();\n generators.unshift(amount);\n return new DateTime(this.date, this.timezone, this.duration, generators);\n }\n case 'year':\n return this.forkDateTime(addUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(addUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(addUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(addUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(addUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(addUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(addUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(addUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#add`');\n }\n }\n subtract(amount, unit) {\n switch (unit) {\n case 'year':\n return this.forkDateTime(subUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(subUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(subUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(subUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(subUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(subUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(subUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(subUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#subtract`');\n }\n }\n get(unit) {\n switch (unit) {\n case 'year':\n return this.date.getUTCFullYear();\n case 'month':\n return this.date.getUTCMonth() + 1;\n case 'yearday':\n return getUTCYearDay(this.date);\n case 'weekday':\n return DateAdapter.WEEKDAYS[this.date.getUTCDay()];\n case 'day':\n return this.date.getUTCDate();\n case 'hour':\n return this.date.getUTCHours();\n case 'minute':\n return this.date.getUTCMinutes();\n case 'second':\n return this.date.getUTCSeconds();\n case 'millisecond':\n return this.date.getUTCMilliseconds();\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n }\n set(unit, value) {\n if (unit === 'duration') {\n return new DateTime(this.date, this.timezone, value, this.generators);\n }\n if (unit === 'generators') {\n return new DateTime(this.date, this.timezone, this.duration, value);\n }\n let date = new Date(this.date);\n switch (unit) {\n case 'year':\n date.setUTCFullYear(value);\n break;\n case 'month': {\n // If the current day of the month\n // is greater than days in the month we are moving to, we need to also\n // set the day to the end of that month.\n const length = monthLength(value, date.getUTCFullYear());\n const day = date.getUTCDate();\n if (day > length) {\n date.setUTCDate(1);\n date.setUTCMonth(value);\n date = subUTCDays(date, 1);\n } else {\n date.setUTCMonth(value - 1);\n }\n break;\n }\n case 'day':\n date.setUTCDate(value);\n break;\n case 'hour':\n date.setUTCHours(value);\n break;\n case 'minute':\n date.setUTCMinutes(value);\n break;\n case 'second':\n date.setUTCSeconds(value);\n break;\n case 'millisecond':\n date.setUTCMilliseconds(value);\n break;\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n return this.forkDateTime(date);\n }\n granularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 1);\n case 'month':\n date = date.set('day', 1);\n break;\n case 'week':\n date = setDateToStartOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 0);\n case 'hour':\n date = date.set('minute', 0);\n case 'minute':\n date = date.set('second', 0);\n case 'second':\n date = date.set('millisecond', 0);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n endGranularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 12);\n case 'month':\n date = date.set('day', monthLength(date.get('month'), date.get('year')));\n break;\n case 'week':\n date = setDateToEndOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 23);\n case 'hour':\n date = date.set('minute', 59);\n case 'minute':\n date = date.set('second', 59);\n case 'second':\n date = date.set('millisecond', 999);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n toISOString() {\n return this.date.toISOString();\n }\n toDateTime() {\n return this;\n }\n toJSON() {\n const json = {\n timezone: this.timezone,\n year: this.get('year'),\n month: this.get('month'),\n day: this.get('day'),\n hour: this.get('hour'),\n minute: this.get('minute'),\n second: this.get('second'),\n millisecond: this.get('millisecond'),\n };\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n valueOf() {\n return this.date.valueOf();\n }\n assertIsValid() {\n if (isNaN(this.valueOf())) {\n throw new InvalidDateTimeError('DateTime has invalid date.');\n }\n return true;\n }\n forkDateTime(date) {\n return new DateTime(date, this.timezone, this.duration, this.generators);\n }\n}\nfunction assertSameTimeZone(x, y) {\n if (x.timezone !== y.timezone) {\n throw new InvalidDateTimeError(\n 'Attempted to compare a datetime to another date in a different timezone: ' +\n JSON.stringify(x) +\n ' and ' +\n JSON.stringify(y),\n );\n }\n return true;\n}\nfunction setDateToStartOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.subtract(index, 'day');\n}\nfunction setDateToEndOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.add(6 - index, 'day');\n}\nfunction orderedWeekdays(wkst = 'SU') {\n const wkdays = DateAdapter.WEEKDAYS.slice();\n let index = wkdays.indexOf(wkst);\n while (index !== 0) {\n shiftArray(wkdays);\n index--;\n }\n return wkdays;\n}\nfunction shiftArray(array, from = 'first') {\n if (array.length === 0) {\n return array;\n } else if (from === 'first') {\n array.push(array.shift());\n } else {\n array.unshift(array.pop());\n }\n return array;\n}\n/**\n * Returns the days in the given month.\n *\n * @param month base-1\n * @param year\n */\nfunction monthLength(month, year) {\n const block = {\n 1: 31,\n 2: getDaysInFebruary(year),\n 3: 31,\n 4: 30,\n 5: 31,\n 6: 30,\n 7: 31,\n 8: 31,\n 9: 30,\n 10: 31,\n 11: 30,\n 12: 31,\n };\n return block[month];\n}\nfunction getDaysInFebruary(year) {\n return isLeapYear(year) ? 29 : 28;\n}\n// taken from date-fn\nfunction isLeapYear(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction getUTCYearDay(now) {\n const start = new Date(Date.UTC(now.getUTCFullYear(), 0, 1));\n const diff = now.valueOf() - start.valueOf();\n return 1 + Math.floor(diff / DateAdapter.MILLISECONDS_IN_DAY);\n}\n/**\n * These functions are basically lifted from `date-fns`, but changed\n * to use the UTC date methods, which `date-fns` doesn't support.\n */\nfunction toInteger(input) {\n if (input === null || input === true || input === false) {\n return NaN;\n }\n const int = Number(input);\n if (isNaN(int)) {\n return int;\n }\n return int < 0 ? Math.ceil(int) : Math.floor(int);\n}\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n const timestamp = dirtyDate.valueOf();\n const amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\nfunction addUTCYears(date, input) {\n const amount = toInteger(input);\n return addUTCMonths(date, amount * 12);\n}\nfunction addUTCMonths(date, input) {\n const amount = toInteger(input);\n date = new Date(date);\n const desiredMonth = date.getUTCMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setUTCFullYear(date.getUTCFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setUTCHours(0, 0, 0, 0);\n const daysInMonth = monthLength(\n dateWithDesiredMonth.getUTCMonth() + 1,\n dateWithDesiredMonth.getUTCFullYear(),\n );\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setUTCMonth(desiredMonth, Math.min(daysInMonth, date.getUTCDate()));\n return date;\n}\nfunction addUTCWeeks(date, input) {\n const amount = toInteger(input);\n const days = amount * 7;\n return addUTCDays(date, days);\n}\nfunction addUTCDays(date, input) {\n // by adding milliseconds rather than days, we supress the native Date object's automatic\n // daylight savings time conversions which we don't want in UTC mode\n return addUTCMilliseconds(date, toInteger(input) * DateAdapter.MILLISECONDS_IN_DAY);\n}\nfunction addUTCHours(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_HOUR);\n}\nfunction addUTCMinutes(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_MINUTE);\n}\nfunction addUTCSeconds(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_SECOND);\n}\nfunction addUTCMilliseconds(date, input) {\n const amount = toInteger(input);\n const timestamp = date.getTime();\n return new Date(timestamp + amount);\n}\nfunction subUTCYears(date, amount) {\n return addUTCYears(date, -amount);\n}\nfunction subUTCMonths(date, amount) {\n return addUTCMonths(date, -amount);\n}\nfunction subUTCWeeks(date, amount) {\n return addUTCWeeks(date, -amount);\n}\nfunction subUTCDays(date, amount) {\n return addUTCDays(date, -amount);\n}\nfunction subUTCHours(date, amount) {\n return addUTCHours(date, -amount);\n}\nfunction subUTCMinutes(date, amount) {\n return addUTCMinutes(date, -amount);\n}\nfunction subUTCSeconds(date, amount) {\n return addUTCSeconds(date, -amount);\n}\nfunction subUTCMilliseconds(date, amount) {\n return addUTCMilliseconds(date, -amount);\n}\n\n// export function normalizeDateInput<T extends DateAdapter>(\n// dateAdapter: DateAdapterConstructor<T>,\n// input: DateInput<T>,\n// timezone: string | null,\n// ): DateTime {\n// if (input instanceof DateTime) {\n// if (input.timezone !== timezone) {\n// return dateAdapter\n// .fromDateTime(input)\n// .set('timezone', timezone)\n// .toDateTime();\n// }\n// return input;\n// }\n// return input instanceof DateAdapter\n// ? input.set('timezone', timezone).toDateTime()\n// : new dateAdapter(input).toDateTime();\n// }\nfunction normalizeDateTimeTimezone(date, timezone) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n}\n\nclass RuleBase extends OccurrenceGenerator {\n constructor(recurrenceRules, config, options = {}) {\n super(options);\n this.recurrenceRules = recurrenceRules;\n this.options = cloneRuleOptions(config);\n this.normOptions = normalizeRuleOptions(this.recurrenceRules, this.options);\n this.timezone =\n options.timezone !== undefined ? options.timezone : this.normOptions.start.timezone;\n this.data = options.data;\n this.hasDuration = !!config.duration;\n if (this.hasDuration) this.duration = config.duration;\n this.isInfinite = this.normOptions.end === undefined && this.normOptions.count === undefined;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n *_run(rawArgs = {}) {\n const args = this.normalizeRunArgs(rawArgs);\n const iterator = new RecurrenceRulesIterator(\n recurrenceRulesReducer(this.recurrenceRules),\n this.normOptions,\n args,\n );\n let date = iterator.next().value;\n let index = 0;\n while (date && (args.take === undefined || index < args.take)) {\n index++;\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n if (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) {\n // The RecurrenceRuleIterator might have a different timezone from the rule.\n // Because of this, the yieldArgs will not properly be normalized by the\n // OccurrenceIterator, so we need to do it here\n date = iterator.next(\n Object.assign(Object.assign({}, yieldArgs), {\n skipToDate: normalizeDateTimeTimezone(yieldArgs.skipToDate, iterator.start.timezone),\n }),\n ).value;\n } else {\n // theoretically, the yieldArgs are undefined here\n // maybe in the future there will be other yieldArg options though\n date = iterator.next(yieldArgs).value;\n }\n }\n return undefined;\n }\n}\n\nclass Rule extends RuleBase {\n /**\n * Create a new Rule object with the specified rule config and options.\n *\n * ### Options\n *\n * - **timezone**: the timezone that yielded occurrences should be in. Note,\n * this does not change the rule config. Occurrences are first found using\n * the unmodified rule config, and then converted to the timezone specified\n * here before being yielded.\n * - **data**: arbitrary data you can associate with this rule. This\n * is the only mutable property of `Rule` objects.\n *\n * ### Rule Config\n *\n * - #### frequency\n *\n * The frequency rule part identifies the type of recurrence rule. Valid values\n * include `\"SECONDLY\"`, `\"MINUTELY\"`, `\"HOURLY\"`, `\"DAILY\"`, `\"WEEKLY\"`,\n * `\"MONTHLY\"`, or `\"YEARLY\"`.\n *\n * - #### start\n *\n * The start of the rule (not necessarily the first occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### end?\n *\n * The end of the rule (not necessarily the last occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### duration?\n *\n * A length of time expressed in milliseconds.\n *\n * - #### interval?\n *\n * The interval rule part contains a positive integer representing at\n * which intervals the recurrence rule repeats. The default value is\n * `1`, meaning every second for a SECONDLY rule, every minute for a\n * MINUTELY rule, every hour for an HOURLY rule, every day for a\n * DAILY rule, every week for a WEEKLY rule, every month for a\n * MONTHLY rule, and every year for a YEARLY rule. For example,\n * within a DAILY rule, a value of `8` means every eight days.\n *\n * - #### count?\n *\n * The count rule part defines the number of occurrences at which to\n * range-bound the recurrence. `count` and `end` are both two different\n * ways of specifying how a recurrence completes.\n *\n * - #### weekStart?\n *\n * The weekStart rule part specifies the day on which the workweek starts.\n * Valid values are `\"MO\"`, `\"TU\"`, `\"WE\"`, `\"TH\"`, `\"FR\"`, `\"SA\"`, and `\"SU\"`.\n * This is significant when a WEEKLY rule has an interval greater than 1,\n * and a `byDayOfWeek` rule part is specified. The\n * default value is `\"MO\"`.\n *\n * - #### bySecondOfMinute?\n *\n * The bySecondOfMinute rule part expects an array of seconds\n * within a minute. Valid values are 0 to 60.\n *\n * - #### byMinuteOfHour?\n *\n * The byMinuteOfHour rule part expects an array of minutes within an hour.\n * Valid values are 0 to 59.\n *\n * - #### byHourOfDay?\n *\n * The byHourOfDay rule part expects an array of hours of the day.\n * Valid values are 0 to 23.\n *\n * - #### byDayOfWeek?\n *\n * *note: the byDayOfWeek rule part is kinda complex. Blame the ICAL spec.*\n *\n * The byDayOfWeek rule part expects an array. Each array entry can\n * be a day of the week (`\"SU\"`, `\"MO\"` , `\"TU\"`, `\"WE\"`, `\"TH\"`,\n * `\"FR\"`, `\"SA\"`). If the rule's `frequency` is either MONTHLY or YEARLY,\n * Any entry can also be a tuple where the first value of the tuple is a\n * day of the week and the second value is an positive/negative integer\n * (e.g. `[\"SU\", 1]`). In this case, the number indicates the nth occurrence of\n * the specified day within the MONTHLY or YEARLY rule.\n *\n * The behavior of byDayOfWeek changes depending on the `frequency`\n * of the rule.\n *\n * Within a MONTHLY rule, `[\"MO\", 1]` represents the first Monday\n * within the month, whereas `[\"MO\", -1]` represents the last Monday\n * of the month.\n *\n * Within a YEARLY rule, the numeric value in a byDayOfWeek tuple entry\n * corresponds to an offset within the month when the byMonthOfYear rule part is\n * present, and corresponds to an offset within the year otherwise.\n *\n * Regardless of rule `frequency`, if a byDayOfWeek entry is a string\n * (rather than a tuple), it means \"all of these days\" within the specified\n * frequency (e.g. within a MONTHLY rule, `\"MO\"` represents all Mondays within\n * the month).\n *\n * - #### byDayOfMonth?\n *\n * The byDayOfMonth rule part expects an array of days\n * of the month. Valid values are 1 to 31 or -31 to -1.\n *\n * For example, -10 represents the tenth to the last day of the month.\n * The byDayOfMonth rule part *must not* be specified when the rule's\n * `frequency` is set to WEEKLY.\n *\n * - #### byMonthOfYear?\n *\n * The byMonthOfYear rule part expects an array of months\n * of the year. Valid values are 1 to 12.\n *\n */\n constructor(config, options = {}) {\n super(Rule.recurrenceRules, config, options);\n }\n set(prop, value, tzoptions = {}) {\n let options = cloneRuleOptions(this.options);\n let timezone = this.timezone;\n if (prop === 'timezone') {\n if (value === this.timezone && !tzoptions.keepLocalTime) return this;\n else if (tzoptions.keepLocalTime) {\n const json = this.normalizeDateInput(options.start).toJSON();\n json.timezone = value;\n const adapter = this.dateAdapter.fromJSON(json);\n // prettier-ignore\n options.start =\n options.start instanceof this.dateAdapter ? adapter :\n options.start instanceof DateTime$1 ? adapter.toDateTime() :\n adapter.date;\n }\n timezone = value;\n } else if (prop === 'options') {\n options = value;\n } else {\n options[prop] = value;\n }\n return new Rule(options, {\n data: this.data,\n maxDuration: this.maxDuration,\n timezone,\n });\n }\n}\nRule.recurrenceRules = [];\n\nclass ScheduleBase extends OccurrenceGenerator {\n /**\n * Create a new Schedule object with the specified options.\n *\n * The order of precidence for rrules, rdates, exrules, and exdates is:\n *\n * 1. rrules are included\n * 2. exrules are excluded\n * 3. rdates are included\n * 4. exdates are excluded\n *\n */\n constructor(options) {\n super(options);\n this.data = options.data;\n }\n occurrences(args = {}) {\n return new OccurrenceIterator(this, this.normalizeOccurrencesArgs(args));\n }\n collections(args = {}) {\n return new CollectionIterator(this, this.normalizeCollectionsArgs(args));\n }\n *_run(args = {}) {\n const count = args.take;\n delete args.take;\n const iterator = this.occurrenceStream._run(args);\n let date = iterator.next().value;\n let index = 0;\n while (date && (count === undefined || count > index)) {\n date = date.add(this, 'generator');\n const yieldArgs = yield this.normalizeRunOutput(date);\n date = iterator.next(yieldArgs).value;\n index++;\n }\n return undefined;\n }\n}\n\n/**\n * An operator function which accepts a spread of occurrence generators\n * and removes their occurrences from the output.\n *\n * @param streams a spread of occurrence generators\n */\nfunction subtract(...streams) {\n return options => new SubtractOperator(streams, options);\n}\nclass SubtractOperator extends Operator {\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new SubtractOperator(\n this.streams.map(stream => stream.set('timezone', value)),\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const inclusion = new IterableWrapper(this.config.base, args);\n const exclusion = new IterableWrapper(\n new AddOperator(this.streams, {\n timezone: this.config.timezone,\n }),\n args,\n );\n cycleStreams(inclusion, exclusion, args);\n while (!inclusion.done) {\n const yieldArgs = yield this.normalizeRunOutput(inclusion.value);\n if (!(yieldArgs && yieldArgs.skipToDate)) {\n inclusion.next();\n }\n cycleStreams(inclusion, exclusion, args, yieldArgs);\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return !!(this.config.base && this.config.base.hasDuration);\n }\n}\nfunction cycleStreams(inclusion, exclusion, options = {}, yieldArgs = {}) {\n processYieldArgs([inclusion, exclusion], options, yieldArgs);\n iterateExclusion(inclusion, exclusion, options);\n while (!inclusion.done && !exclusion.done && inclusion.value.isEqual(exclusion.value)) {\n inclusion.next();\n iterateExclusion(inclusion, exclusion, options);\n }\n}\nfunction iterateExclusion(inclusion, exclusion, options = {}) {\n if (options.reverse) {\n while (!exclusion.done && !inclusion.done && exclusion.value.isAfter(inclusion.value)) {\n exclusion.next();\n }\n return;\n }\n while (!exclusion.done && !inclusion.done && exclusion.value.isBefore(inclusion.value)) {\n exclusion.next();\n }\n}\n\n/**\n * An operator function which deduplicates an occurrence stream. Occurrence\n * `duration` is currently ignored.\n */\nfunction unique() {\n return options => new UniqueOperator([], options);\n}\nclass UniqueOperator extends Operator {\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new UniqueOperator(\n [],\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const stream = new IterableWrapper(this.config.base, args);\n while (!stream.done) {\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n const lastValue = stream.value;\n // iterate the current stream\n stream.next(yieldArgs);\n while (\n !(yieldArgs && yieldArgs.skipToDate) &&\n !stream.done &&\n stream.value.isEqual(lastValue)\n ) {\n stream.next();\n }\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return !!(this.config.base && this.config.base.hasDuration);\n }\n}\n\nclass Schedule extends ScheduleBase {\n /**\n * Create a new Schedule object with the specified options.\n *\n * The order of precidence for rrules, rdates, exrules, and exdates is:\n *\n * 1. rrules are included\n * 2. exrules are excluded\n * 3. rdates are included\n * 4. exdates are excluded\n *\n * ### Options\n *\n * - **timezone**: The timezone that yielded occurrences should be *displayed* in.\n * Note, this one affects the *displayed* timezone of yielded occurrences.\n * For rules, occurrences are first found using the unmodified rule\n * config (including whatever timezone the `start` datetime is defined\n * in), and then converted to the timezone specified here before being\n * yielded. By default, the timezone is *local* time (`null`). So if you don't\n * want your rules to be displayed in local time, you must supply a\n * timezone argument.\n * - **data**: arbitrary data you can associate with this Schedule. This\n * is the only mutable property of `Schedule` objects.\n * - **maxDuration**: currently unused.\n * - **rrules**: rules specifying when occurrences happen. See the \"Rule Config\"\n * section below.\n * - **rdates**: individual dates that should be _included_ in the schedule.\n * - **exdates**: individual dates that should be _excluded_ from the schedule.\n * - **exrules**: rules specifying when occurrences shouldn't happen. See the\n * \"Rule Config\" section below.\n *\n * ### Rule Config\n *\n * - #### frequency\n *\n * The frequency rule part identifies the type of recurrence rule. Valid values\n * include `\"SECONDLY\"`, `\"MINUTELY\"`, `\"HOURLY\"`, `\"DAILY\"`, `\"WEEKLY\"`,\n * `\"MONTHLY\"`, or `\"YEARLY\"`.\n *\n * - #### start\n *\n * The start of the rule (not necessarily the first occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### end?\n *\n * The end of the rule (not necessarily the last occurrence).\n * Either a `DateAdapter` instance, date object, or `DateTime` object.\n * The type of date object depends on the `DateAdapter` class used for this\n * `Rule`.\n *\n * - #### duration?\n *\n * A length of time expressed in milliseconds.\n *\n * - #### interval?\n *\n * The interval rule part contains a positive integer representing at\n * which intervals the recurrence rule repeats. The default value is\n * `1`, meaning every second for a SECONDLY rule, every minute for a\n * MINUTELY rule, every hour for an HOURLY rule, every day for a\n * DAILY rule, every week for a WEEKLY rule, every month for a\n * MONTHLY rule, and every year for a YEARLY rule. For example,\n * within a DAILY rule, a value of `8` means every eight days.\n *\n * - #### count?\n *\n * The count rule part defines the number of occurrences at which to\n * range-bound the recurrence. `count` and `end` are both two different\n * ways of specifying how a recurrence completes.\n *\n * - #### weekStart?\n *\n * The weekStart rule part specifies the day on which the workweek starts.\n * Valid values are `\"MO\"`, `\"TU\"`, `\"WE\"`, `\"TH\"`, `\"FR\"`, `\"SA\"`, and `\"SU\"`.\n * This is significant when a WEEKLY rule has an interval greater than 1,\n * and a `byDayOfWeek` rule part is specified. The\n * default value is `\"MO\"`.\n *\n * - #### bySecondOfMinute?\n *\n * The bySecondOfMinute rule part expects an array of seconds\n * within a minute. Valid values are 0 to 60.\n *\n * - #### byMinuteOfHour?\n *\n * The byMinuteOfHour rule part expects an array of minutes within an hour.\n * Valid values are 0 to 59.\n *\n * - #### byHourOfDay?\n *\n * The byHourOfDay rule part expects an array of hours of the day.\n * Valid values are 0 to 23.\n *\n * - #### byDayOfWeek?\n *\n * *note: the byDayOfWeek rule part is kinda complex. Blame the ICAL spec.*\n *\n * The byDayOfWeek rule part expects an array. Each array entry can\n * be a day of the week (`\"SU\"`, `\"MO\"` , `\"TU\"`, `\"WE\"`, `\"TH\"`,\n * `\"FR\"`, `\"SA\"`). If the rule's `frequency` is either MONTHLY or YEARLY,\n * Any entry can also be a tuple where the first value of the tuple is a\n * day of the week and the second value is an positive/negative integer\n * (e.g. `[\"SU\", 1]`). In this case, the number indicates the nth occurrence of\n * the specified day within the MONTHLY or YEARLY rule.\n *\n * The behavior of byDayOfWeek changes depending on the `frequency`\n * of the rule.\n *\n * Within a MONTHLY rule, `[\"MO\", 1]` represents the first Monday\n * within the month, whereas `[\"MO\", -1]` represents the last Monday\n * of the month.\n *\n * Within a YEARLY rule, the numeric value in a byDayOfWeek tuple entry\n * corresponds to an offset within the month when the byMonthOfYear rule part is\n * present, and corresponds to an offset within the year otherwise.\n *\n * Regardless of rule `frequency`, if a byDayOfWeek entry is a string\n * (rather than a tuple), it means \"all of these days\" within the specified\n * frequency (e.g. within a MONTHLY rule, `\"MO\"` represents all Mondays within\n * the month).\n *\n * - #### byDayOfMonth?\n *\n * The byDayOfMonth rule part expects an array of days\n * of the month. Valid values are 1 to 31 or -31 to -1.\n *\n * For example, -10 represents the tenth to the last day of the month.\n * The byDayOfMonth rule part *must not* be specified when the rule's\n * `frequency` is set to WEEKLY.\n *\n * - #### byMonthOfYear?\n *\n * The byMonthOfYear rule part expects an array of months\n * of the year. Valid values are 1 to 12.\n *\n */\n constructor(options = {}) {\n super(options);\n this.rrules = [];\n this.exrules = [];\n for (const prop of ['rrules', 'exrules']) {\n const arg = options[prop];\n if (arg) {\n this[prop] = arg.map(ruleArgs => {\n if (ruleArgs instanceof Rule) {\n return ruleArgs.set('timezone', this.timezone);\n } else {\n return new Rule(ruleArgs, {\n timezone: this.timezone,\n });\n }\n });\n }\n }\n for (const prop of ['rdates', 'exdates']) {\n const arg = options[prop];\n if (arg) {\n this[prop] =\n arg instanceof Dates\n ? arg.set('timezone', this.timezone)\n : new Dates({\n dates: arg,\n timezone: this.timezone,\n });\n } else {\n this[prop] = new Dates({\n timezone: this.timezone,\n });\n }\n }\n this.hasDuration =\n this.rrules.every(rule => rule.hasDuration) &&\n this.exrules.every(rule => rule.hasDuration) &&\n this.rdates.hasDuration &&\n this.exdates.hasDuration;\n this.isInfinite = this.rrules.some(rule => rule.isInfinite);\n this.occurrenceStream = [\n add(...this.rrules),\n subtract(...this.exrules),\n add(this.rdates),\n subtract(this.exdates),\n unique(),\n ].reduce((prev, curr) => curr({ base: prev, timezone: this.timezone }), undefined);\n }\n add(prop, value) {\n const rrules = this.rrules.slice();\n const exrules = this.exrules.slice();\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'rrule':\n rrules.push(value);\n break;\n case 'exrule':\n exrules.push(value);\n break;\n case 'rdate':\n rdates = this.rdates.add(value);\n break;\n case 'exdate':\n exdates = this.exdates.add(value);\n break;\n }\n return new Schedule({\n timezone: this.timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n remove(prop, value) {\n let rrules = this.rrules;\n let exrules = this.exrules;\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'rrule':\n rrules = rrules.filter(rule => rule !== value);\n break;\n case 'exrule':\n exrules = exrules.filter(rule => rule !== value);\n break;\n case 'rdate':\n rdates = this.rdates.remove(value);\n break;\n case 'exdate':\n exdates = this.exdates.remove(value);\n break;\n }\n return new Schedule({\n timezone: this.timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n set(prop, value, options = {}) {\n let timezone = this.timezone;\n let rrules = this.rrules;\n let exrules = this.exrules;\n let rdates = this.rdates;\n let exdates = this.exdates;\n switch (prop) {\n case 'timezone':\n if (value === this.timezone && !options.keepLocalTime) return this;\n else if (options.keepLocalTime) {\n rrules = rrules.map(rule => rule.set('timezone', value, options));\n exrules = exrules.map(rule => rule.set('timezone', value, options));\n rdates = rdates.set('timezone', value, options);\n exdates = exdates.set('timezone', value, options);\n }\n timezone = value;\n break;\n case 'rrules':\n rrules = value;\n break;\n case 'exrules':\n exrules = value;\n break;\n case 'rdates':\n rdates = value;\n break;\n case 'exdates':\n exdates = value;\n break;\n }\n return new Schedule({\n timezone,\n data: this.data,\n rrules,\n exrules,\n rdates,\n exdates,\n });\n }\n}\n\n/**\n * An operator function, which takes a spread of occurrence generators and only\n * returns the dates which intersect every occurrence generator.\n *\n * Because it's possible for all the generators to never intersect,\n * and because the intersection operator can't detect this lack of intersection,\n * you must call `intersection()` with a `{maxFailedIterations: number}` argument.\n * For convenience, you can globally set `RScheduleConfig.defaultMaxFailedIterations`.\n * Without further information, I'd probably set `defaultMaxFailedIterations = 50`.\n *\n * The `maxFailedIterations` argument caps the number of iterations the operator will\n * run through without finding a single valid occurrence. If this number is reached, the operator will\n * stop iterating (preventing a possible infinite loop).\n *\n * - Note: `maxFailedIterations` caps the number of iterations which\n * *fail to turn up a single valid occurrence*. Every time a valid occurrence is returned,\n * the current iteration count is reset to 0.\n *\n */\nfunction intersection(args) {\n return options => new IntersectionOperator(args, options);\n}\nclass IntersectionOperator extends Operator {\n constructor(args, config) {\n super(args.streams, config);\n if (this.isInfinite) {\n this.maxFailedIterations =\n args.maxFailedIterations || IntersectionOperator.defaultMaxFailedIterations;\n if (!this.maxFailedIterations) {\n throw new ArgumentError(\n 'The IntersectionOperator must be provided ' +\n 'a `maxFailedIterations` argument when it is built from schedules of infinite length. ' +\n 'This argument is used to ensure that the IntersectionOperator does not enter ' +\n 'an infinite loop because the underlying schedules never intersect. ' +\n 'If the `maxFailedIterations` count is reached it will be assumed that ' +\n 'all valid occurrences have been found and iteration will end without error.' +\n 'Without additional information, \"50\" is probably a good ' +\n '`maxFailedIterations` value. ' +\n 'If the schedules are not of infinite length, `maxFailedIterations` is ignored. ' +\n 'Note also that you can provide a `defaultMaxFailedIterations` number via ' +\n 'IntersectionOperator.defaultMaxFailedIterations.',\n );\n }\n }\n }\n set(_, value) {\n return new IntersectionOperator(\n {\n maxFailedIterations: this.maxFailedIterations,\n streams: this.streams.map(stream => stream.set('timezone', value)),\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n const streams = this.streams.map(stream => new IterableWrapper(stream, args));\n if (this.config.base) {\n streams.push(new IterableWrapper(this.config.base, args));\n }\n if (streams.length === 0) return;\n const hasEndDate = !!(!this.isInfinite || args.reverse || args.end);\n if (\n !cycleStreams$1(\n streams,\n undefined,\n Object.assign(Object.assign({}, args), {\n hasEndDate,\n iteration: 0,\n maxIterations: this.maxFailedIterations,\n }),\n )\n ) {\n return;\n }\n let stream = selectNextIterable(streams, args);\n while (stream) {\n const yieldArgs = yield this.normalizeRunOutput(stream.value);\n const lastValidDate = stream.value;\n if (!(yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate)) {\n // iterate the current stream\n stream.next();\n }\n if (\n !cycleStreams$1(\n streams,\n lastValidDate,\n Object.assign(Object.assign({}, args), {\n hasEndDate,\n iteration: 0,\n maxIterations: this.maxFailedIterations,\n }),\n yieldArgs,\n )\n ) {\n return;\n }\n // The call to `cycleStreams()`, above, has already called\n // selectNextIterable with the `yieldArgs`\n stream = selectNextIterable(streams, args);\n }\n }\n calculateIsInfinite() {\n // Note: Array#every() === true when length === 0\n if (!this.config.base) {\n if (this.streams.length === 0) return false;\n return this.streams.every(stream => stream.isInfinite);\n } else if (this.streams.length === 0) return this.config.base.isInfinite;\n return this.config.base.isInfinite && this.streams.every(stream => stream.isInfinite);\n }\n calculateHasDuration() {\n const streamsDuration = this.streams.every(stream => stream.hasDuration);\n if (!this.config.base) return streamsDuration;\n return this.config.base.hasDuration && streamsDuration;\n }\n}\nfunction cycleStreams$1(streams, lastValidDate, options, yieldArgs) {\n const next = selectNextIterable(streams, options, yieldArgs);\n if (!next) return false;\n if (lastValidDate && next.value.isEqual(lastValidDate)) return true;\n if (streams.some(stream => stream.done)) return false;\n if (streams.every(stream => stream.value.isEqual(next.value))) return true;\n options.iteration++;\n if (options.maxIterations && !options.hasEndDate && options.iteration > options.maxIterations) {\n return false;\n }\n // Since not all of the streams are equal, we grab the last stream...\n const last = selectLastIterable(streams, options);\n // ...and skip all the other streams so they are equal or past the last one\n streams.forEach(stream => {\n // Because streams can have multiple, identical dates in a row,\n // we don't want to `skipToDate` if the provided date is equal to the current date.\n if (last.value.isEqual(stream.value)) return;\n stream.next({ skipToDate: last.value });\n });\n // then we repeat\n return cycleStreams$1(streams, lastValidDate, options);\n}\n\nclass DurationIterableWrapper extends IterableWrapper {\n constructor(generator, runArgs) {\n super(generator, runArgs);\n this.workingValue = this.value;\n this.next();\n }\n}\nclass MergeDurationOperatorError extends Error {}\n/**\n * An operator function which takes an occurrence stream with\n * `hasDuration === true` and merges occurrences which have overlapping\n * start and end times.\n *\n * Because it's possible for all the occurrences in the stream to have\n * overlapping start and end times, you must provide a `maxDuration`\n * argument that represents the maximum possible duration for a single\n * occurrence. If this duration is exceeded, a `MergeDurationOperatorError`\n * will be thrown.\n *\n * - For your convenience, you can globally set a default\n * `MergeDurationOperator#maxDuration` via\n * `RScheduleConfig.MergeDurationOperator.defaultMaxDuration`.\n *\n * Usage example:\n *\n * ```typescript\n * const MILLISECONDS_IN_HOUR = 1000 * 60 * 60;\n *\n * const dates = new Dates({\n * dates: [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 14), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * new StandardDateAdapter(new Date(2010, 10, 12, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ],\n * dateAdpter: StandardDateAdapter,\n * }).pipe(\n * mergeDuration({\n * maxDuration: MILLISECONDS_IN_HOUR * 24\n * })\n * )\n *\n * dates.occurrences().toArray() === [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 3 }),\n * new StandardDateAdapter(new Date(2010, 10, 12, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ]\n * ```\n */\nfunction mergeDuration(args) {\n return options => new MergeDurationOperator(args, options);\n}\nclass MergeDurationOperator extends Operator {\n constructor(args, config) {\n super([], config);\n this.maxDuration = args.maxDuration;\n if (config.base && !config.base.hasDuration) {\n throw new ArgumentError(\n 'Base stream provided to MergeDurationOperator does not have an associated duration. ' +\n 'The MergeDurationOperator can only be used with streams which have a duration. ',\n );\n }\n }\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new MergeDurationOperator(\n {\n maxDuration: this.maxDuration,\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n _run(args = {}) {\n return args.reverse ? this.reverseRun(args) : this.forwardRun(args);\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return true;\n }\n *forwardRun(args = {}) {\n if (!this.config.base) return;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we must begin iterating `maxDuration`\n // before the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new DurationIterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n // checking `stream.workingValue` because when `stream.done === true`\n // `stream.workingValue` will not have been yielded yet\n while (stream.workingValue) {\n // TODO(@john.carroll.p): figure out how to handle `DateTime#generators` for merged `DateTimes`\n while (!stream.done && stream.workingValue.end.isAfterOrEqual(stream.value)) {\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n if (stream.value.end.isAfter(stream.workingValue.end)) {\n const diff = stream.value.end.valueOf() - stream.workingValue.end.valueOf();\n stream.workingValue = stream.workingValue.set(\n 'duration',\n stream.workingValue.duration + diff,\n );\n }\n stream.next();\n }\n // check to make sure the occurrence we are about to yield ends after the\n // provided start time.\n if (args.start && stream.workingValue.end.isBefore(args.start)) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure the occurrence we are about to yield ends after the\n // provided skipToDate\n if (\n (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) &&\n stream.workingValue.end.isBefore(yieldArgs.skipToDate)\n ) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure we are not after the user requested `end` time.\n if (args.end && stream.workingValue && stream.workingValue.isAfter(args.end)) {\n break;\n }\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(stream.workingValue);\n if (\n (yieldArgs === null || yieldArgs === void 0 ? void 0 : yieldArgs.skipToDate) &&\n stream.workingValue.isAfterOrEqual(yieldArgs.skipToDate)\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n stream.workingValue = stream.value;\n stream.next();\n }\n }\n *reverseRun(args = {}) {\n if (!this.config.base) return;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we must begin iterating `maxDuration`\n // before the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new DurationIterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n // checking `stream.workingValue` because when `stream.done === true`\n // `stream.workingValue` will not have been yielded yet\n while (stream.workingValue) {\n // TODO(@john.carroll.p): figure out how to handle `DateTime#generators` for merged `DateTimes`\n while (!stream.done && stream.workingValue.isBeforeOrEqual(stream.value.end)) {\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n if (\n stream.value.isBefore(stream.workingValue) ||\n stream.value.end.isAfter(stream.workingValue.end)\n ) {\n if (stream.value.end.isAfter(stream.workingValue.end)) {\n // `stream.workingValue` is a subset of `stream.value`\n // so simply replace `stream.workingValue` with `stream.value`\n stream.workingValue = stream.value;\n } else {\n const diff = stream.workingValue.valueOf() - stream.value.valueOf();\n stream.workingValue = stream.value.set('duration', stream.workingValue.duration + diff);\n }\n }\n stream.next();\n }\n // check to make sure the occurrence we are about to yield starts before the\n // provided start time.\n if (args.start && stream.workingValue.end.isBefore(args.start)) {\n break;\n }\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n stream.workingValue.end.isBefore(yieldArgs.skipToDate)\n ) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n // make sure we are not after the user requested `end` time.\n if (args.end && stream.workingValue && stream.workingValue.isAfter(args.end)) {\n stream.workingValue = stream.value;\n stream.next();\n continue;\n }\n if (stream.workingValue.duration > this.maxDuration) {\n throw new MergeDurationOperatorError(\n `MergeDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(stream.workingValue);\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n stream.workingValue.end.isBeforeOrEqual(yieldArgs.skipToDate)\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n stream.workingValue = stream.value;\n stream.next();\n }\n }\n}\n\nclass SplitDurationOperatorError extends Error {}\n/**\n * An operator function which takes an occurrence stream with\n * `hasDuration === true` and passes occurrences through a splitting\n * function. One usecase for this operator is to dynamically break up\n * occurrences with a large duration into several smaller occurrences.\n *\n * You must provide a `maxDuration` argument that represents the\n * maximum possible duration for a single occurrence. If this\n * duration is exceeded, a `SplitDurationOperatorError` will be\n * thrown.\n *\n * - For your convenience, you can globally set a default\n * `SplitDurationOperator#maxDuration` via\n * `RScheduleConfig.SplitDurationOperator.defaultMaxDuration`.\n *\n * Usage example:\n *\n * ```typescript\n * const MILLISECONDS_IN_HOUR = 1000 * 60 * 60;\n *\n * const splitFn = (date: DateTime) => {\n * if (date.duration > MILLISECONDS_IN_HOUR) {\n * const diff = date.duration! / 2;\n *\n * return [\n * date.set('duration', diff),\n * date.add(diff, 'millisecond').set('duration', diff),\n * ];\n * }\n *\n * return [date];\n * };\n *\n * const dates = new Dates({\n * dates: [\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 2 }),\n * ],\n * dateAdpter: StandardDateAdapter,\n * }).pipe(\n * splitDuration({\n * splitFn,\n * maxDuration: MILLISECONDS_IN_HOUR * 1\n * })\n * )\n *\n * expect(dates.occurrences().toArray()).toEqual([\n * new StandardDateAdapter(new Date(2010, 10, 10, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 13), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * new StandardDateAdapter(new Date(2010, 10, 11, 14), { duration: MILLISECONDS_IN_HOUR * 1 }),\n * ])\n * ```\n */\nfunction splitDuration(args) {\n return options => new SplitDurationOperator(args, options);\n}\nclass SplitDurationOperator extends Operator {\n constructor(args, config) {\n super([], config);\n this.splitFn = args.splitFn;\n this.maxDuration = args.maxDuration;\n if (config.base && !config.base.hasDuration) {\n throw new ArgumentError(\n 'Base stream provided to SplitDurationOperator does not have an associated duration. ' +\n 'The SplitDurationOperator can only be used with streams which have a duration.',\n );\n }\n }\n /** Not actually used but necessary for IRunnable interface */\n set(_, value) {\n return new SplitDurationOperator(\n {\n maxDuration: this.maxDuration,\n splitFn: this.splitFn,\n },\n Object.assign(Object.assign({}, this.config), {\n base: this.config.base && this.config.base.set('timezone', value),\n timezone: value,\n }),\n );\n }\n *_run(args = {}) {\n if (!this.config.base) return;\n const reverse = args.reverse || false;\n // We want to find occurrences that end after the provided\n // `start` time even if they begin before the provided `start`\n // time. Because of this, we add `maxDuration` to\n // the provided start time.\n let checkFromStart = args.start;\n if (args.start) {\n checkFromStart = args.start.subtract(this.maxDuration, 'millisecond');\n }\n // same goes for `end` time as with `start` time.\n let checkFromEnd = args.end;\n if (args.end) {\n checkFromEnd = args.end.add(this.maxDuration, 'millisecond');\n }\n const stream = new IterableWrapper(\n this.config.base,\n Object.assign(Object.assign({}, args), { start: checkFromStart, end: checkFromEnd }),\n );\n let yieldArgs;\n const datesBucket = [];\n while (!stream.done || (datesBucket[0] && datesBucket[0][0])) {\n /**\n * Example:\n * 10am - 2pm -> 10am - 12pm, 12pm - 2pm\n * 11am - 3pm -> 11am - 1pm, 1pm - 3pm\n * 2pm - 4pm -> 2pm - 3pm, 3pm - 4pm\n */\n if (!(datesBucket[0] && datesBucket[0][0])) {\n // we're out of dates\n datesBucket.push(this.splitDate(stream.value, reverse));\n stream.next();\n }\n while (\n !stream.done &&\n (reverse\n ? datesBucket[0].some(date => date.isBeforeOrEqual(stream.value.end))\n : datesBucket[0].some(date => date.isAfterOrEqual(stream.value)))\n ) {\n datesBucket.push(this.splitDate(stream.value, reverse));\n stream.next();\n }\n let selectedDate = datesBucket[0] && datesBucket[0][0];\n let bucketIndex = -1;\n let selectedBucketIndex = 0;\n let dateIndex = -1;\n let selectedDateIndex = 0;\n // find the next date as well as its location in the datesBucket\n for (const bucket of datesBucket) {\n bucketIndex++;\n dateIndex = -1;\n for (const date of bucket) {\n dateIndex++;\n let dateShouldComeNext;\n if (reverse) {\n dateShouldComeNext =\n date.isAfter(selectedDate) ||\n (date.isEqual(selectedDate) && date.duration > selectedDate.duration);\n } else {\n dateShouldComeNext =\n date.isBefore(selectedDate) ||\n (date.isEqual(selectedDate) && date.duration < selectedDate.duration);\n }\n if (dateShouldComeNext) {\n selectedDate = date;\n selectedBucketIndex = bucketIndex;\n selectedDateIndex = dateIndex;\n break;\n }\n }\n }\n datesBucket[selectedBucketIndex].splice(selectedDateIndex, 1);\n if (datesBucket[selectedBucketIndex].length === 0) {\n datesBucket.splice(selectedBucketIndex, 1);\n }\n // If we've been yieldedArgs from the last cycle, check to see\n // that the selectedDate honors the `skipToDate` requirement\n // if not, discard this selectedDate\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n selectedDate &&\n !datePastEnd(selectedDate, args) &&\n !datePastSkipToDate(selectedDate, yieldArgs.skipToDate, args)\n ) {\n continue;\n }\n // because we subtracted `maxDuration` to the base iterator's start time,\n // check to make sure the selectedDate we are about to yield should\n // actually be yielded (it may be before the provided `start` time).\n // If not, discard the selectedDate.\n if (args.start && selectedDate.end.isBefore(args.start)) {\n if (reverse) break;\n continue;\n }\n // because we added `maxDuration` to the base iterator's end time,\n // check to make sure the selectedDate we are about to yield should\n // actually be yielded (it may be after the provided `end` time).\n // If not, end iteration.\n if (args.end && selectedDate.isAfter(args.end)) {\n if (reverse) continue;\n break;\n }\n if (selectedDate.duration > this.maxDuration) {\n throw new SplitDurationOperatorError(\n `SplitDurationOperatorError: Occurrence duration exceeded maxDuration of ` +\n this.maxDuration,\n );\n }\n yieldArgs = yield this.normalizeRunOutput(selectedDate);\n if (\n yieldArgs &&\n yieldArgs.skipToDate &&\n (args.reverse\n ? selectedDate.isBeforeOrEqual(yieldArgs.skipToDate)\n : selectedDate.isAfterOrEqual(yieldArgs.skipToDate))\n ) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n }\n }\n calculateIsInfinite() {\n return !!(this.config.base && this.config.base.isInfinite);\n }\n calculateHasDuration() {\n return true;\n }\n splitDate(date, reverse) {\n const dates = this.splitFn(date);\n let valid;\n if (dates.length === 0) {\n valid = false;\n } else if (dates.length === 1) {\n valid = date.duration === dates[0].duration;\n } else {\n valid = date.duration === dates.reduce((prev, curr) => prev + curr.duration, 0);\n }\n if (!valid) {\n throw new Error(\n 'The provided SplitDurationOperator split function ' +\n 'must return an array of DateTimes with length > 0 ' +\n 'where the total duration of the new dates equals the duration of ' +\n 'the original date.',\n );\n }\n dates.sort(dateTimeSortComparer);\n if (reverse) {\n dates.reverse();\n }\n return dates;\n }\n}\nfunction datePastEnd(date, options) {\n return !!(options.reverse\n ? options.start && date.isBefore(options.start)\n : options.end && date.isAfter(options.end));\n}\nfunction datePastSkipToDate(date, skipToDate, options) {\n return !!(options.reverse ? skipToDate.isAfterOrEqual(date) : skipToDate.isBeforeOrEqual(date));\n}\n\nexport {\n AddOperator,\n Calendar,\n Collection,\n CollectionIterator,\n Dates,\n IntersectionOperator,\n MergeDurationOperator,\n MergeDurationOperatorError,\n OccurrenceGenerator,\n OccurrenceIterator,\n Operator,\n Rule,\n RuleBase,\n Schedule,\n ScheduleBase,\n SplitDurationOperator,\n SplitDurationOperatorError,\n SubtractOperator,\n UniqueOperator,\n add,\n intersection,\n mergeDuration,\n splitDuration,\n subtract,\n unique,\n};\n","class InvalidDateAdapterError extends Error {}\nlet dateAdapterConfig;\nclass DateAdapterBase {\n constructor(_date, options) {\n this.duration = (options && options.duration) || 0;\n this.generators = (options && options.generators && options.generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateAdapterError('duration must be a non-negative integer');\n }\n }\n static set adapter(value) {\n if (dateAdapterConfig) {\n throw new Error(`\"${dateAdapterConfig.name}\" has already been configured.`);\n }\n dateAdapterConfig = value;\n }\n static get adapter() {\n if (!dateAdapterConfig) {\n throw new Error('No date adapter has been configured. See rSchedule docs.');\n }\n return dateAdapterConfig;\n }\n static isDate(_object) {\n throw unimplementedError('isDate()');\n }\n static fromDate(_date, _options) {\n throw unimplementedError('fromDate()');\n }\n static fromJSON(_json) {\n throw unimplementedError('fromJSON()');\n }\n static fromDateTime(_datetime) {\n throw unimplementedError('fromDateTime()');\n }\n toDateTime() {\n const date = DateTime.fromJSON(\n Object.assign(Object.assign({}, this.toJSON()), { generators: this.generators }),\n );\n return date;\n }\n}\nDateAdapterBase.hasTimezoneSupport = false;\nfunction unimplementedError(name) {\n return new Error(`You must implement the \"${name}\" method for this DateAdapter class`);\n}\nvar DateAdapter;\n(function(DateAdapter) {\n DateAdapter.WEEKDAYS = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\n DateAdapter.MILLISECONDS_IN_SECOND = 1000;\n DateAdapter.MILLISECONDS_IN_MINUTE = DateAdapter.MILLISECONDS_IN_SECOND * 60;\n DateAdapter.MILLISECONDS_IN_HOUR = DateAdapter.MILLISECONDS_IN_MINUTE * 60;\n DateAdapter.MILLISECONDS_IN_DAY = DateAdapter.MILLISECONDS_IN_HOUR * 24;\n DateAdapter.MILLISECONDS_IN_WEEK = DateAdapter.MILLISECONDS_IN_DAY * 7;\n})(DateAdapter || (DateAdapter = {}));\nclass InvalidDateTimeError extends Error {}\nclass DateTime {\n constructor(date, timezone, duration, generators) {\n this.date = new Date(date);\n this.timezone = timezone || null;\n this.duration = duration || 0;\n this.generators = (generators && generators.slice()) || [];\n if (!Number.isInteger(this.duration) || this.duration < 0) {\n throw new InvalidDateTimeError('duration must be a non-negative integer');\n }\n this.assertIsValid();\n }\n // /**\n // * Similar to `Array.isArray()`, `isInstance()` provides a surefire method\n // * of determining if an object is a `DateTime` by checking against the\n // * global symbol registry.\n // */\n // static isInstance(object: any): object is DateTime {\n // return !!(object && object[DATETIME_ID]);\n // }\n static fromJSON(json) {\n const date = new Date(\n Date.UTC(\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ),\n );\n return new DateTime(date, json.timezone, json.duration, json.generators);\n }\n static fromDateAdapter(adapter) {\n return DateTime.fromJSON(\n Object.assign(Object.assign({}, adapter.toJSON()), { generators: adapter.generators }),\n );\n }\n /**\n * Returns `undefined` if `duration` is `0`. Else returns\n * the `end` date.\n */\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = this.add(this.duration, 'millisecond');\n return this._end;\n }\n // While we constrain the argument to be another DateAdapter in typescript\n // we handle the case of someone passing in another type of object in javascript\n isEqual(object) {\n if (!object) {\n return false;\n }\n assertSameTimeZone(this, object);\n return this.valueOf() === object.valueOf();\n }\n isBefore(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() < object.valueOf();\n }\n isBeforeOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() <= object.valueOf();\n }\n isAfter(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() > object.valueOf();\n }\n isAfterOrEqual(object) {\n assertSameTimeZone(this, object);\n return this.valueOf() >= object.valueOf();\n }\n isOccurring(object) {\n if (!this.duration) {\n throw new Error('DateTime#isOccurring() is only applicable to DateTimes with durations');\n }\n assertSameTimeZone(this, object);\n return (\n object.isAfterOrEqual(this) && object.isBeforeOrEqual(this.add(this.duration, 'millisecond'))\n );\n }\n add(amount, unit) {\n switch (unit) {\n case 'generator': {\n const generators = this.generators.slice();\n generators.unshift(amount);\n return new DateTime(this.date, this.timezone, this.duration, generators);\n }\n case 'year':\n return this.forkDateTime(addUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(addUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(addUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(addUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(addUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(addUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(addUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(addUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#add`');\n }\n }\n subtract(amount, unit) {\n switch (unit) {\n case 'year':\n return this.forkDateTime(subUTCYears(this.date, amount));\n case 'month':\n return this.forkDateTime(subUTCMonths(this.date, amount));\n case 'week':\n return this.forkDateTime(subUTCWeeks(this.date, amount));\n case 'day':\n return this.forkDateTime(subUTCDays(this.date, amount));\n case 'hour':\n return this.forkDateTime(subUTCHours(this.date, amount));\n case 'minute':\n return this.forkDateTime(subUTCMinutes(this.date, amount));\n case 'second':\n return this.forkDateTime(subUTCSeconds(this.date, amount));\n case 'millisecond':\n return this.forkDateTime(subUTCMilliseconds(this.date, amount));\n default:\n throw new Error('Invalid unit provided to `DateTime#subtract`');\n }\n }\n get(unit) {\n switch (unit) {\n case 'year':\n return this.date.getUTCFullYear();\n case 'month':\n return this.date.getUTCMonth() + 1;\n case 'yearday':\n return getUTCYearDay(this.date);\n case 'weekday':\n return DateAdapter.WEEKDAYS[this.date.getUTCDay()];\n case 'day':\n return this.date.getUTCDate();\n case 'hour':\n return this.date.getUTCHours();\n case 'minute':\n return this.date.getUTCMinutes();\n case 'second':\n return this.date.getUTCSeconds();\n case 'millisecond':\n return this.date.getUTCMilliseconds();\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n }\n set(unit, value) {\n if (unit === 'duration') {\n return new DateTime(this.date, this.timezone, value, this.generators);\n }\n if (unit === 'generators') {\n return new DateTime(this.date, this.timezone, this.duration, value);\n }\n let date = new Date(this.date);\n switch (unit) {\n case 'year':\n date.setUTCFullYear(value);\n break;\n case 'month': {\n // If the current day of the month\n // is greater than days in the month we are moving to, we need to also\n // set the day to the end of that month.\n const length = monthLength(value, date.getUTCFullYear());\n const day = date.getUTCDate();\n if (day > length) {\n date.setUTCDate(1);\n date.setUTCMonth(value);\n date = subUTCDays(date, 1);\n } else {\n date.setUTCMonth(value - 1);\n }\n break;\n }\n case 'day':\n date.setUTCDate(value);\n break;\n case 'hour':\n date.setUTCHours(value);\n break;\n case 'minute':\n date.setUTCMinutes(value);\n break;\n case 'second':\n date.setUTCSeconds(value);\n break;\n case 'millisecond':\n date.setUTCMilliseconds(value);\n break;\n default:\n throw new Error('Invalid unit provided to `DateTime#set`');\n }\n return this.forkDateTime(date);\n }\n granularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 1);\n case 'month':\n date = date.set('day', 1);\n break;\n case 'week':\n date = setDateToStartOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 0);\n case 'hour':\n date = date.set('minute', 0);\n case 'minute':\n date = date.set('second', 0);\n case 'second':\n date = date.set('millisecond', 0);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n endGranularity(granularity, opt = {}) {\n let date = this.forkDateTime(this.date);\n switch (granularity) {\n case 'year':\n date = date.set('month', 12);\n case 'month':\n date = date.set('day', monthLength(date.get('month'), date.get('year')));\n break;\n case 'week':\n date = setDateToEndOfWeek(date, opt.weekStart);\n }\n switch (granularity) {\n case 'year':\n case 'month':\n case 'week':\n case 'day':\n date = date.set('hour', 23);\n case 'hour':\n date = date.set('minute', 59);\n case 'minute':\n date = date.set('second', 59);\n case 'second':\n date = date.set('millisecond', 999);\n case 'millisecond':\n return date;\n default:\n throw new Error('Invalid granularity provided to `DateTime#granularity`: ' + granularity);\n }\n }\n toISOString() {\n return this.date.toISOString();\n }\n toDateTime() {\n return this;\n }\n toJSON() {\n const json = {\n timezone: this.timezone,\n year: this.get('year'),\n month: this.get('month'),\n day: this.get('day'),\n hour: this.get('hour'),\n minute: this.get('minute'),\n second: this.get('second'),\n millisecond: this.get('millisecond'),\n };\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n valueOf() {\n return this.date.valueOf();\n }\n assertIsValid() {\n if (isNaN(this.valueOf())) {\n throw new InvalidDateTimeError('DateTime has invalid date.');\n }\n return true;\n }\n forkDateTime(date) {\n return new DateTime(date, this.timezone, this.duration, this.generators);\n }\n}\nfunction assertSameTimeZone(x, y) {\n if (x.timezone !== y.timezone) {\n throw new InvalidDateTimeError(\n 'Attempted to compare a datetime to another date in a different timezone: ' +\n JSON.stringify(x) +\n ' and ' +\n JSON.stringify(y),\n );\n }\n return true;\n}\nfunction setDateToStartOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.subtract(index, 'day');\n}\nfunction setDateToEndOfWeek(date, wkst) {\n const index = orderedWeekdays(wkst).indexOf(date.get('weekday'));\n return date.add(6 - index, 'day');\n}\nfunction dateTimeSortComparer(a, b) {\n if (a.isAfter(b)) return 1;\n if (a.isBefore(b)) return -1;\n if (a.duration && b.duration) {\n if (a.duration > b.duration) return 1;\n if (a.duration < b.duration) return -1;\n }\n return 0;\n}\nfunction uniqDateTimes(dates) {\n return Array.from(new Map(dates.map(date => [date.toISOString(), date])).values());\n}\nfunction orderedWeekdays(wkst = 'SU') {\n const wkdays = DateAdapter.WEEKDAYS.slice();\n let index = wkdays.indexOf(wkst);\n while (index !== 0) {\n shiftArray(wkdays);\n index--;\n }\n return wkdays;\n}\nfunction shiftArray(array, from = 'first') {\n if (array.length === 0) {\n return array;\n } else if (from === 'first') {\n array.push(array.shift());\n } else {\n array.unshift(array.pop());\n }\n return array;\n}\nfunction getDifferenceBetweenWeekdays(x, y) {\n if (x === y) return 0;\n const result = DateAdapter.WEEKDAYS.indexOf(x) - DateAdapter.WEEKDAYS.indexOf(y);\n return result > 0 ? 7 - result : Math.abs(result);\n}\n/**\n * Returns the days in the given month.\n *\n * @param month base-1\n * @param year\n */\nfunction monthLength(month, year) {\n const block = {\n 1: 31,\n 2: getDaysInFebruary(year),\n 3: 31,\n 4: 30,\n 5: 31,\n 6: 30,\n 7: 31,\n 8: 31,\n 9: 30,\n 10: 31,\n 11: 30,\n 12: 31,\n };\n return block[month];\n}\nfunction getDaysInFebruary(year) {\n return isLeapYear(year) ? 29 : 28;\n}\n// taken from date-fn\nfunction isLeapYear(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\nfunction getDaysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\nfunction getUTCYearDay(now) {\n const start = new Date(Date.UTC(now.getUTCFullYear(), 0, 1));\n const diff = now.valueOf() - start.valueOf();\n return 1 + Math.floor(diff / DateAdapter.MILLISECONDS_IN_DAY);\n}\n/**\n * These functions are basically lifted from `date-fns`, but changed\n * to use the UTC date methods, which `date-fns` doesn't support.\n */\nfunction toInteger(input) {\n if (input === null || input === true || input === false) {\n return NaN;\n }\n const int = Number(input);\n if (isNaN(int)) {\n return int;\n }\n return int < 0 ? Math.ceil(int) : Math.floor(int);\n}\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\n }\n const timestamp = dirtyDate.valueOf();\n const amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}\nfunction addUTCYears(date, input) {\n const amount = toInteger(input);\n return addUTCMonths(date, amount * 12);\n}\nfunction addUTCMonths(date, input) {\n const amount = toInteger(input);\n date = new Date(date);\n const desiredMonth = date.getUTCMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setUTCFullYear(date.getUTCFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setUTCHours(0, 0, 0, 0);\n const daysInMonth = monthLength(\n dateWithDesiredMonth.getUTCMonth() + 1,\n dateWithDesiredMonth.getUTCFullYear(),\n );\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setUTCMonth(desiredMonth, Math.min(daysInMonth, date.getUTCDate()));\n return date;\n}\nfunction addUTCWeeks(date, input) {\n const amount = toInteger(input);\n const days = amount * 7;\n return addUTCDays(date, days);\n}\nfunction addUTCDays(date, input) {\n // by adding milliseconds rather than days, we supress the native Date object's automatic\n // daylight savings time conversions which we don't want in UTC mode\n return addUTCMilliseconds(date, toInteger(input) * DateAdapter.MILLISECONDS_IN_DAY);\n}\nfunction addUTCHours(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_HOUR);\n}\nfunction addUTCMinutes(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_MINUTE);\n}\nfunction addUTCSeconds(date, input) {\n const amount = toInteger(input);\n return addMilliseconds(date, amount * DateAdapter.MILLISECONDS_IN_SECOND);\n}\nfunction addUTCMilliseconds(date, input) {\n const amount = toInteger(input);\n const timestamp = date.getTime();\n return new Date(timestamp + amount);\n}\nfunction subUTCYears(date, amount) {\n return addUTCYears(date, -amount);\n}\nfunction subUTCMonths(date, amount) {\n return addUTCMonths(date, -amount);\n}\nfunction subUTCWeeks(date, amount) {\n return addUTCWeeks(date, -amount);\n}\nfunction subUTCDays(date, amount) {\n return addUTCDays(date, -amount);\n}\nfunction subUTCHours(date, amount) {\n return addUTCHours(date, -amount);\n}\nfunction subUTCMinutes(date, amount) {\n return addUTCMinutes(date, -amount);\n}\nfunction subUTCSeconds(date, amount) {\n return addUTCSeconds(date, -amount);\n}\nfunction subUTCMilliseconds(date, amount) {\n return addUTCMilliseconds(date, -amount);\n}\n\nclass ArgumentError extends Error {}\nclass InfiniteLoopError extends Error {}\nfunction numberSortComparer(a, b) {\n if (a > b) {\n return 1;\n } else if (b > a) {\n return -1;\n } else {\n return 0;\n }\n}\nfunction freqToGranularity(freq) {\n switch (freq) {\n case 'YEARLY':\n return 'year';\n case 'MONTHLY':\n return 'month';\n case 'WEEKLY':\n return 'week';\n case 'DAILY':\n return 'day';\n case 'HOURLY':\n return 'hour';\n case 'MINUTELY':\n return 'minute';\n case 'SECONDLY':\n return 'second';\n case 'MILLISECONDLY':\n return 'millisecond';\n default:\n throw new Error('unknown freq passed to freqToGranularity()');\n }\n}\nfunction cloneJSON(json) {\n return JSON.parse(JSON.stringify(json));\n}\nfunction dateInputToDateAdapter(date) {\n // prettier-ignore\n return date instanceof DateTime ? DateAdapterBase.adapter.fromDateTime(date) :\n date instanceof DateAdapterBase ? date :\n DateAdapterBase.adapter.fromDate(date);\n}\nfunction dateInputToDateTime(date, timezone) {\n if (date instanceof DateTime) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n }\n return date instanceof DateAdapterBase\n ? date.set('timezone', timezone).toDateTime()\n : DateAdapterBase.adapter\n .fromDate(date)\n .set('timezone', timezone)\n .toDateTime();\n}\n// export function normalizeDateInput<T extends DateAdapter>(\n// dateAdapter: DateAdapterConstructor<T>,\n// input: DateInput<T>,\n// timezone: string | null,\n// ): DateTime {\n// if (input instanceof DateTime) {\n// if (input.timezone !== timezone) {\n// return dateAdapter\n// .fromDateTime(input)\n// .set('timezone', timezone)\n// .toDateTime();\n// }\n// return input;\n// }\n// return input instanceof DateAdapter\n// ? input.set('timezone', timezone).toDateTime()\n// : new dateAdapter(input).toDateTime();\n// }\nfunction normalizeDateTimeTimezone(date, timezone) {\n if (date.timezone !== timezone) {\n return DateAdapterBase.adapter\n .fromDateTime(date)\n .set('timezone', timezone)\n .toDateTime();\n }\n return date;\n}\n\nclass RuleOptionError extends Error {}\nfunction normalizeDefaultOptions(options) {\n let start;\n if (options.start instanceof DateTime) {\n start = options.start;\n } else if (options.start instanceof DateAdapterBase) {\n start = options.start.toDateTime();\n } else if (DateAdapterBase.adapter.isDate(options.start)) {\n start = DateAdapterBase.adapter.fromDate(options.start).toDateTime();\n } else {\n throw new RuleOptionError(\n '\"start\" must be either a `DateAdapter` instance or an instance of the ' +\n 'date a DateAdapter is wrapping (e.g. `StandardDateAdapter` wraps a `Date`)',\n );\n }\n let end;\n if (options.end) {\n if (options.end instanceof DateTime) {\n end = options.end;\n } else if (options.end instanceof DateAdapterBase) {\n end = options.end.toDateTime();\n } else if (DateAdapterBase.adapter.isDate(options.end)) {\n end = DateAdapterBase.adapter.fromDate(options.end).toDateTime();\n } else {\n throw new RuleOptionError(\n '\"end\" must be either be `undefined`, a `DateAdapter` instance, or an instance of the ' +\n 'date a DateAdapter is wrapping (e.g. `StandardDateAdapter` wraps a `Date`)',\n );\n }\n }\n if (options.duration !== undefined) {\n if (!Number.isInteger(options.duration)) {\n throw new RuleOptionError('\"duration\" expects a whole number');\n }\n if (options.duration <= 0) {\n throw new RuleOptionError('\"duration\" must be greater than 0');\n }\n }\n if (options.count !== undefined) {\n if (!Number.isInteger(options.count)) {\n throw new RuleOptionError('\"count\" must be a whole number');\n }\n if (options.count < 0) {\n throw new RuleOptionError('\"count\" must be greater than 0');\n }\n }\n if (options.end !== undefined && options.count !== undefined) {\n throw new RuleOptionError('\"end\" and \"count\" cannot both be present');\n }\n return {\n start,\n end,\n count: options.count,\n duration: options.duration,\n };\n}\nfunction normalizeRuleOptions(recurrenceModules, options) {\n const normOptions = normalizeDefaultOptions(options);\n const startOptions = cloneJSON(options);\n recurrenceModules.forEach(mod => {\n mod.normalizeOptions(startOptions, normOptions);\n });\n Object.keys(normOptions).forEach(key => {\n if (normOptions[key] === undefined) {\n delete normOptions[key];\n }\n });\n return normOptions;\n}\nfunction cloneRuleOptions(options) {\n const obj = cloneJSON(options);\n obj.start = options.start;\n if (options.end) obj.end = options.end;\n return obj;\n}\n\nclass RecurrenceRuleError extends Error {}\nclass ValidDateTime {\n constructor(date) {\n this.date = date;\n }\n}\nclass InvalidDateTime {\n constructor(date) {\n this.date = date;\n }\n}\nfunction recurrenceRulesReducer(rules) {\n return iterator =>\n rules.reduce((prev, curr) => {\n const rule = curr.get(iterator);\n if (rule) prev.push(rule);\n return prev;\n }, []);\n}\n\nclass RecurrenceRulesIterator {\n constructor(recurrenceRules, options, args) {\n this.options = options;\n this.args = args;\n this.rules = [];\n this.iterator =\n // prettier-ignore\n this.options.count === undefined ? this.iterate() :\n this.args.reverse ? this.iterateWithReverseCount() :\n this.iterateWithCount();\n this.options = Object.assign(Object.assign({}, cloneJSON(options)), {\n start: options.start,\n end: options.end,\n });\n this.reverse = (this.options.count === undefined && args.reverse) || false;\n const { start, end } = this.normalizeDateTimeArgs(args);\n if (options.count !== undefined) {\n this.start = options.start;\n } else if (start && options.start) {\n this.start = start.isAfterOrEqual(options.start) ? start : options.start;\n } else {\n this.start = start || options.start;\n }\n if (end && options.end) {\n this.end = end.isBeforeOrEqual(options.end) ? end : options.end;\n } else {\n this.end = end || options.end;\n }\n if (this.args.reverse && !(options.count !== undefined || this.end)) {\n throw new Error(\n 'When iterating in reverse, the rule must have an `end` or `count` ' +\n 'property or you must provide an `end` argument.',\n );\n }\n this.isInfinite = !this.end && this.options.count === undefined;\n this.hasDuration = !!this.options.duration;\n this.rules = Array.isArray(recurrenceRules) ? recurrenceRules : recurrenceRules(this);\n }\n [Symbol.iterator]() {\n return this.iterator;\n }\n next(args) {\n return this.iterator.next(args);\n }\n /**\n * In the pipe controller, we have an extra level of indirection with\n * the `run()` and `iterate()` methods. The `iterate()` method is the\n * method which actually runs the logic in the pipes. If we didn't\n * need to account for the `count` property of a rule, we would *only*\n * need the iterate method... so much simpler. But we do need to account\n * for rules with a `count` property.\n *\n * Rules with a `count` property need to begin iteration at the beginning\n * because the `count` is always from the rule's start time. So if someone\n * passes in a new start time as an argument to a rule with `count`, we\n * need to secretly iterate from the beginning, tracking the number of\n * iterations, and then only start yielding dates when we reach the section\n * the user cares about (or, if we hit our `count` quota, cancel iterating).\n *\n * Additionally, we need to handle iterating in reverse. In this case, we build\n * up a cache of dates between the rule's start time and the reverse iteration\n * start date. Once we hit the reverse iteration start date, we start\n * yielding dates in the cache, in reverse order.\n *\n * In general, I imagine the count number, if used, will be small. But a large\n * count will definitely have a negative performance affect. I don't think\n * there's anything to be done about this.\n */\n *iterateWithReverseCount() {\n const dates = Array.from(this.iterateWithCount()).reverse();\n let yieldArgs;\n const dateCache = dates.slice();\n let date = dateCache.shift();\n while (date) {\n if (yieldArgs && yieldArgs.skipToDate && date.isAfter(yieldArgs.skipToDate)) {\n date = dateCache.shift();\n continue;\n }\n yieldArgs = yield date;\n if (yieldArgs && yieldArgs.skipToDate && yieldArgs.skipToDate.isAfterOrEqual(date)) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = dateCache.shift();\n }\n return undefined;\n }\n *iterateWithCount() {\n if (this.options.count === 0) return;\n const iterable = this.iterate();\n const start = this.args.start || this.start;\n let date = iterable.next().value;\n let index = 1;\n let yieldArgs;\n while (date && index <= this.options.count) {\n index++;\n if (date.isBefore(start)) {\n date = iterable.next().value;\n continue;\n }\n if (yieldArgs && yieldArgs.skipToDate && date.isBefore(yieldArgs.skipToDate)) {\n date = iterable.next().value;\n continue;\n }\n yieldArgs = yield date;\n if (yieldArgs && yieldArgs.skipToDate && yieldArgs.skipToDate.isBeforeOrEqual(date)) {\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = iterable.next().value;\n }\n return undefined;\n }\n *iterate() {\n let startingDate = this.start;\n if (this.reverse) startingDate = this.end;\n let date = this.nextDate(startingDate);\n while (date) {\n const args = yield this.normalizeRunOutput(date);\n if (args && args.skipToDate) {\n if (\n this.reverse\n ? args.skipToDate.isAfterOrEqual(date)\n : args.skipToDate.isBeforeOrEqual(date)\n ) {\n // We cannot consistently skip backwards because after an iterator is \"done\"\n // it always returns undefined and you cannot reset it. Theoretically, it would be\n // fine to skip backwards if the iterator wasn't already \"done\", but this\n // would be prone to user error so we simply disallow skipping backwards altogether.\n throw new Error(\n 'A provided `skipToDate` option must be greater than the last yielded date ' +\n '(or smaller, in the case of reverse iteration)',\n );\n }\n date = this.nextDate(args.skipToDate);\n } else {\n date = this.nextDate(\n this.reverse ? date.subtract(1, 'millisecond') : date.add(1, 'millisecond'),\n );\n }\n }\n return undefined;\n }\n /**\n * Loops through the recurrence rules until a valid date is found.\n */\n nextDate(start) {\n let result = this.runRules(start.set('generators', []));\n if (this.isDatePastEnd(result.date)) return null;\n let index = 0;\n while (result instanceof InvalidDateTime && index < 50) {\n result = this.runRules(result.date);\n if (this.isDatePastEnd(result.date)) return null;\n index++;\n }\n if (result instanceof InvalidDateTime) {\n throw new RecurrenceRuleError(\n `Failed to find a matching occurrence in ${index} iterations. ` +\n `Last iterated date: \"${result.date.toISOString()}\"`,\n );\n }\n if (this.reverse ? start.isBefore(result.date) : start.isAfter(result.date)) {\n throw new RecurrenceRuleError(\n 'An error occurred in a recurrence rule. If this happened using ' +\n 'the rSchedule provided recurrence rules, you should ' +\n 'open an issue in the rSchedule repo. The maintainer is going to ' +\n 'want to know how to recreate the error.',\n );\n }\n return result.date;\n }\n /**\n * Performs one run of the recurrence rules and returns the result.\n * It's a slightly optimized reducer function.\n */\n runRules(start) {\n let result = new ValidDateTime(start);\n for (const rule of this.rules) {\n if (result instanceof InvalidDateTime) {\n return result;\n }\n result = rule.run(result.date);\n }\n return result;\n }\n isDatePastEnd(date) {\n return this.reverse ? date.isBefore(this.start) : this.end && date.isAfter(this.end);\n }\n normalizeRunOutput(date) {\n return this.hasDuration ? date.set('duration', this.options.duration) : date;\n }\n normalizeDateTimeArgs(args) {\n return {\n start: args.start && normalizeDateTimeTimezone(args.start, this.options.start.timezone),\n end: args.end && normalizeDateTimeTimezone(args.end, this.options.start.timezone),\n };\n }\n}\n\nexport {\n ArgumentError,\n DateAdapter,\n DateAdapterBase,\n DateTime,\n InfiniteLoopError,\n InvalidDateAdapterError,\n InvalidDateTime,\n InvalidDateTimeError,\n RecurrenceRuleError,\n RecurrenceRulesIterator,\n RuleOptionError,\n ValidDateTime,\n cloneJSON,\n cloneRuleOptions,\n dateInputToDateAdapter,\n dateInputToDateTime,\n dateTimeSortComparer,\n freqToGranularity,\n getDaysInYear,\n getDifferenceBetweenWeekdays,\n isLeapYear,\n normalizeDateTimeTimezone,\n normalizeRuleOptions,\n numberSortComparer,\n orderedWeekdays,\n recurrenceRulesReducer,\n uniqDateTimes,\n};\n","import {\n freqToGranularity,\n ValidDateTime,\n InvalidDateTime,\n DateAdapter,\n RuleOptionError,\n numberSortComparer,\n getDifferenceBetweenWeekdays,\n RecurrenceRuleError,\n uniqDateTimes,\n dateTimeSortComparer,\n} from '@rschedule/core';\n\nclass RecurrenceRule {\n constructor(processor) {\n this.processor = processor;\n this.start = processor.start;\n this.end = processor.end;\n this.options = processor.options;\n }\n}\n\nclass FrequencyRule extends RecurrenceRule {\n constructor(processor, initDate) {\n super(processor);\n this.initDate = initDate;\n this.intervalUnit = freqToGranularity(this.options.frequency);\n this.firstIntervalStartDate = this.normalizedStartDate(this.options.start);\n this.intervalStartDate = this.firstIntervalStartDate;\n this.intervalEndDate = this.normalizedEndDate(this.firstIntervalStartDate);\n this.skipToInterval(this.initDate);\n }\n run(date) {\n return this.validateDate(new ValidDateTime(date));\n }\n validateDate(arg) {\n const { date } = arg;\n if (arg instanceof ValidDateTime && this.dateIsWithinInterval(date)) {\n return arg;\n }\n this.skipToInterval(date);\n return new InvalidDateTime(\n // if the interval is 1, date will always be within the interval\n this.dateIsWithinInterval(date) ? date : this.setToCurrentInterval(),\n );\n }\n setToCurrentInterval() {\n return this.intervalStartDate;\n }\n normalizedStartDate(date) {\n if (this.options.frequency === 'WEEKLY') {\n return date.granularity('week', { weekStart: this.options.weekStart });\n }\n return date.granularity(this.intervalUnit);\n }\n normalizedEndDate(start) {\n switch (this.options.frequency) {\n case 'YEARLY':\n return start.add(1, 'year');\n case 'MONTHLY':\n return start.add(1, 'month');\n case 'WEEKLY':\n return start.add(1, 'week');\n case 'DAILY':\n return start.add(1, 'day');\n case 'HOURLY':\n return start.add(1, 'hour');\n case 'MINUTELY':\n return start.add(1, 'minute');\n case 'SECONDLY':\n return start.add(1, 'second');\n case 'MILLISECONDLY':\n return start.add(1, 'millisecond');\n default:\n throw new Error(`Unknown frequency ${this.options.frequency}`);\n }\n }\n skipToInterval(date) {\n const amount = this.intervalDifference(date);\n this.intervalStartDate = this.firstIntervalStartDate.add(amount, this.intervalUnit);\n this.intervalEndDate = this.normalizedEndDate(this.intervalStartDate);\n }\n dateIsWithinInterval(date) {\n return this.intervalStartDate.isBeforeOrEqual(date) && this.intervalEndDate.isAfter(date);\n }\n intervalDifference(date) {\n return intervalDifferenceBetweenDates({\n first: this.firstIntervalStartDate,\n second: date,\n unit: this.intervalUnit,\n interval: this.options.interval,\n weekStart: this.options.weekStart,\n direction: 'after',\n });\n }\n}\n/**\n * Given the frequency (unit) and interval, this function finds\n * how many jumps forward the first date needs in order to equal\n * or exceed the second date.\n *\n * For example:\n *\n * 1. Unit is daily and interval is 1. The second date is 3 days\n * after the first. This will return 3.\n * 2. Unit is yearly and interval is 1. The second date is 3 days\n * after the first. This will return 0.\n * 3. Unit is yearly and interval is 3. The second date is 4 years\n * after the first. This will return 6.\n */\nfunction intervalDifferenceBetweenDates({ first, second, unit, interval, weekStart, direction }) {\n let difference = (() => {\n let intervalDuration;\n let months;\n switch (unit) {\n case 'year':\n months = (second.get('year') - first.get('year')) * 12;\n months = months + second.get('month') - first.get('month');\n return Math.floor(months / 12);\n case 'month':\n months = (second.get('year') - first.get('year')) * 12;\n months = months + second.get('month') - first.get('month');\n return months;\n case 'week':\n first = first.granularity('week', { weekStart });\n intervalDuration = DateAdapter.MILLISECONDS_IN_WEEK;\n break;\n case 'day':\n intervalDuration = DateAdapter.MILLISECONDS_IN_DAY;\n break;\n case 'hour':\n intervalDuration = DateAdapter.MILLISECONDS_IN_HOUR;\n break;\n case 'minute':\n intervalDuration = DateAdapter.MILLISECONDS_IN_MINUTE;\n break;\n case 'second':\n intervalDuration = DateAdapter.MILLISECONDS_IN_SECOND;\n break;\n case 'millisecond':\n intervalDuration = 1;\n break;\n default:\n throw new Error('Unexpected `unit` value');\n }\n const diff = second.valueOf() - first.valueOf();\n return Math.floor(diff / intervalDuration);\n })();\n const fn = direction === 'after' ? Math.ceil : Math.floor;\n difference = fn(difference / interval) * interval;\n return difference;\n}\n\nclass RevFrequencyRule extends FrequencyRule {\n setToCurrentInterval() {\n return this.intervalEndDate.subtract(1, 'millisecond');\n }\n intervalDifference(date) {\n return intervalDifferenceBetweenDates({\n first: this.firstIntervalStartDate,\n second: date,\n unit: this.intervalUnit,\n interval: this.options.interval,\n weekStart: this.options.weekStart,\n direction: 'before',\n });\n }\n}\n\nconst FREQUENCIES = [\n 'MILLISECONDLY',\n 'SECONDLY',\n 'MINUTELY',\n 'HOURLY',\n 'DAILY',\n 'WEEKLY',\n 'MONTHLY',\n 'YEARLY',\n];\nconst FrequencyRuleModule = {\n name: 'FrequencyRule',\n get: processor => {\n if (\n processor.options.byMillisecondOfSecond !== undefined ||\n processor.options.frequency !== 'MILLISECONDLY'\n ) {\n return null;\n }\n if (processor.reverse) return new RevFrequencyRule(processor, processor.end);\n return new FrequencyRule(processor, processor.start);\n },\n normalizeOptions: (options, norm) => {\n if (!FREQUENCIES.includes(options.frequency)) {\n throw new RuleOptionError(`\"frequency\" must be one of ${JSON.stringify(FREQUENCIES)}`);\n }\n if (options.interval !== undefined) {\n if (!Number.isInteger(options.interval)) {\n throw new RuleOptionError('\"interval\" expects a whole number');\n }\n if (options.interval < 1) {\n throw new RuleOptionError('\"interval\" cannot be less than 1');\n }\n }\n if (options.weekStart !== undefined) {\n if (!DateAdapter.WEEKDAYS.includes(options.weekStart)) {\n throw new RuleOptionError(\n `\"weekStart\" must be one of ${JSON.stringify(DateAdapter.WEEKDAYS)}`,\n );\n }\n }\n norm.frequency = options.frequency;\n norm.interval = options.interval || 1;\n norm.weekStart = options.weekStart || 'MO';\n },\n deps: () => [FrequencyRuleModule],\n};\n\nfunction ruleOptionFilled(option) {\n return Array.isArray(option) && option.length > 0;\n}\n\nconst freqCache = new WeakMap();\nclass RecurrenceRuleBase extends RecurrenceRule {\n constructor(processor) {\n super(processor);\n if (!freqCache.has(this.processor)) {\n freqCache.set(this.processor, new FrequencyRule(processor, processor.start));\n }\n this.frequency = freqCache.get(this.processor);\n }\n validateDate(arg) {\n return this.frequency.validateDate(arg);\n }\n}\nclass RevRecurrenceRuleBase extends RecurrenceRule {\n constructor(processor) {\n super(processor);\n if (!freqCache.has(this.processor)) {\n freqCache.set(this.processor, new RevFrequencyRule(processor, processor.end));\n }\n this.frequency = freqCache.get(this.processor);\n }\n validateDate(arg) {\n return this.frequency.validateDate(arg);\n }\n}\n\n/**\n * Contains shared logic for ByHourOfDay, ByMinuteOfHour,\n * BySecondOfMinute, and ByMillisecondOfSecond reverse rule pipes\n */\nclass RevByTimeOfUnitRule extends RevRecurrenceRuleBase {\n run(date) {\n // e.g. const currentTime = date.get('hour');\n const currentTime = date.get(this.granularity);\n // e.g. for (const time of this.options.byHourOfDay) {\n for (const time of this.option) {\n if (currentTime < time) continue;\n if (currentTime === time) {\n return this.validateDate(new ValidDateTime(date));\n }\n // e.g. return this.nextValidDate(args, date.endGranularity('day').set('hour', time));\n return this.validateDate(\n new InvalidDateTime(date.endGranularity(this.baseGranularity).set(this.granularity, time)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n // e.g. .endGranularity('day')\n .endGranularity(this.baseGranularity)\n // e.g. .subtract(1, 'day')\n .subtract(1, this.baseGranularity)\n // e.g. .set('hour', this.options.byHourOfDay[0]);\n .set(this.granularity, this.option[0]),\n ),\n );\n }\n}\n\nclass RevByMillisecondOfSecondRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'second';\n this.granularity = 'millisecond';\n this.option = this.options.byMillisecondOfSecond.slice().reverse();\n }\n}\n\n/**\n * Contains shared logic for ByHourOfDay, ByMinuteOfHour,\n * BySecondOfMinute, and ByMillisecondOfSecond rule pipes\n */\nclass ByTimeOfUnitRule extends RecurrenceRuleBase {\n run(date) {\n // e.g. const currentTime = date.get('hour');\n const currentTime = date.get(this.granularity);\n // e.g. for (const time of this.options.byHourOfDay) {\n for (const time of this.option) {\n if (currentTime > time) continue;\n if (currentTime === time) {\n return this.validateDate(new ValidDateTime(date));\n }\n // e.g. return this.nextValidDate(args, date.granularity('day').set('hour', time));\n return this.validateDate(\n new InvalidDateTime(date.granularity(this.baseGranularity).set(this.granularity, time)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n // e.g. .granularity('day')\n .granularity(this.baseGranularity)\n // e.g. .add(1, 'day')\n .add(1, this.baseGranularity)\n // e.g. .set('hour', this.options.byHourOfDay[0]);\n .set(this.granularity, this.option[0]),\n ),\n );\n }\n}\n\nclass ByMillisecondOfSecondRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'second';\n this.granularity = 'millisecond';\n this.option = this.options.byMillisecondOfSecond;\n }\n}\n\nconst ByMillisecondOfSecondRuleModule = {\n name: 'ByMillisecondOfSecond',\n get: processor => {\n if (processor.options.byMillisecondOfSecond === undefined) return null;\n if (processor.reverse) return new RevByMillisecondOfSecondRule(processor);\n return new ByMillisecondOfSecondRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMillisecondOfSecond !== undefined) {\n if (!ruleOptionFilled(options.byMillisecondOfSecond)) {\n throw new RuleOptionError('\"byMillisecondOfSecond\" expects a non-empty array');\n }\n if (options.byMillisecondOfSecond.some(num => num < 0 || num > 999)) {\n throw new RuleOptionError('\"byMillisecondOfSecond\" values must be >= 0 && <= 999');\n }\n norm.byMillisecondOfSecond = options.byMillisecondOfSecond;\n norm.byMillisecondOfSecond.sort(numberSortComparer);\n } else if (options.frequency !== 'MILLISECONDLY') {\n norm.byMillisecondOfSecond = [norm.start.get('millisecond')];\n }\n },\n deps: () => [FrequencyRuleModule, ByMillisecondOfSecondRuleModule],\n};\n\nclass RevBySecondOfMinuteRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'minute';\n this.granularity = 'second';\n this.option = this.options.bySecondOfMinute.slice().reverse();\n }\n}\n\nclass BySecondOfMinuteRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'minute';\n this.granularity = 'second';\n this.option = this.options.bySecondOfMinute;\n }\n}\n\nconst BySecondOfMinuteRuleModule = {\n name: 'BySecondOfMinute',\n get: processor => {\n if (processor.options.bySecondOfMinute === undefined) return null;\n if (processor.reverse) return new RevBySecondOfMinuteRule(processor);\n return new BySecondOfMinuteRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.bySecondOfMinute !== undefined) {\n if (!ruleOptionFilled(options.bySecondOfMinute)) {\n throw new RuleOptionError('\"bySecondOfMinute\" expects a non-empty array');\n }\n if (options.bySecondOfMinute.some(num => num < 0 || num > 60)) {\n throw new RuleOptionError('\"bySecondOfMinute\" values must be >= 0 && <= 60');\n }\n norm.bySecondOfMinute = options.bySecondOfMinute;\n norm.bySecondOfMinute.sort(numberSortComparer);\n } else if (!['SECONDLY', 'MILLISECONDLY'].includes(options.frequency)) {\n norm.bySecondOfMinute = [norm.start.get('second')];\n }\n },\n deps: () => [FrequencyRuleModule, BySecondOfMinuteRuleModule, ByMillisecondOfSecondRuleModule],\n};\n\nclass RevByMinuteOfHourRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'hour';\n this.granularity = 'minute';\n this.option = this.options.byMinuteOfHour.slice().reverse();\n }\n}\n\nclass ByMinuteOfHourRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'hour';\n this.granularity = 'minute';\n this.option = this.options.byMinuteOfHour;\n }\n}\n\nconst ByMinuteOfHourRuleModule = {\n name: 'ByMinuteOfHour',\n get: processor => {\n if (processor.options.byMinuteOfHour === undefined) return null;\n if (processor.reverse) return new RevByMinuteOfHourRule(processor);\n return new ByMinuteOfHourRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMinuteOfHour !== undefined) {\n if (!ruleOptionFilled(options.byMinuteOfHour)) {\n throw new RuleOptionError('\"byMinuteOfHour\" expects a non-empty array');\n }\n if (options.byMinuteOfHour.some(num => num < 0 || num > 59)) {\n throw new RuleOptionError('\"byMinuteOfHour\" values must be >= 0 && <= 59');\n }\n norm.byMinuteOfHour = options.byMinuteOfHour;\n norm.byMinuteOfHour.sort(numberSortComparer);\n } else if (!['MINUTELY', 'SECONDLY', 'MILLISECONDLY'].includes(options.frequency)) {\n norm.byMinuteOfHour = [norm.start.get('minute')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nclass RevByHourOfDayRule extends RevByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'day';\n this.granularity = 'hour';\n this.option = this.options.byHourOfDay.slice().reverse();\n }\n}\n\nclass ByHourOfDayRule extends ByTimeOfUnitRule {\n constructor() {\n super(...arguments);\n this.baseGranularity = 'day';\n this.granularity = 'hour';\n this.option = this.options.byHourOfDay;\n }\n}\n\nconst ByHourOfDayRuleModule = {\n name: 'ByHourOfDay',\n get: processor => {\n if (processor.options.byHourOfDay === undefined) return null;\n if (processor.reverse) return new RevByHourOfDayRule(processor);\n return new ByHourOfDayRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byHourOfDay !== undefined) {\n if (!ruleOptionFilled(options.byHourOfDay)) {\n throw new RuleOptionError('\"byHourOfDay\" expects a non-empty array');\n }\n if (options.byHourOfDay.some(num => num < 0 || num > 23)) {\n throw new RuleOptionError('\"byHourOfDay\" values must be >= 0 && <= 23');\n }\n norm.byHourOfDay = options.byHourOfDay;\n norm.byHourOfDay.sort(numberSortComparer);\n } else if (['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY'].includes(options.frequency)) {\n norm.byHourOfDay = [norm.start.get('hour')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nfunction getNextWeekday(date, weekday) {\n return date.add(getDifferenceBetweenWeekdays(date.get('weekday'), weekday), 'day');\n}\n\nfunction getNthWeekdayOfMonth(date, weekday, nth) {\n let base = date.set('day', 1);\n if (nth < 0) {\n base = base.add(1, 'month');\n }\n base = getNextWeekday(base, weekday);\n // when nth is negative, adding it will act as subtraction\n return nth < 0 ? base.add(nth, 'week') : base.add(nth - 1, 'week');\n}\n\nclass ByDayOfMonthRule extends RecurrenceRuleBase {\n run(date) {\n const normalizedByDayOfMonth = normalizeByDayOfMonth(\n date,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n );\n const currentDay = date.get('day');\n for (const day of normalizedByDayOfMonth) {\n if (currentDay > day) continue;\n if (currentDay === day) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.granularity('month').set('day', day)));\n }\n let next;\n let nextMonth = date;\n let index = 0;\n while (!next && index < 30) {\n nextMonth = nextMonth.granularity('month').add(1, 'month');\n next = normalizeByDayOfMonth(\n nextMonth,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n )[0];\n index++;\n }\n if (index >= 13) {\n throw new RecurrenceRuleError('byDayOfMonth Infinite while loop');\n }\n return this.validateDate(new InvalidDateTime(nextMonth.set('day', next)));\n }\n}\n/**\n * Does a few things:\n *\n * 1. filters out byDayOfMonth entries which are not applicable\n * to current month\n * 2. negative entries to positive ones\n * 3. if a byDayOfWeek option is given, removes days which are\n * not on the correct day of the week\n */\nfunction normalizeByDayOfMonth(date, byDayOfMonth, byDayOfWeek) {\n const lengthOfMonth = date.endGranularity('month').get('day');\n let normalizedByDayOfMonth = byDayOfMonth\n .filter(day => lengthOfMonth >= Math.abs(day))\n .map(day => (day > 0 ? day : lengthOfMonth + day + 1));\n if (byDayOfWeek) {\n const base = date.granularity('month');\n const filteredByDayOfMonth = [];\n byDayOfWeek.forEach(entry => {\n if (typeof entry === 'string') {\n filteredByDayOfMonth.push(\n ...normalizedByDayOfMonth.filter(day => base.set('day', day).get('weekday') === entry),\n );\n return;\n }\n const nthWeekdayOfMonth = getNthWeekdayOfMonth(date, ...entry).get('day');\n if (normalizedByDayOfMonth.includes(nthWeekdayOfMonth)) {\n filteredByDayOfMonth.push(nthWeekdayOfMonth);\n }\n });\n normalizedByDayOfMonth = Array.from(new Set(filteredByDayOfMonth));\n }\n return normalizedByDayOfMonth.sort((a, b) => {\n if (a > b) return 1;\n if (a < b) return -1;\n else return 0;\n });\n}\n\nclass RevByDayOfMonthRule extends RevRecurrenceRuleBase {\n run(date) {\n const normalizedByDayOfMonth = normalizeByDayOfMonth(\n date,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n ).reverse();\n const currentDay = date.get('day');\n for (const day of normalizedByDayOfMonth) {\n if (currentDay < day) continue;\n if (currentDay === day) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.endGranularity('month').set('day', day)));\n }\n let next;\n let nextMonth = date;\n let index = 0;\n while (!next && index < 30) {\n nextMonth = nextMonth.endGranularity('month').subtract(1, 'month');\n next = normalizeByDayOfMonth(\n nextMonth,\n this.options.byDayOfMonth,\n this.options.byDayOfWeek,\n ).pop();\n index++;\n }\n if (index >= 13) {\n throw new RecurrenceRuleError('byDayOfMonth Infinite while loop');\n }\n return this.validateDate(new InvalidDateTime(nextMonth.set('day', next)));\n }\n}\n\nconst ByDayOfMonthRuleModule = {\n name: 'ByDayOfMonth',\n get: processor => {\n if (processor.options.byDayOfMonth === undefined) return null;\n if (processor.reverse) return new RevByDayOfMonthRule(processor);\n return new ByDayOfMonthRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byDayOfMonth !== undefined) {\n if (options.frequency === 'WEEKLY') {\n throw new RuleOptionError('when \"frequency\" is \"WEEKLY\", \"byDayOfMonth\" cannot be present');\n }\n if (!ruleOptionFilled(options.byDayOfMonth)) {\n throw new RuleOptionError('\"byDayOfMonth\" expects a non-empty array');\n }\n if (options.byDayOfMonth.some(num => num === 0 || num < -31 || num > 31)) {\n throw new RuleOptionError(\n '\"byDayOfMonth\" values must be `num !== 0 && num <= 31 && num >= -31`',\n );\n }\n norm.byDayOfMonth = options.byDayOfMonth.slice();\n } else if (\n !(ruleOptionFilled(options.byDayOfWeek) || ruleOptionFilled(options.byDayOfYear)) &&\n ['YEARLY', 'MONTHLY'].includes(options.frequency)\n ) {\n norm.byDayOfMonth = [norm.start.get('day')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByDayOfMonthRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nfunction getNthWeekdayOfYear(date, weekday, nth) {\n let base = date.set('month', 1).set('day', 1);\n if (nth < 0) {\n base = base.add(1, 'year');\n }\n base = getNextWeekday(base, weekday);\n // when nth is negative, adding it will act as subtraction\n return nth < 0 ? base.add(nth, 'week') : base.add(nth - 1, 'week');\n}\n\nfunction getPreviousWeekday(date, weekday) {\n const diff = getDifferenceBetweenWeekdays(date.get('weekday'), weekday);\n return date.subtract(diff === 0 ? 0 : 7 - diff, 'day');\n}\n\nclass RevByDayOfWeekRule extends RevRecurrenceRuleBase {\n run(date) {\n if (this.options.frequency === 'YEARLY') {\n return this.options.byMonthOfYear === undefined\n ? this.expandYearly(date)\n : this.expandMonthly(date);\n } else if (this.options.frequency === 'MONTHLY') {\n return this.expandMonthly(date);\n }\n return this.expand(date);\n }\n expandYearly(date) {\n let next = getPrevWeekdaysOfYear(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // If we can't find a valid date this year,\n // search the previous year. Only search the past 28 years.\n // (the calendar repeats on a 28 year cycle, according\n // to the internet).\n while (!next && index < 28) {\n index++;\n base = base.granularity('year').subtract(1, 'millisecond');\n next = getPrevWeekdaysOfYear(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expandMonthly(date) {\n let next = getPrevWeekdaysOfMonth(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // TODO: performance improvment\n // If, in the first year, a match isn't found, we should be able to\n // jumpt to the previous leap year and check that. Or, if already on\n // a leap year, we can just error immediately.\n // If we can't find a valid date this month,\n // search the previous month. Only search the past 4 years\n // (to account for leap year).\n while (!next && index < 50) {\n index++;\n base = base.granularity('month').subtract(1, 'millisecond');\n next = getPrevWeekdaysOfMonth(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expand(date) {\n const next = this.options.byDayOfWeek\n .map(weekday => getPreviousWeekday(date, weekday))\n .sort(dateTimeSortComparer)\n .pop();\n return this.result(date, next);\n }\n result(date, next) {\n if (next.isEqual(date)) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(next.endGranularity('day')));\n }\n}\n/** For each byDayOfWeek entry, find the previous DateTime */\nfunction getPrevWeekdaysOfYear(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfYear = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfYear(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getPreviousWeekday(date, weekday))\n .filter(entry => entry.get('year') === date.get('year'));\n return uniqDateTimes([...normalizedNthWeekdaysOfYear, ...normalizedNextWeekdays])\n .filter(entry => entry.isBeforeOrEqual(date))\n .sort(dateTimeSortComparer)\n .reverse();\n}\n/** For each byDayOfWeek entry, find the previous DateTime */\nfunction getPrevWeekdaysOfMonth(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfMonth = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfMonth(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getPreviousWeekday(date, weekday))\n .filter(\n entry => entry.get('year') === date.get('year') && entry.get('month') === date.get('month'),\n );\n return uniqDateTimes([...normalizedNthWeekdaysOfMonth, ...normalizedNextWeekdays])\n .filter(entry => entry.isBeforeOrEqual(date))\n .sort(dateTimeSortComparer)\n .reverse();\n}\n\nclass ByDayOfWeekRule extends RecurrenceRuleBase {\n run(date) {\n if (this.options.frequency === 'YEARLY') {\n return this.options.byMonthOfYear === undefined\n ? this.expandYearly(date)\n : this.expandMonthly(date);\n } else if (this.options.frequency === 'MONTHLY') {\n return this.expandMonthly(date);\n }\n return this.expand(date);\n }\n expandYearly(date) {\n let next = getNextWeekdaysOfYear(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // If we can't find a valid date this year,\n // search next year. Only search the next 28 years.\n // (the calendar repeats on a 28 year cycle, according\n // to the internet).\n while (!next && index < 28) {\n index++;\n base = base.granularity('year').add(1, 'year');\n next = getNextWeekdaysOfYear(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expandMonthly(date) {\n let next = getNextWeekdaysOfMonth(date, this.options.byDayOfWeek)[0];\n let index = 0;\n let base = date;\n // TODO: performance improvment\n // If, in the first year, a match isn't found, we should be able to\n // jumpt to the next leap year and check that. Or, if already on\n // a leap year, we can just error immediately.\n // If we can't find a valid date this month,\n // search the next month. Only search the next 4 years\n // (to account for leap year).\n while (!next && index < 50) {\n index++;\n base = base.granularity('month').add(1, 'month');\n next = getNextWeekdaysOfMonth(base, this.options.byDayOfWeek)[0];\n }\n if (!next) {\n throw new RecurrenceRuleError(\n 'The byDayOfWeek rule appears to contain an impossible combination',\n );\n }\n return this.result(date, next);\n }\n expand(date) {\n const next = this.options.byDayOfWeek\n .map(weekday => getNextWeekday(date, weekday))\n .sort(dateTimeSortComparer)[0];\n return this.result(date, next);\n }\n result(date, next) {\n if (next.isEqual(date)) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(next.granularity('day')));\n }\n}\n/** For each byDayOfWeek entry, find the next DateTime */\nfunction getNextWeekdaysOfYear(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfYear = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfYear(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getNextWeekday(date, weekday))\n .filter(entry => entry.get('year') === date.get('year'));\n return uniqDateTimes([...normalizedNthWeekdaysOfYear, ...normalizedNextWeekdays])\n .filter(entry => entry.isAfterOrEqual(date))\n .sort(dateTimeSortComparer);\n}\n/** For each byDayOfWeek entry, find the next DateTime */\nfunction getNextWeekdaysOfMonth(date, byDayOfWeek) {\n const normalizedNthWeekdaysOfMonth = byDayOfWeek\n .filter(entry => Array.isArray(entry))\n .map(entry => getNthWeekdayOfMonth(date, ...entry));\n const normalizedNextWeekdays = byDayOfWeek\n .filter(entry => typeof entry === 'string')\n .map(weekday => getNextWeekday(date, weekday))\n .filter(\n entry => entry.get('year') === date.get('year') && entry.get('month') === date.get('month'),\n );\n return uniqDateTimes([...normalizedNthWeekdaysOfMonth, ...normalizedNextWeekdays])\n .filter(entry => entry.isAfterOrEqual(date))\n .sort(dateTimeSortComparer);\n}\n\nconst ByDayOfWeekRuleModule = {\n name: 'ByDayOfWeek',\n get: processor => {\n if (processor.options.byDayOfWeek === undefined) return null;\n if (processor.reverse) return new RevByDayOfWeekRule(processor);\n return new ByDayOfWeekRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byDayOfWeek !== undefined) {\n if (!ruleOptionFilled(options.byDayOfWeek)) {\n throw new RuleOptionError('\"byDayOfWeek\" expects a non-empty array');\n }\n const invalidWeeday = options.byDayOfWeek.find(day =>\n Array.isArray(day)\n ? !DateAdapter.WEEKDAYS.includes(day[0])\n : !DateAdapter.WEEKDAYS.includes(day),\n );\n if (invalidWeeday) {\n throw new RuleOptionError(\n `\"byDayOfWeek\" expects weedays in the form ` +\n `${JSON.stringify(DateAdapter.WEEKDAYS)} but \"${invalidWeeday}\" was provided`,\n );\n }\n if (\n !['YEARLY', 'MONTHLY'].includes(options.frequency) &&\n options.byDayOfWeek.some(weekday => Array.isArray(weekday))\n ) {\n throw new RuleOptionError(\n '\"byDayOfWeek\" can only include a numeric value (i.e. `[string, number]`) when the \"frequency\" is ' +\n 'either \"MONTHLY\" or \"YEARLY\"',\n );\n }\n if (\n options.frequency === 'MONTHLY' &&\n options.byDayOfWeek.some(\n weekday =>\n Array.isArray(weekday) && (weekday[1] < -31 || weekday[1] === 0 || weekday[1] > 31),\n )\n ) {\n throw new RuleOptionError(\n 'when \"frequency\" is \"MONTHLY\", each \"byDayOfWeek\" can optionally only' +\n ' have a numeric value >= -31 and <= 31 and !== 0',\n );\n }\n if (\n options.frequency === 'YEARLY' &&\n options.byDayOfWeek.some(\n weekday =>\n Array.isArray(weekday) && (weekday[1] < -366 || weekday[1] === 0 || weekday[1] > 366),\n )\n ) {\n throw new RuleOptionError(\n 'when \"frequency\" is \"YEARLY\", each \"byDayOfWeek\" can optionally only' +\n ' have a numeric value >= -366 and <= 366 and !== 0',\n );\n }\n norm.byDayOfWeek = options.byDayOfWeek;\n } else if (!ruleOptionFilled(options.byDayOfMonth) && options.frequency === 'WEEKLY') {\n norm.byDayOfWeek = [norm.start.get('weekday')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nclass RevByMonthOfYearRule extends RevRecurrenceRuleBase {\n constructor() {\n super(...arguments);\n this.option = this.processor.options.byMonthOfYear.slice().reverse();\n }\n run(date) {\n const currentMonth = date.get('month');\n for (const month of this.option) {\n if (currentMonth < month) continue;\n if (currentMonth === month) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(\n new InvalidDateTime(date.endGranularity('year').set('month', month)),\n );\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n .endGranularity('year')\n .subtract(1, 'year')\n .set('month', this.option[0]),\n ),\n );\n }\n}\n\nclass ByMonthOfYearRule extends RecurrenceRuleBase {\n run(date) {\n const currentMonth = date.get('month');\n for (const month of this.options.byMonthOfYear) {\n if (currentMonth > month) continue;\n if (currentMonth === month) {\n return this.validateDate(new ValidDateTime(date));\n }\n return this.validateDate(new InvalidDateTime(date.granularity('year').set('month', month)));\n }\n return this.validateDate(\n new InvalidDateTime(\n date\n .granularity('year')\n .add(1, 'year')\n .set('month', this.options.byMonthOfYear[0]),\n ),\n );\n }\n}\n\nconst ByMonthOfYearRuleModule = {\n name: 'ByMonthOfYear',\n get: processor => {\n if (processor.options.byMonthOfYear === undefined) return null;\n if (processor.reverse) {\n return new RevByMonthOfYearRule(processor);\n }\n return new ByMonthOfYearRule(processor);\n },\n normalizeOptions: (options, norm) => {\n if (options.byMonthOfYear !== undefined) {\n if (!ruleOptionFilled(options.byMonthOfYear)) {\n throw new RuleOptionError('\"byMonthOfYear\" expects a non-empty array');\n }\n if (options.byMonthOfYear.some(num => num < 1 || num > 12)) {\n throw new RuleOptionError('\"byMonthOfYear\" values must be `num >= 1 && num >= 12`');\n }\n norm.byMonthOfYear = options.byMonthOfYear.slice();\n norm.byMonthOfYear.sort(numberSortComparer);\n } else if (\n !(\n ruleOptionFilled(options.byDayOfMonth) ||\n ruleOptionFilled(options.byDayOfWeek) ||\n ruleOptionFilled(options.byDayOfYear)\n ) &&\n options.frequency === 'YEARLY'\n ) {\n norm.byMonthOfYear = [norm.start.get('month')];\n }\n },\n deps: () => [\n FrequencyRuleModule,\n ByMonthOfYearRuleModule,\n ByDayOfMonthRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n ],\n};\n\nconst ICAL_RULES = [\n FrequencyRuleModule,\n ByMonthOfYearRuleModule,\n ByDayOfMonthRuleModule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRuleModule,\n ByMinuteOfHourRuleModule,\n BySecondOfMinuteRuleModule,\n ByMillisecondOfSecondRuleModule,\n];\n\nexport {\n ByDayOfMonthRule,\n ByDayOfMonthRuleModule,\n ByDayOfWeekRule,\n ByDayOfWeekRuleModule,\n ByHourOfDayRule,\n ByHourOfDayRuleModule,\n ByMillisecondOfSecondRule,\n ByMillisecondOfSecondRuleModule,\n ByMinuteOfHourRule,\n ByMinuteOfHourRuleModule,\n ByMonthOfYearRule,\n ByMonthOfYearRuleModule,\n BySecondOfMinuteRule,\n BySecondOfMinuteRuleModule,\n FrequencyRule,\n FrequencyRuleModule,\n ICAL_RULES,\n RevByDayOfMonthRule,\n RevByDayOfWeekRule,\n RevByHourOfDayRule,\n RevByMillisecondOfSecondRule,\n RevByMinuteOfHourRule,\n RevByMonthOfYearRule,\n RevBySecondOfMinuteRule,\n RevFrequencyRule,\n getPrevWeekdaysOfMonth,\n getPrevWeekdaysOfYear,\n};\n","import { Dates, Rule, Schedule } from '@rschedule/core/generators';\nimport {\n serializeDataToJSON,\n ParseJSONError,\n registerJSONSerializerFn,\n} from '@rschedule/json-tools';\nimport { DateAdapterBase, cloneJSON } from '@rschedule/core';\n\nDates.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Dates',\n dates: this.adapters.map(adapter => adapter.toJSON()),\n };\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nDates.fromJSON = function parse(json, options = {}) {\n if (json.type !== 'Dates') {\n throw new ParseJSONError('Invalid Dates JSON');\n }\n return new Dates({\n dates: json.dates.map(date => DateAdapterBase.adapter.fromJSON(date)),\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Dates', Dates.fromJSON);\n\nRule.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Rule',\n config: Object.assign(Object.assign({}, cloneJSON(this.options)), {\n start: this.normalizeDateInput(this.options.start).toJSON(),\n }),\n };\n if (this.options.end) {\n json.config.end = this.normalizeDateInput(this.options.end).toJSON();\n }\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nRule.fromJSON = function fromJSON(json, options = {}) {\n const config = Object.assign(Object.assign({}, json.config), {\n start: DateAdapterBase.adapter.fromJSON(json.config.start),\n end: json.config.end && DateAdapterBase.adapter.fromJSON(json.config.end),\n });\n return new Rule(config, {\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Rule', Rule.fromJSON);\n\nSchedule.prototype.toJSON = function serialize(opts = {}) {\n const json = {\n type: 'Schedule',\n rrules: this.rrules.map(rule =>\n rule.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n ),\n exrules: this.exrules.map(rule =>\n rule.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n ),\n rdates: this.rdates.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n exdates: this.exdates.toJSON(Object.assign(Object.assign({}, opts), { nested: true })),\n };\n if (!opts.nested) json.timezone = this.timezone;\n serializeDataToJSON(this, json, opts);\n return json;\n};\nSchedule.fromJSON = function parse(json, options = {}) {\n if (json.type !== 'Schedule') {\n throw new ParseJSONError('Invalid Schedule JSON');\n }\n return new Schedule({\n rrules: json.rrules.map(rule =>\n Rule.fromJSON(rule, Object.assign({ timezone: json.timezone }, options)),\n ),\n exrules: json.exrules.map(rule =>\n Rule.fromJSON(rule, Object.assign({ timezone: json.timezone }, options)),\n ),\n rdates: Dates.fromJSON(json.rdates, Object.assign({ timezone: json.timezone }, options)),\n exdates: Dates.fromJSON(json.exdates, Object.assign({ timezone: json.timezone }, options)),\n data: typeof options.data === 'function' ? options.data(json) : json.data,\n timezone: options.timezone || json.timezone,\n });\n};\nregisterJSONSerializerFn('Schedule', Schedule.fromJSON);\n","import { OccurrenceGenerator } from '@rschedule/core/generators';\n\nclass ParseJSONError extends Error {}\nclass SerializeJSONError extends Error {}\nOccurrenceGenerator.JSON_FN_MAP = new Map();\nOccurrenceGenerator.prototype.toJSON = function serialize(opts) {\n throw new SerializeJSONError(\n `To support smaller bundles, ${this.constructor.name}#toJSON() ` +\n `must be manually added. See \"@rschedule/json-tools\" in the rSchedule docs.`,\n );\n};\nOccurrenceGenerator.fromJSON = function parse(json, options) {\n if (typeof json !== 'object' || json === null) {\n throw new ParseJSONError(`Invalid json \"${json}\"`);\n }\n const fn = OccurrenceGenerator.JSON_FN_MAP.get(json.type);\n if (!fn) {\n throw new ParseJSONError(\n `Unknown rSchedule object type \"${json.type}\". Have you added a json serializer ` +\n `for \"${json.type}\"? ` +\n `See \"@rschedule/json-tools\" in the rSchedule docs.`,\n );\n }\n return fn(json, options);\n};\nfunction serializeDataToJSON(gen, json, opt) {\n if (!opt.data) return;\n if (opt.data === true) {\n json.data = gen.data;\n } else {\n json.data = opt.data(gen);\n }\n if (json.data === undefined) delete json.data;\n}\nfunction registerJSONSerializerFn(name, fn) {\n if (OccurrenceGenerator.JSON_FN_MAP.has(name)) {\n throw new Error(\n `Attempting to set a global json parser function for \"${name}\" ` + 'but one already exists.',\n );\n }\n OccurrenceGenerator.JSON_FN_MAP.set(name, fn);\n}\n\nexport { ParseJSONError, SerializeJSONError, registerJSONSerializerFn, serializeDataToJSON };\n","import { DateAdapterBase, InvalidDateAdapterError, ArgumentError } from '@rschedule/core';\n\nclass StandardDateAdapter extends DateAdapterBase {\n constructor(date, options = {}) {\n super(undefined, options);\n if (!['UTC', null, undefined].includes(options.timezone)) {\n throw new InvalidDateAdapterError(\n `StandardDateAdapter only supports \"UTC\" and ` +\n `local time zones but \"${options.timezone}\" was provided.`,\n );\n }\n this._date = new Date(date);\n this.timezone = options.timezone !== undefined ? options.timezone : null;\n this.assertIsValid();\n }\n static isDate(object) {\n return Object.prototype.toString.call(object) === '[object Date]';\n }\n static fromDate(date, options) {\n return new StandardDateAdapter(date, options);\n }\n static fromJSON(json) {\n const args = [\n json.year,\n json.month - 1,\n json.day,\n json.hour,\n json.minute,\n json.second,\n json.millisecond,\n ];\n switch (json.timezone) {\n case 'UTC': {\n return new StandardDateAdapter(new Date(Date.UTC(...args)), {\n timezone: 'UTC',\n duration: json.duration,\n });\n }\n case null: {\n return new StandardDateAdapter(new Date(...args), {\n timezone: null,\n duration: json.duration,\n });\n }\n default:\n throw new InvalidDateAdapterError(\n 'The `StandardDateAdapter` only supports datetimes in ' +\n `UTC or LOCAL (null) time. You provided a JSON object ` +\n `with timezone \"${json.timezone}\".`,\n );\n }\n }\n static fromDateTime(datetime) {\n const date = StandardDateAdapter.fromJSON(datetime.toJSON());\n date.generators.push(...datetime.generators);\n return date;\n }\n get date() {\n return new Date(this._date);\n }\n get end() {\n if (!this.duration) return;\n if (this._end) return this._end;\n this._end = StandardDateAdapter.fromDateTime(\n this.toDateTime().add(this.duration, 'millisecond'),\n ).date;\n return this._end;\n }\n set(prop, value) {\n if (prop === 'timezone') {\n if (this.timezone === value) return this;\n else {\n return new StandardDateAdapter(this._date, {\n timezone: value,\n duration: this.duration,\n generators: this.generators,\n });\n }\n } else if (prop === 'duration') {\n if (this.duration === value) return this;\n else {\n return new StandardDateAdapter(this._date, {\n timezone: this.timezone,\n duration: value,\n generators: this.generators,\n });\n }\n }\n throw new ArgumentError(`Unknown prop \"${prop}\" for StandardDateAdapter#set()`);\n }\n valueOf() {\n return this._date.valueOf();\n }\n toISOString() {\n return this._date.toISOString();\n }\n toJSON() {\n let json;\n if (this.timezone === 'UTC') {\n json = {\n timezone: this.timezone,\n year: this._date.getUTCFullYear(),\n month: this._date.getUTCMonth() + 1,\n day: this._date.getUTCDate(),\n hour: this._date.getUTCHours(),\n minute: this._date.getUTCMinutes(),\n second: this._date.getUTCSeconds(),\n millisecond: this._date.getUTCMilliseconds(),\n };\n } else {\n json = {\n timezone: this.timezone,\n year: this._date.getFullYear(),\n month: this._date.getMonth() + 1,\n day: this._date.getDate(),\n hour: this._date.getHours(),\n minute: this._date.getMinutes(),\n second: this._date.getSeconds(),\n millisecond: this._date.getMilliseconds(),\n };\n }\n if (this.duration) {\n json.duration = this.duration;\n }\n return json;\n }\n assertIsValid() {\n if (!StandardDateAdapter.isDate(this._date) || isNaN(this._date.valueOf())) {\n throw new InvalidDateAdapterError('StandardDateAdapter has invalid date.');\n } else if (![null, 'UTC'].includes(this.timezone)) {\n throw new InvalidDateAdapterError(\n 'StandardDateAdapter only supports local (null) and UTC timezones but ' +\n `\"${this.timezone}\" was specified.`,\n );\n } else if (this.duration && this.duration <= 0) {\n throw new InvalidDateAdapterError('If provided, duration must be greater than 0.');\n }\n return true;\n }\n}\nStandardDateAdapter.hasTimezoneSupport = false;\n\nexport { StandardDateAdapter };\n","import { DateAdapterBase } from '@rschedule/core';\nimport { Rule } from '@rschedule/core/generators';\nimport { ICAL_RULES } from '@rschedule/core/rules/ICAL_RULES';\nimport { StandardDateAdapter } from '@rschedule/standard-date-adapter';\n\nDateAdapterBase.adapter = StandardDateAdapter;\nRule.recurrenceRules = ICAL_RULES;\n","/*!\n * accounting.js v0.4.2\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.2';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is an array\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((?=\\d+)(.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\n\t\tvar exponentialForm = Number(lib.unformat(value) + 'e' + precision);\n\t\tvar rounded = Math.round(exponentialForm);\n\t\tvar finalResult = Number(rounded + 'e-' + precision).toFixed(precision);\n\t\treturn finalResult;\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list || !isArray(list)) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","const Utils = require(\"./util\");\nconst pth = require(\"path\");\nconst ZipEntry = require(\"./zipEntry\");\nconst ZipFile = require(\"./zipFile\");\n\nconst get_Bool = (val, def) => (typeof val === \"boolean\" ? val : def);\nconst get_Str = (val, def) => (typeof val === \"string\" ? val : def);\n\nconst defaultOptions = {\n // option \"noSort\" : if true it disables files sorting\n noSort: false,\n // read entries during load (initial loading may be slower)\n readEntries: false,\n // default method is none\n method: Utils.Constants.NONE,\n // file system\n fs: null\n};\n\nmodule.exports = function (/**String*/ input, /** object */ options) {\n let inBuffer = null;\n\n // create object based default options, allowing them to be overwritten\n const opts = Object.assign(Object.create(null), defaultOptions);\n\n // test input variable\n if (input && \"object\" === typeof input) {\n // if value is not buffer we accept it to be object with options\n if (!(input instanceof Uint8Array)) {\n Object.assign(opts, input);\n input = opts.input ? opts.input : undefined;\n if (opts.input) delete opts.input;\n }\n\n // if input is buffer\n if (Buffer.isBuffer(input)) {\n inBuffer = input;\n opts.method = Utils.Constants.BUFFER;\n input = undefined;\n }\n }\n\n // assign options\n Object.assign(opts, options);\n\n // instanciate utils filesystem\n const filetools = new Utils(opts);\n\n // if input is file name we retrieve its content\n if (input && \"string\" === typeof input) {\n // load zip file\n if (filetools.fs.existsSync(input)) {\n opts.method = Utils.Constants.FILE;\n opts.filename = input;\n inBuffer = filetools.fs.readFileSync(input);\n } else {\n throw new Error(Utils.Errors.INVALID_FILENAME);\n }\n }\n\n // create variable\n const _zip = new ZipFile(inBuffer, opts);\n\n const { canonical, sanitize } = Utils;\n\n function getEntry(/**Object*/ entry) {\n if (entry && _zip) {\n var item;\n // If entry was given as a file name\n if (typeof entry === \"string\") item = _zip.getEntry(entry);\n // if entry was given as a ZipEntry object\n if (typeof entry === \"object\" && typeof entry.entryName !== \"undefined\" && typeof entry.header !== \"undefined\") item = _zip.getEntry(entry.entryName);\n\n if (item) {\n return item;\n }\n }\n return null;\n }\n\n function fixPath(zipPath) {\n const { join, normalize, sep } = pth.posix;\n // convert windows file separators and normalize\n return join(\".\", normalize(sep + zipPath.split(\"\\\\\").join(sep) + sep));\n }\n\n return {\n /**\n * Extracts the given entry from the archive and returns the content as a Buffer object\n * @param entry ZipEntry object or String with the full path of the entry\n *\n * @return Buffer or Null in case of error\n */\n readFile: function (/**Object*/ entry, /*String, Buffer*/ pass) {\n var item = getEntry(entry);\n return (item && item.getData(pass)) || null;\n },\n\n /**\n * Asynchronous readFile\n * @param entry ZipEntry object or String with the full path of the entry\n * @param callback\n *\n * @return Buffer or Null in case of error\n */\n readFileAsync: function (/**Object*/ entry, /**Function*/ callback) {\n var item = getEntry(entry);\n if (item) {\n item.getDataAsync(callback);\n } else {\n callback(null, \"getEntry failed for:\" + entry);\n }\n },\n\n /**\n * Extracts the given entry from the archive and returns the content as plain text in the given encoding\n * @param entry ZipEntry object or String with the full path of the entry\n * @param encoding Optional. If no encoding is specified utf8 is used\n *\n * @return String\n */\n readAsText: function (/**Object*/ entry, /**String=*/ encoding) {\n var item = getEntry(entry);\n if (item) {\n var data = item.getData();\n if (data && data.length) {\n return data.toString(encoding || \"utf8\");\n }\n }\n return \"\";\n },\n\n /**\n * Asynchronous readAsText\n * @param entry ZipEntry object or String with the full path of the entry\n * @param callback\n * @param encoding Optional. If no encoding is specified utf8 is used\n *\n * @return String\n */\n readAsTextAsync: function (/**Object*/ entry, /**Function*/ callback, /**String=*/ encoding) {\n var item = getEntry(entry);\n if (item) {\n item.getDataAsync(function (data, err) {\n if (err) {\n callback(data, err);\n return;\n }\n\n if (data && data.length) {\n callback(data.toString(encoding || \"utf8\"));\n } else {\n callback(\"\");\n }\n });\n } else {\n callback(\"\");\n }\n },\n\n /**\n * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory\n *\n * @param entry\n */\n deleteFile: function (/**Object*/ entry) {\n // @TODO: test deleteFile\n var item = getEntry(entry);\n if (item) {\n _zip.deleteEntry(item.entryName);\n }\n },\n\n /**\n * Adds a comment to the zip. The zip must be rewritten after adding the comment.\n *\n * @param comment\n */\n addZipComment: function (/**String*/ comment) {\n // @TODO: test addZipComment\n _zip.comment = comment;\n },\n\n /**\n * Returns the zip comment\n *\n * @return String\n */\n getZipComment: function () {\n return _zip.comment || \"\";\n },\n\n /**\n * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment\n * The comment cannot exceed 65535 characters in length\n *\n * @param entry\n * @param comment\n */\n addZipEntryComment: function (/**Object*/ entry, /**String*/ comment) {\n var item = getEntry(entry);\n if (item) {\n item.comment = comment;\n }\n },\n\n /**\n * Returns the comment of the specified entry\n *\n * @param entry\n * @return String\n */\n getZipEntryComment: function (/**Object*/ entry) {\n var item = getEntry(entry);\n if (item) {\n return item.comment || \"\";\n }\n return \"\";\n },\n\n /**\n * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content\n *\n * @param entry\n * @param content\n */\n updateFile: function (/**Object*/ entry, /**Buffer*/ content) {\n var item = getEntry(entry);\n if (item) {\n item.setData(content);\n }\n },\n\n /**\n * Adds a file from the disk to the archive\n *\n * @param localPath File to add to zip\n * @param zipPath Optional path inside the zip\n * @param zipName Optional name for the file\n */\n addLocalFile: function (/**String*/ localPath, /**String=*/ zipPath, /**String=*/ zipName, /**String*/ comment) {\n if (filetools.fs.existsSync(localPath)) {\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // p - local file name\n var p = localPath.split(\"\\\\\").join(\"/\").split(\"/\").pop();\n\n // add file name into zippath\n zipPath += zipName ? zipName : p;\n\n // read file attributes\n const _attr = filetools.fs.statSync(localPath);\n\n // add file into zip file\n this.addFile(zipPath, filetools.fs.readFileSync(localPath), comment, _attr);\n } else {\n throw new Error(Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n }\n },\n\n /**\n * Adds a local directory and all its nested files and directories to the archive\n *\n * @param localPath\n * @param zipPath optional path inside zip\n * @param filter optional RegExp or Function if files match will\n * be included.\n */\n addLocalFolder: function (/**String*/ localPath, /**String=*/ zipPath, /**=RegExp|Function*/ filter) {\n // Prepare filter\n if (filter instanceof RegExp) {\n // if filter is RegExp wrap it\n filter = (function (rx) {\n return function (filename) {\n return rx.test(filename);\n };\n })(filter);\n } else if (\"function\" !== typeof filter) {\n // if filter is not function we will replace it\n filter = function () {\n return true;\n };\n }\n\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // normalize the path first\n localPath = pth.normalize(localPath);\n\n if (filetools.fs.existsSync(localPath)) {\n const items = filetools.findFiles(localPath);\n const self = this;\n\n if (items.length) {\n items.forEach(function (filepath) {\n var p = pth.relative(localPath, filepath).split(\"\\\\\").join(\"/\"); //windows fix\n if (filter(p)) {\n var stats = filetools.fs.statSync(filepath);\n if (stats.isFile()) {\n self.addFile(zipPath + p, filetools.fs.readFileSync(filepath), \"\", stats);\n } else {\n self.addFile(zipPath + p + \"/\", Buffer.alloc(0), \"\", stats);\n }\n }\n });\n }\n } else {\n throw new Error(Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n }\n },\n\n /**\n * Asynchronous addLocalFile\n * @param localPath\n * @param callback\n * @param zipPath optional path inside zip\n * @param filter optional RegExp or Function if files match will\n * be included.\n */\n addLocalFolderAsync: function (/*String*/ localPath, /*Function*/ callback, /*String*/ zipPath, /*RegExp|Function*/ filter) {\n if (filter instanceof RegExp) {\n filter = (function (rx) {\n return function (filename) {\n return rx.test(filename);\n };\n })(filter);\n } else if (\"function\" !== typeof filter) {\n filter = function () {\n return true;\n };\n }\n\n // fix ZipPath\n zipPath = zipPath ? fixPath(zipPath) : \"\";\n\n // normalize the path first\n localPath = pth.normalize(localPath);\n\n var self = this;\n filetools.fs.open(localPath, \"r\", function (err) {\n if (err && err.code === \"ENOENT\") {\n callback(undefined, Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath));\n } else if (err) {\n callback(undefined, err);\n } else {\n var items = filetools.findFiles(localPath);\n var i = -1;\n\n var next = function () {\n i += 1;\n if (i < items.length) {\n var filepath = items[i];\n var p = pth.relative(localPath, filepath).split(\"\\\\\").join(\"/\"); //windows fix\n p = p\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/[^\\x20-\\x7E]/g, \"\"); // accent fix\n if (filter(p)) {\n filetools.fs.stat(filepath, function (er0, stats) {\n if (er0) callback(undefined, er0);\n if (stats.isFile()) {\n filetools.fs.readFile(filepath, function (er1, data) {\n if (er1) {\n callback(undefined, er1);\n } else {\n self.addFile(zipPath + p, data, \"\", stats);\n next();\n }\n });\n } else {\n self.addFile(zipPath + p + \"/\", Buffer.alloc(0), \"\", stats);\n next();\n }\n });\n } else {\n next();\n }\n } else {\n callback(true, undefined);\n }\n };\n\n next();\n }\n });\n },\n\n /**\n *\n * @param {string} localPath - path where files will be extracted\n * @param {object} props - optional properties\n * @param {string} props.zipPath - optional path inside zip\n * @param {regexp, function} props.filter - RegExp or Function if files match will be included.\n */\n addLocalFolderPromise: function (/*String*/ localPath, /* object */ props) {\n return new Promise((resolve, reject) => {\n const { filter, zipPath } = Object.assign({}, props);\n this.addLocalFolderAsync(\n localPath,\n (done, err) => {\n if (err) reject(err);\n if (done) resolve(this);\n },\n zipPath,\n filter\n );\n });\n },\n\n /**\n * Allows you to create a entry (file or directory) in the zip file.\n * If you want to create a directory the entryName must end in / and a null buffer should be provided.\n * Comment and attributes are optional\n *\n * @param {string} entryName\n * @param {Buffer | string} content - file content as buffer or utf8 coded string\n * @param {string} comment - file comment\n * @param {number | object} attr - number as unix file permissions, object as filesystem Stats object\n */\n addFile: function (/**String*/ entryName, /**Buffer*/ content, /**String*/ comment, /**Number*/ attr) {\n let entry = getEntry(entryName);\n const update = entry != null;\n\n // prepare new entry\n if (!update) {\n entry = new ZipEntry();\n entry.entryName = entryName;\n }\n entry.comment = comment || \"\";\n\n const isStat = \"object\" === typeof attr && attr instanceof filetools.fs.Stats;\n\n // last modification time from file stats\n if (isStat) {\n entry.header.time = attr.mtime;\n }\n\n // Set file attribute\n var fileattr = entry.isDirectory ? 0x10 : 0; // (MS-DOS directory flag)\n\n // extended attributes field for Unix\n if (!Utils.isWin) {\n // set file type either S_IFDIR / S_IFREG\n let unix = entry.isDirectory ? 0x4000 : 0x8000;\n\n if (isStat) {\n // File attributes from file stats\n unix |= 0xfff & attr.mode;\n } else if (\"number\" === typeof attr) {\n // attr from given attr values\n unix |= 0xfff & attr;\n } else {\n // Default values:\n unix |= entry.isDirectory ? 0o755 : 0o644; // permissions (drwxr-xr-x) or (-r-wr--r--)\n }\n\n fileattr = (fileattr | (unix << 16)) >>> 0; // add attributes\n }\n\n entry.attr = fileattr;\n\n entry.setData(content);\n if (!update) _zip.setEntry(entry);\n },\n\n /**\n * Returns an array of ZipEntry objects representing the files and folders inside the archive\n *\n * @return Array\n */\n getEntries: function () {\n return _zip ? _zip.entries : [];\n },\n\n /**\n * Returns a ZipEntry object representing the file or folder specified by ``name``.\n *\n * @param name\n * @return ZipEntry\n */\n getEntry: function (/**String*/ name) {\n return getEntry(name);\n },\n\n getEntryCount: function () {\n return _zip.getEntryCount();\n },\n\n forEach: function (callback) {\n return _zip.forEach(callback);\n },\n\n /**\n * Extracts the given entry to the given targetPath\n * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted\n *\n * @param entry ZipEntry object or String with the full path of the entry\n * @param targetPath Target folder where to write the file\n * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder\n * will be created in targetPath as well. Default is TRUE\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n * @param outFileName String If set will override the filename of the extracted file (Only works if the entry is a file)\n *\n * @return Boolean\n */\n extractEntryTo: function (\n /**Object*/ entry,\n /**String*/ targetPath,\n /**Boolean*/ maintainEntryPath,\n /**Boolean*/ overwrite,\n /**Boolean*/ keepOriginalPermission,\n /**String**/ outFileName\n ) {\n overwrite = get_Bool(overwrite, false);\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n maintainEntryPath = get_Bool(maintainEntryPath, true);\n outFileName = get_Str(outFileName, get_Str(keepOriginalPermission, undefined));\n\n var item = getEntry(entry);\n if (!item) {\n throw new Error(Utils.Errors.NO_ENTRY);\n }\n\n var entryName = canonical(item.entryName);\n\n var target = sanitize(targetPath, outFileName && !item.isDirectory ? outFileName : maintainEntryPath ? entryName : pth.basename(entryName));\n\n if (item.isDirectory) {\n var children = _zip.getEntryChildren(item);\n children.forEach(function (child) {\n if (child.isDirectory) return;\n var content = child.getData();\n if (!content) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n var name = canonical(child.entryName);\n var childName = sanitize(targetPath, maintainEntryPath ? name : pth.basename(name));\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? child.header.fileAttr : undefined;\n filetools.writeFileTo(childName, content, overwrite, fileAttr);\n });\n return true;\n }\n\n var content = item.getData();\n if (!content) throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n\n if (filetools.fs.existsSync(target) && !overwrite) {\n throw new Error(Utils.Errors.CANT_OVERRIDE);\n }\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileTo(target, content, overwrite, fileAttr);\n\n return true;\n },\n\n /**\n * Test the archive\n *\n */\n test: function (pass) {\n if (!_zip) {\n return false;\n }\n\n for (var entry in _zip.entries) {\n try {\n if (entry.isDirectory) {\n continue;\n }\n var content = _zip.entries[entry].getData(pass);\n if (!content) {\n return false;\n }\n } catch (err) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Extracts the entire archive to the given location\n *\n * @param targetPath Target location\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n */\n extractAllTo: function (/**String*/ targetPath, /**Boolean*/ overwrite, /**Boolean*/ keepOriginalPermission, /*String, Buffer*/ pass) {\n overwrite = get_Bool(overwrite, false);\n pass = get_Str(keepOriginalPermission, pass);\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n if (!_zip) {\n throw new Error(Utils.Errors.NO_ZIP);\n }\n _zip.entries.forEach(function (entry) {\n var entryName = sanitize(targetPath, canonical(entry.entryName.toString()));\n if (entry.isDirectory) {\n filetools.makeDir(entryName);\n return;\n }\n var content = entry.getData(pass);\n if (!content) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileTo(entryName, content, overwrite, fileAttr);\n try {\n filetools.fs.utimesSync(entryName, entry.header.time, entry.header.time);\n } catch (err) {\n throw new Error(Utils.Errors.CANT_EXTRACT_FILE);\n }\n });\n },\n\n /**\n * Asynchronous extractAllTo\n *\n * @param targetPath Target location\n * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n * Default is FALSE\n * @param keepOriginalPermission The file will be set as the permission from the entry if this is true.\n * Default is FALSE\n * @param callback The callback will be executed when all entries are extracted successfully or any error is thrown.\n */\n extractAllToAsync: function (/**String*/ targetPath, /**Boolean*/ overwrite, /**Boolean*/ keepOriginalPermission, /**Function*/ callback) {\n if (!callback) {\n callback = function () {};\n }\n overwrite = get_Bool(overwrite, false);\n if (typeof keepOriginalPermission === \"function\" && !callback) callback = keepOriginalPermission;\n keepOriginalPermission = get_Bool(keepOriginalPermission, false);\n if (!_zip) {\n callback(new Error(Utils.Errors.NO_ZIP));\n return;\n }\n\n targetPath = pth.resolve(targetPath);\n // convert entryName to\n const getPath = (entry) => sanitize(targetPath, pth.normalize(canonical(entry.entryName.toString())));\n const getError = (msg, file) => new Error(msg + ': \"' + file + '\"');\n\n // separate directories from files\n const dirEntries = [];\n const fileEntries = new Set();\n _zip.entries.forEach((e) => {\n if (e.isDirectory) {\n dirEntries.push(e);\n } else {\n fileEntries.add(e);\n }\n });\n\n // Create directory entries first synchronously\n // this prevents race condition and assures folders are there before writing files\n for (const entry of dirEntries) {\n const dirPath = getPath(entry);\n // The reverse operation for attr depend on method addFile()\n const dirAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n try {\n filetools.makeDir(dirPath);\n if (dirAttr) filetools.fs.chmodSync(dirPath, dirAttr);\n // in unix timestamp will change if files are later added to folder, but still\n filetools.fs.utimesSync(dirPath, entry.header.time, entry.header.time);\n } catch (er) {\n callback(getError(\"Unable to create folder\", dirPath));\n }\n }\n\n // callback wrapper, for some house keeping\n const done = () => {\n if (fileEntries.size === 0) {\n callback();\n }\n };\n\n // Extract file entries asynchronously\n for (const entry of fileEntries.values()) {\n const entryName = pth.normalize(canonical(entry.entryName.toString()));\n const filePath = sanitize(targetPath, entryName);\n entry.getDataAsync(function (content, err_1) {\n if (err_1) {\n callback(new Error(err_1));\n return;\n }\n if (!content) {\n callback(new Error(Utils.Errors.CANT_EXTRACT_FILE));\n } else {\n // The reverse operation for attr depend on method addFile()\n const fileAttr = keepOriginalPermission ? entry.header.fileAttr : undefined;\n filetools.writeFileToAsync(filePath, content, overwrite, fileAttr, function (succ) {\n if (!succ) {\n callback(getError(\"Unable to write file\", filePath));\n return;\n }\n filetools.fs.utimes(filePath, entry.header.time, entry.header.time, function (err_2) {\n if (err_2) {\n callback(getError(\"Unable to set times\", filePath));\n return;\n }\n fileEntries.delete(entry);\n // call the callback if it was last entry\n done();\n });\n });\n }\n });\n }\n // call the callback if fileEntries was empty\n done();\n },\n\n /**\n * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip\n *\n * @param targetFileName\n * @param callback\n */\n writeZip: function (/**String*/ targetFileName, /**Function*/ callback) {\n if (arguments.length === 1) {\n if (typeof targetFileName === \"function\") {\n callback = targetFileName;\n targetFileName = \"\";\n }\n }\n\n if (!targetFileName && opts.filename) {\n targetFileName = opts.filename;\n }\n if (!targetFileName) return;\n\n var zipData = _zip.compressToBuffer();\n if (zipData) {\n var ok = filetools.writeFileTo(targetFileName, zipData, true);\n if (typeof callback === \"function\") callback(!ok ? new Error(\"failed\") : null, \"\");\n }\n },\n\n writeZipPromise: function (/**String*/ targetFileName, /* object */ props) {\n const { overwrite, perm } = Object.assign({ overwrite: true }, props);\n\n return new Promise((resolve, reject) => {\n // find file name\n if (!targetFileName && opts.filename) targetFileName = opts.filename;\n if (!targetFileName) reject(\"ADM-ZIP: ZIP File Name Missing\");\n\n this.toBufferPromise().then((zipData) => {\n const ret = (done) => (done ? resolve(done) : reject(\"ADM-ZIP: Wasn't able to write zip file\"));\n filetools.writeFileToAsync(targetFileName, zipData, overwrite, perm, ret);\n }, reject);\n });\n },\n\n toBufferPromise: function () {\n return new Promise((resolve, reject) => {\n _zip.toAsyncBuffer(resolve, reject);\n });\n },\n\n /**\n * Returns the content of the entire zip file as a Buffer object\n *\n * @return Buffer\n */\n toBuffer: function (/**Function=*/ onSuccess, /**Function=*/ onFail, /**Function=*/ onItemStart, /**Function=*/ onItemEnd) {\n this.valueOf = 2;\n if (typeof onSuccess === \"function\") {\n _zip.toAsyncBuffer(onSuccess, onFail, onItemStart, onItemEnd);\n return null;\n }\n return _zip.compressToBuffer();\n }\n };\n};\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The central directory file header */\nmodule.exports = function () {\n var _verMade = 20, // v2.0\n _version = 10, // v1.0\n _flags = 0,\n _method = 0,\n _time = 0,\n _crc = 0,\n _compressedSize = 0,\n _size = 0,\n _fnameLen = 0,\n _extraLen = 0,\n _comLen = 0,\n _diskStart = 0,\n _inattr = 0,\n _attr = 0,\n _offset = 0;\n\n _verMade |= Utils.isWin ? 0x0a00 : 0x0300;\n\n // Set EFS flag since filename and comment fields are all by default encoded using UTF-8.\n // Without it file names may be corrupted for other apps when file names use unicode chars\n _flags |= Constants.FLG_EFS;\n\n var _dataHeader = {};\n\n function setTime(val) {\n val = new Date(val);\n _time =\n (((val.getFullYear() - 1980) & 0x7f) << 25) | // b09-16 years from 1980\n ((val.getMonth() + 1) << 21) | // b05-08 month\n (val.getDate() << 16) | // b00-04 hour\n // 2 bytes time\n (val.getHours() << 11) | // b11-15 hour\n (val.getMinutes() << 5) | // b05-10 minute\n (val.getSeconds() >> 1); // b00-04 seconds divided by 2\n }\n\n setTime(+new Date());\n\n return {\n get made() {\n return _verMade;\n },\n set made(val) {\n _verMade = val;\n },\n\n get version() {\n return _version;\n },\n set version(val) {\n _version = val;\n },\n\n get flags() {\n return _flags;\n },\n set flags(val) {\n _flags = val;\n },\n\n get method() {\n return _method;\n },\n set method(val) {\n switch (val) {\n case Constants.STORED:\n this.version = 10;\n case Constants.DEFLATED:\n default:\n this.version = 20;\n }\n _method = val;\n },\n\n get time() {\n return new Date(((_time >> 25) & 0x7f) + 1980, ((_time >> 21) & 0x0f) - 1, (_time >> 16) & 0x1f, (_time >> 11) & 0x1f, (_time >> 5) & 0x3f, (_time & 0x1f) << 1);\n },\n set time(val) {\n setTime(val);\n },\n\n get crc() {\n return _crc;\n },\n set crc(val) {\n _crc = Math.max(0, val) >>> 0;\n },\n\n get compressedSize() {\n return _compressedSize;\n },\n set compressedSize(val) {\n _compressedSize = Math.max(0, val) >>> 0;\n },\n\n get size() {\n return _size;\n },\n set size(val) {\n _size = Math.max(0, val) >>> 0;\n },\n\n get fileNameLength() {\n return _fnameLen;\n },\n set fileNameLength(val) {\n _fnameLen = val;\n },\n\n get extraLength() {\n return _extraLen;\n },\n set extraLength(val) {\n _extraLen = val;\n },\n\n get commentLength() {\n return _comLen;\n },\n set commentLength(val) {\n _comLen = val;\n },\n\n get diskNumStart() {\n return _diskStart;\n },\n set diskNumStart(val) {\n _diskStart = Math.max(0, val) >>> 0;\n },\n\n get inAttr() {\n return _inattr;\n },\n set inAttr(val) {\n _inattr = Math.max(0, val) >>> 0;\n },\n\n get attr() {\n return _attr;\n },\n set attr(val) {\n _attr = Math.max(0, val) >>> 0;\n },\n\n // get Unix file permissions\n get fileAttr() {\n return _attr ? (((_attr >>> 0) | 0) >> 16) & 0xfff : 0;\n },\n\n get offset() {\n return _offset;\n },\n set offset(val) {\n _offset = Math.max(0, val) >>> 0;\n },\n\n get encripted() {\n return (_flags & 1) === 1;\n },\n\n get entryHeaderSize() {\n return Constants.CENHDR + _fnameLen + _extraLen + _comLen;\n },\n\n get realDataOffset() {\n return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen;\n },\n\n get dataHeader() {\n return _dataHeader;\n },\n\n loadDataHeaderFromBinary: function (/*Buffer*/ input) {\n var data = input.slice(_offset, _offset + Constants.LOCHDR);\n // 30 bytes and should start with \"PK\\003\\004\"\n if (data.readUInt32LE(0) !== Constants.LOCSIG) {\n throw new Error(Utils.Errors.INVALID_LOC);\n }\n _dataHeader = {\n // version needed to extract\n version: data.readUInt16LE(Constants.LOCVER),\n // general purpose bit flag\n flags: data.readUInt16LE(Constants.LOCFLG),\n // compression method\n method: data.readUInt16LE(Constants.LOCHOW),\n // modification time (2 bytes time, 2 bytes date)\n time: data.readUInt32LE(Constants.LOCTIM),\n // uncompressed file crc-32 value\n crc: data.readUInt32LE(Constants.LOCCRC),\n // compressed size\n compressedSize: data.readUInt32LE(Constants.LOCSIZ),\n // uncompressed size\n size: data.readUInt32LE(Constants.LOCLEN),\n // filename length\n fnameLen: data.readUInt16LE(Constants.LOCNAM),\n // extra field length\n extraLen: data.readUInt16LE(Constants.LOCEXT)\n };\n },\n\n loadFromBinary: function (/*Buffer*/ data) {\n // data should be 46 bytes and start with \"PK 01 02\"\n if (data.length !== Constants.CENHDR || data.readUInt32LE(0) !== Constants.CENSIG) {\n throw new Error(Utils.Errors.INVALID_CEN);\n }\n // version made by\n _verMade = data.readUInt16LE(Constants.CENVEM);\n // version needed to extract\n _version = data.readUInt16LE(Constants.CENVER);\n // encrypt, decrypt flags\n _flags = data.readUInt16LE(Constants.CENFLG);\n // compression method\n _method = data.readUInt16LE(Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n _time = data.readUInt32LE(Constants.CENTIM);\n // uncompressed file crc-32 value\n _crc = data.readUInt32LE(Constants.CENCRC);\n // compressed size\n _compressedSize = data.readUInt32LE(Constants.CENSIZ);\n // uncompressed size\n _size = data.readUInt32LE(Constants.CENLEN);\n // filename length\n _fnameLen = data.readUInt16LE(Constants.CENNAM);\n // extra field length\n _extraLen = data.readUInt16LE(Constants.CENEXT);\n // file comment length\n _comLen = data.readUInt16LE(Constants.CENCOM);\n // volume number start\n _diskStart = data.readUInt16LE(Constants.CENDSK);\n // internal file attributes\n _inattr = data.readUInt16LE(Constants.CENATT);\n // external file attributes\n _attr = data.readUInt32LE(Constants.CENATX);\n // LOC header offset\n _offset = data.readUInt32LE(Constants.CENOFF);\n },\n\n dataHeaderToBinary: function () {\n // LOC header size (30 bytes)\n var data = Buffer.alloc(Constants.LOCHDR);\n // \"PK\\003\\004\"\n data.writeUInt32LE(Constants.LOCSIG, 0);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.LOCVER);\n // general purpose bit flag\n data.writeUInt16LE(_flags, Constants.LOCFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.LOCHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.LOCTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.LOCCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.LOCSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.LOCLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.LOCNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.LOCEXT);\n return data;\n },\n\n entryHeaderToBinary: function () {\n // CEN header size (46 bytes)\n var data = Buffer.alloc(Constants.CENHDR + _fnameLen + _extraLen + _comLen);\n // \"PK\\001\\002\"\n data.writeUInt32LE(Constants.CENSIG, 0);\n // version made by\n data.writeUInt16LE(_verMade, Constants.CENVEM);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.CENVER);\n // encrypt, decrypt flags\n data.writeUInt16LE(_flags, Constants.CENFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.CENTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.CENCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.CENSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.CENLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.CENNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.CENEXT);\n // file comment length\n data.writeUInt16LE(_comLen, Constants.CENCOM);\n // volume number start\n data.writeUInt16LE(_diskStart, Constants.CENDSK);\n // internal file attributes\n data.writeUInt16LE(_inattr, Constants.CENATT);\n // external file attributes\n data.writeUInt32LE(_attr, Constants.CENATX);\n // LOC header offset\n data.writeUInt32LE(_offset, Constants.CENOFF);\n // fill all with\n data.fill(0x00, Constants.CENHDR);\n return data;\n },\n\n toJSON: function () {\n const bytes = function (nr) {\n return nr + \" bytes\";\n };\n\n return {\n made: _verMade,\n version: _version,\n flags: _flags,\n method: Utils.methodToString(_method),\n time: this.time,\n crc: \"0x\" + _crc.toString(16).toUpperCase(),\n compressedSize: bytes(_compressedSize),\n size: bytes(_size),\n fileNameLength: bytes(_fnameLen),\n extraLength: bytes(_extraLen),\n commentLength: bytes(_comLen),\n diskNumStart: _diskStart,\n inAttr: _inattr,\n attr: _attr,\n offset: _offset,\n entryHeaderSize: bytes(Constants.CENHDR + _fnameLen + _extraLen + _comLen)\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","exports.EntryHeader = require(\"./entryHeader\");\nexports.MainHeader = require(\"./mainHeader\");\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The entries in the end of central directory */\nmodule.exports = function () {\n var _volumeEntries = 0,\n _totalEntries = 0,\n _size = 0,\n _offset = 0,\n _commentLength = 0;\n\n return {\n get diskEntries() {\n return _volumeEntries;\n },\n set diskEntries(/*Number*/ val) {\n _volumeEntries = _totalEntries = val;\n },\n\n get totalEntries() {\n return _totalEntries;\n },\n set totalEntries(/*Number*/ val) {\n _totalEntries = _volumeEntries = val;\n },\n\n get size() {\n return _size;\n },\n set size(/*Number*/ val) {\n _size = val;\n },\n\n get offset() {\n return _offset;\n },\n set offset(/*Number*/ val) {\n _offset = val;\n },\n\n get commentLength() {\n return _commentLength;\n },\n set commentLength(/*Number*/ val) {\n _commentLength = val;\n },\n\n get mainHeaderSize() {\n return Constants.ENDHDR + _commentLength;\n },\n\n loadFromBinary: function (/*Buffer*/ data) {\n // data should be 22 bytes and start with \"PK 05 06\"\n // or be 56+ bytes and start with \"PK 06 06\" for Zip64\n if (\n (data.length !== Constants.ENDHDR || data.readUInt32LE(0) !== Constants.ENDSIG) &&\n (data.length < Constants.ZIP64HDR || data.readUInt32LE(0) !== Constants.ZIP64SIG)\n ) {\n throw new Error(Utils.Errors.INVALID_END);\n }\n\n if (data.readUInt32LE(0) === Constants.ENDSIG) {\n // number of entries on this volume\n _volumeEntries = data.readUInt16LE(Constants.ENDSUB);\n // total number of entries\n _totalEntries = data.readUInt16LE(Constants.ENDTOT);\n // central directory size in bytes\n _size = data.readUInt32LE(Constants.ENDSIZ);\n // offset of first CEN header\n _offset = data.readUInt32LE(Constants.ENDOFF);\n // zip file comment length\n _commentLength = data.readUInt16LE(Constants.ENDCOM);\n } else {\n // number of entries on this volume\n _volumeEntries = Utils.readBigUInt64LE(data, Constants.ZIP64SUB);\n // total number of entries\n _totalEntries = Utils.readBigUInt64LE(data, Constants.ZIP64TOT);\n // central directory size in bytes\n _size = Utils.readBigUInt64LE(data, Constants.ZIP64SIZ);\n // offset of first CEN header\n _offset = Utils.readBigUInt64LE(data, Constants.ZIP64OFF);\n\n _commentLength = 0;\n }\n },\n\n toBinary: function () {\n var b = Buffer.alloc(Constants.ENDHDR + _commentLength);\n // \"PK 05 06\" signature\n b.writeUInt32LE(Constants.ENDSIG, 0);\n b.writeUInt32LE(0, 4);\n // number of entries on this volume\n b.writeUInt16LE(_volumeEntries, Constants.ENDSUB);\n // total number of entries\n b.writeUInt16LE(_totalEntries, Constants.ENDTOT);\n // central directory size in bytes\n b.writeUInt32LE(_size, Constants.ENDSIZ);\n // offset of first CEN header\n b.writeUInt32LE(_offset, Constants.ENDOFF);\n // zip file comment length\n b.writeUInt16LE(_commentLength, Constants.ENDCOM);\n // fill comment memory with spaces so no garbage is left there\n b.fill(\" \", Constants.ENDHDR);\n\n return b;\n },\n\n toJSON: function () {\n // creates 0x0000 style output\n const offset = function (nr, len) {\n let offs = nr.toString(16).toUpperCase();\n while (offs.length < len) offs = \"0\" + offs;\n return \"0x\" + offs;\n };\n\n return {\n diskEntries: _volumeEntries,\n totalEntries: _totalEntries,\n size: _size + \" bytes\",\n offset: offset(_offset, 4),\n commentLength: _commentLength\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","module.exports = function (/*Buffer*/ inbuf) {\n var zlib = require(\"zlib\");\n\n var opts = { chunkSize: (parseInt(inbuf.length / 1024) + 1) * 1024 };\n\n return {\n deflate: function () {\n return zlib.deflateRawSync(inbuf, opts);\n },\n\n deflateAsync: function (/*Function*/ callback) {\n var tmp = zlib.createDeflateRaw(opts),\n parts = [],\n total = 0;\n tmp.on(\"data\", function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on(\"end\", function () {\n var buf = Buffer.alloc(total),\n written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n };\n};\n","exports.Deflater = require(\"./deflater\");\nexports.Inflater = require(\"./inflater\");\nexports.ZipCrypto = require(\"./zipcrypto\");\n","module.exports = function (/*Buffer*/ inbuf) {\n var zlib = require(\"zlib\");\n\n return {\n inflate: function () {\n return zlib.inflateRawSync(inbuf);\n },\n\n inflateAsync: function (/*Function*/ callback) {\n var tmp = zlib.createInflateRaw(),\n parts = [],\n total = 0;\n tmp.on(\"data\", function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on(\"end\", function () {\n var buf = Buffer.alloc(total),\n written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n };\n};\n","\"use strict\";\n\n// node crypt, we use it for generate salt\n// eslint-disable-next-line node/no-unsupported-features/node-builtins\nconst { randomFillSync } = require(\"crypto\");\n\n// generate CRC32 lookup table\nconst crctable = new Uint32Array(256).map((t, crc) => {\n for (let j = 0; j < 8; j++) {\n if (0 !== (crc & 1)) {\n crc = (crc >>> 1) ^ 0xedb88320;\n } else {\n crc >>>= 1;\n }\n }\n return crc >>> 0;\n});\n\n// C-style uInt32 Multiply (discards higher bits, when JS multiply discards lower bits)\nconst uMul = (a, b) => Math.imul(a, b) >>> 0;\n\n// crc32 byte single update (actually same function is part of utils.crc32 function :) )\nconst crc32update = (pCrc32, bval) => {\n return crctable[(pCrc32 ^ bval) & 0xff] ^ (pCrc32 >>> 8);\n};\n\n// function for generating salt for encrytion header\nconst genSalt = () => {\n if (\"function\" === typeof randomFillSync) {\n return randomFillSync(Buffer.alloc(12));\n } else {\n // fallback if function is not defined\n return genSalt.node();\n }\n};\n\n// salt generation with node random function (mainly as fallback)\ngenSalt.node = () => {\n const salt = Buffer.alloc(12);\n const len = salt.length;\n for (let i = 0; i < len; i++) salt[i] = (Math.random() * 256) & 0xff;\n return salt;\n};\n\n// general config\nconst config = {\n genSalt\n};\n\n// Class Initkeys handles same basic ops with keys\nfunction Initkeys(pw) {\n const pass = Buffer.isBuffer(pw) ? pw : Buffer.from(pw);\n this.keys = new Uint32Array([0x12345678, 0x23456789, 0x34567890]);\n for (let i = 0; i < pass.length; i++) {\n this.updateKeys(pass[i]);\n }\n}\n\nInitkeys.prototype.updateKeys = function (byteValue) {\n const keys = this.keys;\n keys[0] = crc32update(keys[0], byteValue);\n keys[1] += keys[0] & 0xff;\n keys[1] = uMul(keys[1], 134775813) + 1;\n keys[2] = crc32update(keys[2], keys[1] >>> 24);\n return byteValue;\n};\n\nInitkeys.prototype.next = function () {\n const k = (this.keys[2] | 2) >>> 0; // key\n return (uMul(k, k ^ 1) >> 8) & 0xff; // decode\n};\n\nfunction make_decrypter(/*Buffer*/ pwd) {\n // 1. Stage initialize key\n const keys = new Initkeys(pwd);\n\n // return decrypter function\n return function (/*Buffer*/ data) {\n // result - we create new Buffer for results\n const result = Buffer.alloc(data.length);\n let pos = 0;\n // process input data\n for (let c of data) {\n //c ^= keys.next();\n //result[pos++] = c; // decode & Save Value\n result[pos++] = keys.updateKeys(c ^ keys.next()); // update keys with decoded byte\n }\n return result;\n };\n}\n\nfunction make_encrypter(/*Buffer*/ pwd) {\n // 1. Stage initialize key\n const keys = new Initkeys(pwd);\n\n // return encrypting function, result and pos is here so we dont have to merge buffers later\n return function (/*Buffer*/ data, /*Buffer*/ result, /* Number */ pos = 0) {\n // result - we create new Buffer for results\n if (!result) result = Buffer.alloc(data.length);\n // process input data\n for (let c of data) {\n const k = keys.next(); // save key byte\n result[pos++] = c ^ k; // save val\n keys.updateKeys(c); // update keys with decoded byte\n }\n return result;\n };\n}\n\nfunction decrypt(/*Buffer*/ data, /*Object*/ header, /*String, Buffer*/ pwd) {\n if (!data || !Buffer.isBuffer(data) || data.length < 12) {\n return Buffer.alloc(0);\n }\n\n // 1. We Initialize and generate decrypting function\n const decrypter = make_decrypter(pwd);\n\n // 2. decrypt salt what is always 12 bytes and is a part of file content\n const salt = decrypter(data.slice(0, 12));\n\n // 3. does password meet expectations\n if (salt[11] !== header.crc >>> 24) {\n throw \"ADM-ZIP: Wrong Password\";\n }\n\n // 4. decode content\n return decrypter(data.slice(12));\n}\n\n// lets add way to populate salt, NOT RECOMMENDED for production but maybe useful for testing general functionality\nfunction _salter(data) {\n if (Buffer.isBuffer(data) && data.length >= 12) {\n // be aware - currently salting buffer data is modified\n config.genSalt = function () {\n return data.slice(0, 12);\n };\n } else if (data === \"node\") {\n // test salt generation with node random function\n config.genSalt = genSalt.node;\n } else {\n // if value is not acceptable config gets reset.\n config.genSalt = genSalt;\n }\n}\n\nfunction encrypt(/*Buffer*/ data, /*Object*/ header, /*String, Buffer*/ pwd, /*Boolean*/ oldlike = false) {\n // 1. test data if data is not Buffer we make buffer from it\n if (data == null) data = Buffer.alloc(0);\n // if data is not buffer be make buffer from it\n if (!Buffer.isBuffer(data)) data = Buffer.from(data.toString());\n\n // 2. We Initialize and generate encrypting function\n const encrypter = make_encrypter(pwd);\n\n // 3. generate salt (12-bytes of random data)\n const salt = config.genSalt();\n salt[11] = (header.crc >>> 24) & 0xff;\n\n // old implementations (before PKZip 2.04g) used two byte check\n if (oldlike) salt[10] = (header.crc >>> 16) & 0xff;\n\n // 4. create output\n const result = Buffer.alloc(data.length + 12);\n encrypter(salt, result);\n\n // finally encode content\n return encrypter(data, result, 12);\n}\n\nmodule.exports = { decrypt, encrypt, _salter };\n","module.exports = {\n /* The local file header */\n LOCHDR : 30, // LOC header size\n LOCSIG : 0x04034b50, // \"PK\\003\\004\"\n LOCVER : 4,\t// version needed to extract\n LOCFLG : 6, // general purpose bit flag\n LOCHOW : 8, // compression method\n LOCTIM : 10, // modification time (2 bytes time, 2 bytes date)\n LOCCRC : 14, // uncompressed file crc-32 value\n LOCSIZ : 18, // compressed size\n LOCLEN : 22, // uncompressed size\n LOCNAM : 26, // filename length\n LOCEXT : 28, // extra field length\n\n /* The Data descriptor */\n EXTSIG : 0x08074b50, // \"PK\\007\\008\"\n EXTHDR : 16, // EXT header size\n EXTCRC : 4, // uncompressed file crc-32 value\n EXTSIZ : 8, // compressed size\n EXTLEN : 12, // uncompressed size\n\n /* The central directory file header */\n CENHDR : 46, // CEN header size\n CENSIG : 0x02014b50, // \"PK\\001\\002\"\n CENVEM : 4, // version made by\n CENVER : 6, // version needed to extract\n CENFLG : 8, // encrypt, decrypt flags\n CENHOW : 10, // compression method\n CENTIM : 12, // modification time (2 bytes time, 2 bytes date)\n CENCRC : 16, // uncompressed file crc-32 value\n CENSIZ : 20, // compressed size\n CENLEN : 24, // uncompressed size\n CENNAM : 28, // filename length\n CENEXT : 30, // extra field length\n CENCOM : 32, // file comment length\n CENDSK : 34, // volume number start\n CENATT : 36, // internal file attributes\n CENATX : 38, // external file attributes (host system dependent)\n CENOFF : 42, // LOC header offset\n\n /* The entries in the end of central directory */\n ENDHDR : 22, // END header size\n ENDSIG : 0x06054b50, // \"PK\\005\\006\"\n ENDSUB : 8, // number of entries on this disk\n ENDTOT : 10, // total number of entries\n ENDSIZ : 12, // central directory size in bytes\n ENDOFF : 16, // offset of first CEN header\n ENDCOM : 20, // zip file comment length\n\n END64HDR : 20, // zip64 END header size\n END64SIG : 0x07064b50, // zip64 Locator signature, \"PK\\006\\007\"\n END64START : 4, // number of the disk with the start of the zip64\n END64OFF : 8, // relative offset of the zip64 end of central directory\n END64NUMDISKS : 16, // total number of disks\n\n ZIP64SIG : 0x06064b50, // zip64 signature, \"PK\\006\\006\"\n ZIP64HDR : 56, // zip64 record minimum size\n ZIP64LEAD : 12, // leading bytes at the start of the record, not counted by the value stored in ZIP64SIZE\n ZIP64SIZE : 4, // zip64 size of the central directory record\n ZIP64VEM : 12, // zip64 version made by\n ZIP64VER : 14, // zip64 version needed to extract\n ZIP64DSK : 16, // zip64 number of this disk\n ZIP64DSKDIR : 20, // number of the disk with the start of the record directory\n ZIP64SUB : 24, // number of entries on this disk\n ZIP64TOT : 32, // total number of entries\n ZIP64SIZB : 40, // zip64 central directory size in bytes\n ZIP64OFF : 48, // offset of start of central directory with respect to the starting disk number\n ZIP64EXTRA : 56, // extensible data sector\n\n /* Compression methods */\n STORED : 0, // no compression\n SHRUNK : 1, // shrunk\n REDUCED1 : 2, // reduced with compression factor 1\n REDUCED2 : 3, // reduced with compression factor 2\n REDUCED3 : 4, // reduced with compression factor 3\n REDUCED4 : 5, // reduced with compression factor 4\n IMPLODED : 6, // imploded\n // 7 reserved for Tokenizing compression algorithm\n DEFLATED : 8, // deflated\n ENHANCED_DEFLATED: 9, // enhanced deflated\n PKWARE : 10,// PKWare DCL imploded\n // 11 reserved by PKWARE\n BZIP2 : 12, // compressed using BZIP2\n // 13 reserved by PKWARE\n LZMA : 14, // LZMA\n // 15-17 reserved by PKWARE\n IBM_TERSE : 18, // compressed using IBM TERSE\n IBM_LZ77 : 19, // IBM LZ77 z\n AES_ENCRYPT : 99, // WinZIP AES encryption method\n\n /* General purpose bit flag */\n // values can obtained with expression 2**bitnr\n FLG_ENC : 1, // Bit 0: encrypted file\n FLG_COMP1 : 2, // Bit 1, compression option\n FLG_COMP2 : 4, // Bit 2, compression option\n FLG_DESC : 8, // Bit 3, data descriptor\n FLG_ENH : 16, // Bit 4, enhanced deflating\n FLG_PATCH : 32, // Bit 5, indicates that the file is compressed patched data.\n FLG_STR : 64, // Bit 6, strong encryption (patented)\n // Bits 7-10: Currently unused.\n FLG_EFS : 2048, // Bit 11: Language encoding flag (EFS)\n // Bit 12: Reserved by PKWARE for enhanced compression.\n // Bit 13: encrypted the Central Directory (patented).\n // Bits 14-15: Reserved by PKWARE.\n FLG_MSK : 4096, // mask header values\n\n /* Load type */\n FILE : 2,\n BUFFER : 1,\n NONE : 0,\n\n /* 4.5 Extensible data fields */\n EF_ID : 0,\n EF_SIZE : 2,\n\n /* Header IDs */\n ID_ZIP64 : 0x0001,\n ID_AVINFO : 0x0007,\n ID_PFS : 0x0008,\n ID_OS2 : 0x0009,\n ID_NTFS : 0x000a,\n ID_OPENVMS : 0x000c,\n ID_UNIX : 0x000d,\n ID_FORK : 0x000e,\n ID_PATCH : 0x000f,\n ID_X509_PKCS7 : 0x0014,\n ID_X509_CERTID_F : 0x0015,\n ID_X509_CERTID_C : 0x0016,\n ID_STRONGENC : 0x0017,\n ID_RECORD_MGT : 0x0018,\n ID_X509_PKCS7_RL : 0x0019,\n ID_IBM1 : 0x0065,\n ID_IBM2 : 0x0066,\n ID_POSZIP : 0x4690,\n\n EF_ZIP64_OR_32 : 0xffffffff,\n EF_ZIP64_OR_16 : 0xffff,\n EF_ZIP64_SUNCOMP : 0,\n EF_ZIP64_SCOMP : 8,\n EF_ZIP64_RHO : 16,\n EF_ZIP64_DSN : 24\n};\n","module.exports = {\n /* Header error messages */\n INVALID_LOC: \"Invalid LOC header (bad signature)\",\n INVALID_CEN: \"Invalid CEN header (bad signature)\",\n INVALID_END: \"Invalid END header (bad signature)\",\n\n /* ZipEntry error messages*/\n NO_DATA: \"Nothing to decompress\",\n BAD_CRC: \"CRC32 checksum failed\",\n FILE_IN_THE_WAY: \"There is a file in the way: %s\",\n UNKNOWN_METHOD: \"Invalid/unsupported compression method\",\n\n /* Inflater error messages */\n AVAIL_DATA: \"inflate::Available inflate data did not terminate\",\n INVALID_DISTANCE: \"inflate::Invalid literal/length or distance code in fixed or dynamic block\",\n TO_MANY_CODES: \"inflate::Dynamic block code description: too many length or distance codes\",\n INVALID_REPEAT_LEN: \"inflate::Dynamic block code description: repeat more than specified lengths\",\n INVALID_REPEAT_FIRST: \"inflate::Dynamic block code description: repeat lengths with no first length\",\n INCOMPLETE_CODES: \"inflate::Dynamic block code description: code lengths codes incomplete\",\n INVALID_DYN_DISTANCE: \"inflate::Dynamic block code description: invalid distance code lengths\",\n INVALID_CODES_LEN: \"inflate::Dynamic block code description: invalid literal/length code lengths\",\n INVALID_STORE_BLOCK: \"inflate::Stored block length did not match one's complement\",\n INVALID_BLOCK_TYPE: \"inflate::Invalid block type (type == 3)\",\n\n /* ADM-ZIP error messages */\n CANT_EXTRACT_FILE: \"Could not extract the file\",\n CANT_OVERRIDE: \"Target file already exists\",\n NO_ZIP: \"No zip file was loaded\",\n NO_ENTRY: \"Entry doesn't exist\",\n DIRECTORY_CONTENT_ERROR: \"A directory cannot have content\",\n FILE_NOT_FOUND: \"File not found: %s\",\n NOT_IMPLEMENTED: \"Not implemented\",\n INVALID_FILENAME: \"Invalid filename\",\n INVALID_FORMAT: \"Invalid or unsupported zip format. No END header found\"\n};\n","const fs = require(\"./fileSystem\").require();\nconst pth = require(\"path\");\n\nfs.existsSync = fs.existsSync || pth.existsSync;\n\nmodule.exports = function (/*String*/ path) {\n var _path = path || \"\",\n _obj = newAttr(),\n _stat = null;\n\n function newAttr() {\n return {\n directory: false,\n readonly: false,\n hidden: false,\n executable: false,\n mtime: 0,\n atime: 0\n };\n }\n\n if (_path && fs.existsSync(_path)) {\n _stat = fs.statSync(_path);\n _obj.directory = _stat.isDirectory();\n _obj.mtime = _stat.mtime;\n _obj.atime = _stat.atime;\n _obj.executable = (0o111 & _stat.mode) !== 0; // file is executable who ever har right not just owner\n _obj.readonly = (0o200 & _stat.mode) === 0; // readonly if owner has no write right\n _obj.hidden = pth.basename(_path)[0] === \".\";\n } else {\n console.warn(\"Invalid path: \" + _path);\n }\n\n return {\n get directory() {\n return _obj.directory;\n },\n\n get readOnly() {\n return _obj.readonly;\n },\n\n get hidden() {\n return _obj.hidden;\n },\n\n get mtime() {\n return _obj.mtime;\n },\n\n get atime() {\n return _obj.atime;\n },\n\n get executable() {\n return _obj.executable;\n },\n\n decodeAttributes: function () {},\n\n encodeAttributes: function () {},\n\n toJSON: function () {\n return {\n path: _path,\n isDirectory: _obj.directory,\n isReadOnly: _obj.readonly,\n isHidden: _obj.hidden,\n isExecutable: _obj.executable,\n mTime: _obj.mtime,\n aTime: _obj.atime\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","exports.require = function () {\n if (typeof process === \"object\" && process.versions && process.versions[\"electron\"]) {\n try {\n const originalFs = require(\"original-fs\");\n if (Object.keys(originalFs).length > 0) {\n return originalFs;\n }\n } catch (e) {}\n }\n return require(\"fs\");\n};\n","module.exports = require(\"./utils\");\nmodule.exports.Constants = require(\"./constants\");\nmodule.exports.Errors = require(\"./errors\");\nmodule.exports.FileAttr = require(\"./fattr\");\n","const fsystem = require(\"./fileSystem\").require();\nconst pth = require(\"path\");\nconst Constants = require(\"./constants\");\nconst isWin = typeof process === \"object\" && \"win32\" === process.platform;\n\nconst is_Obj = (obj) => obj && typeof obj === \"object\";\n\n// generate CRC32 lookup table\nconst crcTable = new Uint32Array(256).map((t, c) => {\n for (let k = 0; k < 8; k++) {\n if ((c & 1) !== 0) {\n c = 0xedb88320 ^ (c >>> 1);\n } else {\n c >>>= 1;\n }\n }\n return c >>> 0;\n});\n\n// UTILS functions\n\nfunction Utils(opts) {\n this.sep = pth.sep;\n this.fs = fsystem;\n\n if (is_Obj(opts)) {\n // custom filesystem\n if (is_Obj(opts.fs) && typeof opts.fs.statSync === \"function\") {\n this.fs = opts.fs;\n }\n }\n}\n\nmodule.exports = Utils;\n\n// INSTANCED functions\n\nUtils.prototype.makeDir = function (/*String*/ folder) {\n const self = this;\n\n // Sync - make directories tree\n function mkdirSync(/*String*/ fpath) {\n let resolvedPath = fpath.split(self.sep)[0];\n fpath.split(self.sep).forEach(function (name) {\n if (!name || name.substr(-1, 1) === \":\") return;\n resolvedPath += self.sep + name;\n var stat;\n try {\n stat = self.fs.statSync(resolvedPath);\n } catch (e) {\n self.fs.mkdirSync(resolvedPath);\n }\n if (stat && stat.isFile()) throw Errors.FILE_IN_THE_WAY.replace(\"%s\", resolvedPath);\n });\n }\n\n mkdirSync(folder);\n};\n\nUtils.prototype.writeFileTo = function (/*String*/ path, /*Buffer*/ content, /*Boolean*/ overwrite, /*Number*/ attr) {\n const self = this;\n if (self.fs.existsSync(path)) {\n if (!overwrite) return false; // cannot overwrite\n\n var stat = self.fs.statSync(path);\n if (stat.isDirectory()) {\n return false;\n }\n }\n var folder = pth.dirname(path);\n if (!self.fs.existsSync(folder)) {\n self.makeDir(folder);\n }\n\n var fd;\n try {\n fd = self.fs.openSync(path, \"w\", 438); // 0666\n } catch (e) {\n self.fs.chmodSync(path, 438);\n fd = self.fs.openSync(path, \"w\", 438);\n }\n if (fd) {\n try {\n self.fs.writeSync(fd, content, 0, content.length, 0);\n } finally {\n self.fs.closeSync(fd);\n }\n }\n self.fs.chmodSync(path, attr || 438);\n return true;\n};\n\nUtils.prototype.writeFileToAsync = function (/*String*/ path, /*Buffer*/ content, /*Boolean*/ overwrite, /*Number*/ attr, /*Function*/ callback) {\n if (typeof attr === \"function\") {\n callback = attr;\n attr = undefined;\n }\n\n const self = this;\n\n self.fs.exists(path, function (exist) {\n if (exist && !overwrite) return callback(false);\n\n self.fs.stat(path, function (err, stat) {\n if (exist && stat.isDirectory()) {\n return callback(false);\n }\n\n var folder = pth.dirname(path);\n self.fs.exists(folder, function (exists) {\n if (!exists) self.makeDir(folder);\n\n self.fs.open(path, \"w\", 438, function (err, fd) {\n if (err) {\n self.fs.chmod(path, 438, function () {\n self.fs.open(path, \"w\", 438, function (err, fd) {\n self.fs.write(fd, content, 0, content.length, 0, function () {\n self.fs.close(fd, function () {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n });\n });\n });\n });\n } else if (fd) {\n self.fs.write(fd, content, 0, content.length, 0, function () {\n self.fs.close(fd, function () {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n });\n });\n } else {\n self.fs.chmod(path, attr || 438, function () {\n callback(true);\n });\n }\n });\n });\n });\n });\n};\n\nUtils.prototype.findFiles = function (/*String*/ path) {\n const self = this;\n\n function findSync(/*String*/ dir, /*RegExp*/ pattern, /*Boolean*/ recursive) {\n if (typeof pattern === \"boolean\") {\n recursive = pattern;\n pattern = undefined;\n }\n let files = [];\n self.fs.readdirSync(dir).forEach(function (file) {\n var path = pth.join(dir, file);\n\n if (self.fs.statSync(path).isDirectory() && recursive) files = files.concat(findSync(path, pattern, recursive));\n\n if (!pattern || pattern.test(path)) {\n files.push(pth.normalize(path) + (self.fs.statSync(path).isDirectory() ? self.sep : \"\"));\n }\n });\n return files;\n }\n\n return findSync(path, undefined, true);\n};\n\nUtils.prototype.getAttributes = function () {};\n\nUtils.prototype.setAttributes = function () {};\n\n// STATIC functions\n\n// crc32 single update (it is part of crc32)\nUtils.crc32update = function (crc, byte) {\n return crcTable[(crc ^ byte) & 0xff] ^ (crc >>> 8);\n};\n\nUtils.crc32 = function (buf) {\n if (typeof buf === \"string\") {\n buf = Buffer.from(buf, \"utf8\");\n }\n // Generate crcTable\n if (!crcTable.length) genCRCTable();\n\n let len = buf.length;\n let crc = ~0;\n for (let off = 0; off < len; ) crc = Utils.crc32update(crc, buf[off++]);\n // xor and cast as uint32 number\n return ~crc >>> 0;\n};\n\nUtils.methodToString = function (/*Number*/ method) {\n switch (method) {\n case Constants.STORED:\n return \"STORED (\" + method + \")\";\n case Constants.DEFLATED:\n return \"DEFLATED (\" + method + \")\";\n default:\n return \"UNSUPPORTED (\" + method + \")\";\n }\n};\n\n// removes \"..\" style path elements\nUtils.canonical = function (/*string*/ path) {\n if (!path) return \"\";\n // trick normalize think path is absolute\n var safeSuffix = pth.posix.normalize(\"/\" + path.split(\"\\\\\").join(\"/\"));\n return pth.join(\".\", safeSuffix);\n};\n\n// make abolute paths taking prefix as root folder\nUtils.sanitize = function (/*string*/ prefix, /*string*/ name) {\n prefix = pth.resolve(pth.normalize(prefix));\n var parts = name.split(\"/\");\n for (var i = 0, l = parts.length; i < l; i++) {\n var path = pth.normalize(pth.join(prefix, parts.slice(i, l).join(pth.sep)));\n if (path.indexOf(prefix) === 0) {\n return path;\n }\n }\n return pth.normalize(pth.join(prefix, pth.basename(name)));\n};\n\n// converts buffer, Uint8Array, string types to buffer\nUtils.toBuffer = function toBuffer(/*buffer, Uint8Array, string*/ input) {\n if (Buffer.isBuffer(input)) {\n return input;\n } else if (input instanceof Uint8Array) {\n return Buffer.from(input);\n } else {\n // expect string all other values are invalid and return empty buffer\n return typeof input === \"string\" ? Buffer.from(input, \"utf8\") : Buffer.alloc(0);\n }\n};\n\nUtils.readBigUInt64LE = function (/*Buffer*/ buffer, /*int*/ index) {\n var slice = Buffer.from(buffer.slice(index, index + 8));\n slice.swap64();\n\n return parseInt(`0x${slice.toString(\"hex\")}`);\n};\n\nUtils.isWin = isWin; // Do we have windows system\nUtils.crcTable = crcTable;\n","var Utils = require(\"./util\"),\n Headers = require(\"./headers\"),\n Constants = Utils.Constants,\n Methods = require(\"./methods\");\n\nmodule.exports = function (/*Buffer*/ input) {\n var _entryHeader = new Headers.EntryHeader(),\n _entryName = Buffer.alloc(0),\n _comment = Buffer.alloc(0),\n _isDirectory = false,\n uncompressedData = null,\n _extra = Buffer.alloc(0);\n\n function getCompressedDataFromZip() {\n if (!input || !Buffer.isBuffer(input)) {\n return Buffer.alloc(0);\n }\n _entryHeader.loadDataHeaderFromBinary(input);\n return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize);\n }\n\n function crc32OK(data) {\n // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n if ((_entryHeader.flags & 0x8) !== 0x8) {\n if (Utils.crc32(data) !== _entryHeader.dataHeader.crc) {\n return false;\n }\n } else {\n // @TODO: load and check data descriptor header\n // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure\n // (optionally preceded by a 4-byte signature) immediately after the compressed data:\n }\n return true;\n }\n\n function decompress(/*Boolean*/ async, /*Function*/ callback, /*String, Buffer*/ pass) {\n if (typeof callback === \"undefined\" && typeof async === \"string\") {\n pass = async;\n async = void 0;\n }\n if (_isDirectory) {\n if (async && callback) {\n callback(Buffer.alloc(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error.\n }\n return Buffer.alloc(0);\n }\n\n var compressedData = getCompressedDataFromZip();\n\n if (compressedData.length === 0) {\n // File is empty, nothing to decompress.\n if (async && callback) callback(compressedData);\n return compressedData;\n }\n\n if (_entryHeader.encripted) {\n if (\"string\" !== typeof pass && !Buffer.isBuffer(pass)) {\n throw new Error(\"ADM-ZIP: Incompatible password parameter\");\n }\n compressedData = Methods.ZipCrypto.decrypt(compressedData, _entryHeader, pass);\n }\n\n var data = Buffer.alloc(_entryHeader.size);\n\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n compressedData.copy(data);\n if (!crc32OK(data)) {\n if (async && callback) callback(data, Utils.Errors.BAD_CRC); //si added error\n throw new Error(Utils.Errors.BAD_CRC);\n } else {\n //si added otherwise did not seem to return data.\n if (async && callback) callback(data);\n return data;\n }\n case Utils.Constants.DEFLATED:\n var inflater = new Methods.Inflater(compressedData);\n if (!async) {\n const result = inflater.inflate(data);\n result.copy(data, 0);\n if (!crc32OK(data)) {\n throw new Error(Utils.Errors.BAD_CRC + \" \" + _entryName.toString());\n }\n return data;\n } else {\n inflater.inflateAsync(function (result) {\n result.copy(result, 0);\n if (callback) {\n if (!crc32OK(result)) {\n callback(result, Utils.Errors.BAD_CRC); //si added error\n } else {\n callback(result);\n }\n }\n });\n }\n break;\n default:\n if (async && callback) callback(Buffer.alloc(0), Utils.Errors.UNKNOWN_METHOD);\n throw new Error(Utils.Errors.UNKNOWN_METHOD);\n }\n }\n\n function compress(/*Boolean*/ async, /*Function*/ callback) {\n if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) {\n // no data set or the data wasn't changed to require recompression\n if (async && callback) callback(getCompressedDataFromZip());\n return getCompressedDataFromZip();\n }\n\n if (uncompressedData.length && !_isDirectory) {\n var compressedData;\n // Local file header\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n _entryHeader.compressedSize = _entryHeader.size;\n\n compressedData = Buffer.alloc(uncompressedData.length);\n uncompressedData.copy(compressedData);\n\n if (async && callback) callback(compressedData);\n return compressedData;\n default:\n case Utils.Constants.DEFLATED:\n var deflater = new Methods.Deflater(uncompressedData);\n if (!async) {\n var deflated = deflater.deflate();\n _entryHeader.compressedSize = deflated.length;\n return deflated;\n } else {\n deflater.deflateAsync(function (data) {\n compressedData = Buffer.alloc(data.length);\n _entryHeader.compressedSize = data.length;\n data.copy(compressedData);\n callback && callback(compressedData);\n });\n }\n deflater = null;\n break;\n }\n } else if (async && callback) {\n callback(Buffer.alloc(0));\n } else {\n return Buffer.alloc(0);\n }\n }\n\n function readUInt64LE(buffer, offset) {\n return (buffer.readUInt32LE(offset + 4) << 4) + buffer.readUInt32LE(offset);\n }\n\n function parseExtra(data) {\n var offset = 0;\n var signature, size, part;\n while (offset < data.length) {\n signature = data.readUInt16LE(offset);\n offset += 2;\n size = data.readUInt16LE(offset);\n offset += 2;\n part = data.slice(offset, offset + size);\n offset += size;\n if (Constants.ID_ZIP64 === signature) {\n parseZip64ExtendedInformation(part);\n }\n }\n }\n\n //Override header field values with values from the ZIP64 extra field\n function parseZip64ExtendedInformation(data) {\n var size, compressedSize, offset, diskNumStart;\n\n if (data.length >= Constants.EF_ZIP64_SCOMP) {\n size = readUInt64LE(data, Constants.EF_ZIP64_SUNCOMP);\n if (_entryHeader.size === Constants.EF_ZIP64_OR_32) {\n _entryHeader.size = size;\n }\n }\n if (data.length >= Constants.EF_ZIP64_RHO) {\n compressedSize = readUInt64LE(data, Constants.EF_ZIP64_SCOMP);\n if (_entryHeader.compressedSize === Constants.EF_ZIP64_OR_32) {\n _entryHeader.compressedSize = compressedSize;\n }\n }\n if (data.length >= Constants.EF_ZIP64_DSN) {\n offset = readUInt64LE(data, Constants.EF_ZIP64_RHO);\n if (_entryHeader.offset === Constants.EF_ZIP64_OR_32) {\n _entryHeader.offset = offset;\n }\n }\n if (data.length >= Constants.EF_ZIP64_DSN + 4) {\n diskNumStart = data.readUInt32LE(Constants.EF_ZIP64_DSN);\n if (_entryHeader.diskNumStart === Constants.EF_ZIP64_OR_16) {\n _entryHeader.diskNumStart = diskNumStart;\n }\n }\n }\n\n return {\n get entryName() {\n return _entryName.toString();\n },\n get rawEntryName() {\n return _entryName;\n },\n set entryName(val) {\n _entryName = Utils.toBuffer(val);\n var lastChar = _entryName[_entryName.length - 1];\n _isDirectory = lastChar === 47 || lastChar === 92;\n _entryHeader.fileNameLength = _entryName.length;\n },\n\n get extra() {\n return _extra;\n },\n set extra(val) {\n _extra = val;\n _entryHeader.extraLength = val.length;\n parseExtra(val);\n },\n\n get comment() {\n return _comment.toString();\n },\n set comment(val) {\n _comment = Utils.toBuffer(val);\n _entryHeader.commentLength = _comment.length;\n },\n\n get name() {\n var n = _entryName.toString();\n return _isDirectory\n ? n\n .substr(n.length - 1)\n .split(\"/\")\n .pop()\n : n.split(\"/\").pop();\n },\n get isDirectory() {\n return _isDirectory;\n },\n\n getCompressedData: function () {\n return compress(false, null);\n },\n\n getCompressedDataAsync: function (/*Function*/ callback) {\n compress(true, callback);\n },\n\n setData: function (value) {\n uncompressedData = Utils.toBuffer(value);\n if (!_isDirectory && uncompressedData.length) {\n _entryHeader.size = uncompressedData.length;\n _entryHeader.method = Utils.Constants.DEFLATED;\n _entryHeader.crc = Utils.crc32(value);\n _entryHeader.changed = true;\n } else {\n // folders and blank files should be stored\n _entryHeader.method = Utils.Constants.STORED;\n }\n },\n\n getData: function (pass) {\n if (_entryHeader.changed) {\n return uncompressedData;\n } else {\n return decompress(false, null, pass);\n }\n },\n\n getDataAsync: function (/*Function*/ callback, pass) {\n if (_entryHeader.changed) {\n callback(uncompressedData);\n } else {\n decompress(true, callback, pass);\n }\n },\n\n set attr(attr) {\n _entryHeader.attr = attr;\n },\n get attr() {\n return _entryHeader.attr;\n },\n\n set header(/*Buffer*/ data) {\n _entryHeader.loadFromBinary(data);\n },\n\n get header() {\n return _entryHeader;\n },\n\n packHeader: function () {\n // 1. create header (buffer)\n var header = _entryHeader.entryHeaderToBinary();\n var addpos = Utils.Constants.CENHDR;\n // 2. add file name\n _entryName.copy(header, addpos);\n addpos += _entryName.length;\n // 3. add extra data\n if (_entryHeader.extraLength) {\n _extra.copy(header, addpos);\n addpos += _entryHeader.extraLength;\n }\n // 4. add file comment\n if (_entryHeader.commentLength) {\n _comment.copy(header, addpos);\n }\n return header;\n },\n\n toJSON: function () {\n const bytes = function (nr) {\n return \"<\" + ((nr && nr.length + \" bytes buffer\") || \"null\") + \">\";\n };\n\n return {\n entryName: this.entryName,\n name: this.name,\n comment: this.comment,\n isDirectory: this.isDirectory,\n header: _entryHeader.toJSON(),\n compressedData: bytes(input),\n data: bytes(uncompressedData)\n };\n },\n\n toString: function () {\n return JSON.stringify(this.toJSON(), null, \"\\t\");\n }\n };\n};\n","const ZipEntry = require(\"./zipEntry\");\nconst Headers = require(\"./headers\");\nconst Utils = require(\"./util\");\n\nmodule.exports = function (/*Buffer|null*/ inBuffer, /** object */ options) {\n var entryList = [],\n entryTable = {},\n _comment = Buffer.alloc(0),\n mainHeader = new Headers.MainHeader(),\n loadedEntries = false;\n\n // assign options\n const opts = Object.assign(Object.create(null), options);\n\n const { noSort } = opts;\n\n if (inBuffer) {\n // is a memory buffer\n readMainHeader(opts.readEntries);\n } else {\n // none. is a new file\n loadedEntries = true;\n }\n\n function iterateEntries(callback) {\n const totalEntries = mainHeader.diskEntries; // total number of entries\n let index = mainHeader.offset; // offset of first CEN header\n\n for (let i = 0; i < totalEntries; i++) {\n let tmp = index;\n const entry = new ZipEntry(inBuffer);\n\n entry.header = inBuffer.slice(tmp, (tmp += Utils.Constants.CENHDR));\n entry.entryName = inBuffer.slice(tmp, (tmp += entry.header.fileNameLength));\n\n index += entry.header.entryHeaderSize;\n\n callback(entry);\n }\n }\n\n function readEntries() {\n loadedEntries = true;\n entryTable = {};\n entryList = new Array(mainHeader.diskEntries); // total number of entries\n var index = mainHeader.offset; // offset of first CEN header\n for (var i = 0; i < entryList.length; i++) {\n var tmp = index,\n entry = new ZipEntry(inBuffer);\n entry.header = inBuffer.slice(tmp, (tmp += Utils.Constants.CENHDR));\n\n entry.entryName = inBuffer.slice(tmp, (tmp += entry.header.fileNameLength));\n\n if (entry.header.extraLength) {\n entry.extra = inBuffer.slice(tmp, (tmp += entry.header.extraLength));\n }\n\n if (entry.header.commentLength) entry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength);\n\n index += entry.header.entryHeaderSize;\n\n entryList[i] = entry;\n entryTable[entry.entryName] = entry;\n }\n }\n\n function readMainHeader(/*Boolean*/ readNow) {\n var i = inBuffer.length - Utils.Constants.ENDHDR, // END header size\n max = Math.max(0, i - 0xffff), // 0xFFFF is the max zip file comment length\n n = max,\n endStart = inBuffer.length,\n endOffset = -1, // Start offset of the END header\n commentEnd = 0;\n\n for (i; i >= n; i--) {\n if (inBuffer[i] !== 0x50) continue; // quick check that the byte is 'P'\n if (inBuffer.readUInt32LE(i) === Utils.Constants.ENDSIG) {\n // \"PK\\005\\006\"\n endOffset = i;\n commentEnd = i;\n endStart = i + Utils.Constants.ENDHDR;\n // We already found a regular signature, let's look just a bit further to check if there's any zip64 signature\n n = i - Utils.Constants.END64HDR;\n continue;\n }\n\n if (inBuffer.readUInt32LE(i) === Utils.Constants.END64SIG) {\n // Found a zip64 signature, let's continue reading the whole zip64 record\n n = max;\n continue;\n }\n\n if (inBuffer.readUInt32LE(i) === Utils.Constants.ZIP64SIG) {\n // Found the zip64 record, let's determine it's size\n endOffset = i;\n endStart = i + Utils.readBigUInt64LE(inBuffer, i + Utils.Constants.ZIP64SIZE) + Utils.Constants.ZIP64LEAD;\n break;\n }\n }\n\n if (!~endOffset) throw new Error(Utils.Errors.INVALID_FORMAT);\n\n mainHeader.loadFromBinary(inBuffer.slice(endOffset, endStart));\n if (mainHeader.commentLength) {\n _comment = inBuffer.slice(commentEnd + Utils.Constants.ENDHDR);\n }\n if (readNow) readEntries();\n }\n\n function sortEntries() {\n if (entryList.length > 1 && !noSort) {\n entryList.sort((a, b) => a.entryName.toLowerCase().localeCompare(b.entryName.toLowerCase()));\n }\n }\n\n return {\n /**\n * Returns an array of ZipEntry objects existent in the current opened archive\n * @return Array\n */\n get entries() {\n if (!loadedEntries) {\n readEntries();\n }\n return entryList;\n },\n\n /**\n * Archive comment\n * @return {String}\n */\n get comment() {\n return _comment.toString();\n },\n set comment(val) {\n _comment = Utils.toBuffer(val);\n mainHeader.commentLength = _comment.length;\n },\n\n getEntryCount: function () {\n if (!loadedEntries) {\n return mainHeader.diskEntries;\n }\n\n return entryList.length;\n },\n\n forEach: function (callback) {\n if (!loadedEntries) {\n iterateEntries(callback);\n return;\n }\n\n entryList.forEach(callback);\n },\n\n /**\n * Returns a reference to the entry with the given name or null if entry is inexistent\n *\n * @param entryName\n * @return ZipEntry\n */\n getEntry: function (/*String*/ entryName) {\n if (!loadedEntries) {\n readEntries();\n }\n return entryTable[entryName] || null;\n },\n\n /**\n * Adds the given entry to the entry list\n *\n * @param entry\n */\n setEntry: function (/*ZipEntry*/ entry) {\n if (!loadedEntries) {\n readEntries();\n }\n entryList.push(entry);\n entryTable[entry.entryName] = entry;\n mainHeader.totalEntries = entryList.length;\n },\n\n /**\n * Removes the entry with the given name from the entry list.\n *\n * If the entry is a directory, then all nested files and directories will be removed\n * @param entryName\n */\n deleteEntry: function (/*String*/ entryName) {\n if (!loadedEntries) {\n readEntries();\n }\n var entry = entryTable[entryName];\n if (entry && entry.isDirectory) {\n var _self = this;\n this.getEntryChildren(entry).forEach(function (child) {\n if (child.entryName !== entryName) {\n _self.deleteEntry(child.entryName);\n }\n });\n }\n entryList.splice(entryList.indexOf(entry), 1);\n delete entryTable[entryName];\n mainHeader.totalEntries = entryList.length;\n },\n\n /**\n * Iterates and returns all nested files and directories of the given entry\n *\n * @param entry\n * @return Array\n */\n getEntryChildren: function (/*ZipEntry*/ entry) {\n if (!loadedEntries) {\n readEntries();\n }\n if (entry && entry.isDirectory) {\n const list = [];\n const name = entry.entryName;\n const len = name.length;\n\n entryList.forEach(function (zipEntry) {\n if (zipEntry.entryName.substr(0, len) === name) {\n list.push(zipEntry);\n }\n });\n return list;\n }\n return [];\n },\n\n /**\n * Returns the zip file\n *\n * @return Buffer\n */\n compressToBuffer: function () {\n if (!loadedEntries) {\n readEntries();\n }\n sortEntries();\n\n const dataBlock = [];\n const entryHeaders = [];\n let totalSize = 0;\n let dindex = 0;\n\n mainHeader.size = 0;\n mainHeader.offset = 0;\n\n for (const entry of entryList) {\n // compress data and set local and entry header accordingly. Reason why is called first\n const compressedData = entry.getCompressedData();\n // 1. construct data header\n entry.header.offset = dindex;\n const dataHeader = entry.header.dataHeaderToBinary();\n const entryNameLen = entry.rawEntryName.length;\n // 1.2. postheader - data after data header\n const postHeader = Buffer.alloc(entryNameLen + entry.extra.length);\n entry.rawEntryName.copy(postHeader, 0);\n postHeader.copy(entry.extra, entryNameLen);\n\n // 2. offsets\n const dataLength = dataHeader.length + postHeader.length + compressedData.length;\n dindex += dataLength;\n\n // 3. store values in sequence\n dataBlock.push(dataHeader);\n dataBlock.push(postHeader);\n dataBlock.push(compressedData);\n\n // 4. construct entry header\n const entryHeader = entry.packHeader();\n entryHeaders.push(entryHeader);\n // 5. update main header\n mainHeader.size += entryHeader.length;\n totalSize += dataLength + entryHeader.length;\n }\n\n totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n // point to end of data and beginning of central directory first record\n mainHeader.offset = dindex;\n\n dindex = 0;\n const outBuffer = Buffer.alloc(totalSize);\n // write data blocks\n for (const content of dataBlock) {\n content.copy(outBuffer, dindex);\n dindex += content.length;\n }\n\n // write central directory entries\n for (const content of entryHeaders) {\n content.copy(outBuffer, dindex);\n dindex += content.length;\n }\n\n // write main header\n const mh = mainHeader.toBinary();\n if (_comment) {\n _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n }\n mh.copy(outBuffer, dindex);\n\n return outBuffer;\n },\n\n toAsyncBuffer: function (/*Function*/ onSuccess, /*Function*/ onFail, /*Function*/ onItemStart, /*Function*/ onItemEnd) {\n try {\n if (!loadedEntries) {\n readEntries();\n }\n sortEntries();\n\n const dataBlock = [];\n const entryHeaders = [];\n let totalSize = 0;\n let dindex = 0;\n\n mainHeader.size = 0;\n mainHeader.offset = 0;\n\n const compress2Buffer = function (entryLists) {\n if (entryLists.length) {\n const entry = entryLists.pop();\n const name = entry.entryName + entry.extra.toString();\n if (onItemStart) onItemStart(name);\n entry.getCompressedDataAsync(function (compressedData) {\n if (onItemEnd) onItemEnd(name);\n\n entry.header.offset = dindex;\n // data header\n const dataHeader = entry.header.dataHeaderToBinary();\n const postHeader = Buffer.alloc(name.length, name);\n const dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n dindex += dataLength;\n\n dataBlock.push(dataHeader);\n dataBlock.push(postHeader);\n dataBlock.push(compressedData);\n\n const entryHeader = entry.packHeader();\n entryHeaders.push(entryHeader);\n mainHeader.size += entryHeader.length;\n totalSize += dataLength + entryHeader.length;\n\n compress2Buffer(entryLists);\n });\n } else {\n totalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n // point to end of data and beginning of central directory first record\n mainHeader.offset = dindex;\n\n dindex = 0;\n const outBuffer = Buffer.alloc(totalSize);\n dataBlock.forEach(function (content) {\n content.copy(outBuffer, dindex); // write data blocks\n dindex += content.length;\n });\n entryHeaders.forEach(function (content) {\n content.copy(outBuffer, dindex); // write central directory entries\n dindex += content.length;\n });\n\n const mh = mainHeader.toBinary();\n if (_comment) {\n _comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n }\n\n mh.copy(outBuffer, dindex); // write main header\n\n onSuccess(outBuffer);\n }\n };\n\n compress2Buffer(entryList);\n } catch (e) {\n onFail(e);\n }\n }\n };\n};\n","'use strict';\n\nvar ArraySpeciesCreate = require('es-abstract/2020/ArraySpeciesCreate');\nvar Call = require('es-abstract/2020/Call');\nvar CreateDataPropertyOrThrow = require('es-abstract/2020/CreateDataPropertyOrThrow');\nvar Get = require('es-abstract/2020/Get');\nvar HasProperty = require('es-abstract/2020/HasProperty');\nvar IsCallable = require('es-abstract/2020/IsCallable');\nvar LengthOfArrayLike = require('es-abstract/2020/LengthOfArrayLike');\nvar ToBoolean = require('es-abstract/2020/ToBoolean');\nvar ToObject = require('es-abstract/2020/ToObject');\nvar ToString = require('es-abstract/2020/ToString');\nvar callBound = require('call-bind/callBound');\nvar isString = require('is-string');\n\n// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)\nvar boxedString = Object('a');\nvar splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\nvar strSplit = callBound('String.prototype.split');\n\nmodule.exports = function filter(callbackfn) {\n\tvar O = ToObject(this);\n\tvar self = splitString && isString(O) ? strSplit(O, '') : O;\n\tvar len = LengthOfArrayLike(self);\n\n\t// If no callback function or if callback is not a callable function\n\tif (!IsCallable(callbackfn)) {\n\t\tthrow new TypeError('Array.prototype.filter callback must be a function');\n\t}\n\n\tvar thisArg;\n\tif (arguments.length > 1) {\n\t\tthisArg = arguments[1];\n\t}\n\n\tvar A = ArraySpeciesCreate(O, 0);\n\tvar k = 0;\n\tvar to = 0;\n\n\twhile (k < len) {\n\t\tvar Pk = ToString(k);\n\t\tvar kPresent = HasProperty(O, Pk);\n\t\tif (kPresent) {\n\t\t\tvar kValue = Get(O, Pk);\n\t\t\tvar selected = ToBoolean(Call(callbackfn, thisArg, [kValue, k, O]));\n\t\t\tif (selected) {\n\t\t\t\tCreateDataPropertyOrThrow(A, ToString(to), kValue);\n\t\t\t\tto += 1;\n\t\t\t}\n\t\t}\n\t\tk += 1;\n\t}\n\n\treturn A;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar $slice = callBound('Array.prototype.slice');\n\n// eslint-disable-next-line no-unused-vars\nvar bound = function filter(array, callbackfn) {\n\tRequireObjectCoercible(array);\n\treturn polyfill.apply(array, $slice(arguments, 1));\n};\ndefine(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar arrayMethodBoxesProperly = require('es-array-method-boxes-properly');\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tvar method = Array.prototype.filter;\n\treturn arrayMethodBoxesProperly(method) ? method : implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimArrayPrototypeMap() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ filter: polyfill },\n\t\t{ filter: function () { return Array.prototype.filter !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar filter = require('array.prototype.filter');\n\nmodule.exports = function availableTypedArrays() {\n\treturn filter([\n\t\t'BigInt64Array',\n\t\t'BigUint64Array',\n\t\t'Float32Array',\n\t\t'Float64Array',\n\t\t'Int16Array',\n\t\t'Int32Array',\n\t\t'Int8Array',\n\t\t'Uint16Array',\n\t\t'Uint32Array',\n\t\t'Uint8Array',\n\t\t'Uint8ClampedArray'\n\t], function (typedArray) {\n\t\treturn typeof global[typedArray] === 'function';\n\t});\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","\n\nclass ResizeableBuffer{\n constructor(size=100){\n this.size = size\n this.length = 0\n this.buf = Buffer.alloc(size)\n }\n prepend(val){\n const length = this.length++\n if(length === this.size){\n this.resize()\n }\n const buf = this.clone()\n this.buf[0] = val\n buf.copy(this.buf,1, 0, length)\n }\n append(val){\n const length = this.length++\n if(length === this.size){\n this.resize()\n }\n this.buf[length] = val\n }\n clone(){\n return Buffer.from(this.buf.slice(0, this.length))\n }\n resize(){\n const length = this.length\n this.size = this.size * 2\n const buf = Buffer.alloc(this.size)\n this.buf.copy(buf,0, 0, length)\n this.buf = buf\n }\n toString(){\n return this.buf.slice(0, this.length).toString()\n }\n toJSON(){\n return this.toString()\n }\n reset(){\n this.length = 0\n }\n}\n\nmodule.exports = ResizeableBuffer\n","\n/*\nCSV Parse\n\nPlease look at the [project documentation](https://csv.js.org/parse/) for\nadditional information.\n*/\n\nconst { Transform } = require('stream')\nconst ResizeableBuffer = require('./ResizeableBuffer')\n\nconst tab = 9\nconst nl = 10\nconst np = 12\nconst cr = 13\nconst space = 32\nconst bom_utf8 = Buffer.from([239, 187, 191])\n\nclass Parser extends Transform {\n constructor(opts = {}){\n super({...{readableObjectMode: true}, ...opts})\n const options = {}\n // Merge with user options\n for(let opt in opts){\n options[underscore(opt)] = opts[opt]\n }\n // Normalize option `bom`\n if(options.bom === undefined || options.bom === null || options.bom === false){\n options.bom = false\n }else if(options.bom !== true){\n throw new CsvError('CSV_INVALID_OPTION_BOM', [\n 'Invalid option bom:', 'bom must be true,',\n `got ${JSON.stringify(options.bom)}`\n ])\n }\n // Normalize option `cast`\n let fnCastField = null\n if(options.cast === undefined || options.cast === null || options.cast === false || options.cast === ''){\n options.cast = undefined\n }else if(typeof options.cast === 'function'){\n fnCastField = options.cast\n options.cast = true\n }else if(options.cast !== true){\n throw new CsvError('CSV_INVALID_OPTION_CAST', [\n 'Invalid option cast:', 'cast must be true or a function,',\n `got ${JSON.stringify(options.cast)}`\n ])\n }\n // Normalize option `cast_date`\n if(options.cast_date === undefined || options.cast_date === null || options.cast_date === false || options.cast_date === ''){\n options.cast_date = false\n }else if(options.cast_date === true){\n options.cast_date = function(value){\n const date = Date.parse(value)\n return !isNaN(date) ? new Date(date) : value\n }\n }else if(typeof options.cast_date !== 'function'){\n throw new CsvError('CSV_INVALID_OPTION_CAST_DATE', [\n 'Invalid option cast_date:', 'cast_date must be true or a function,',\n `got ${JSON.stringify(options.cast_date)}`\n ])\n }\n // Normalize option `columns`\n let fnFirstLineToHeaders = null\n if(options.columns === true){\n // Fields in the first line are converted as-is to columns\n fnFirstLineToHeaders = undefined\n }else if(typeof options.columns === 'function'){\n fnFirstLineToHeaders = options.columns\n options.columns = true\n }else if(Array.isArray(options.columns)){\n options.columns = normalizeColumnsArray(options.columns)\n }else if(options.columns === undefined || options.columns === null || options.columns === false){\n options.columns = false\n }else{\n throw new CsvError('CSV_INVALID_OPTION_COLUMNS', [\n 'Invalid option columns:',\n 'expect an object, a function or true,',\n `got ${JSON.stringify(options.columns)}`\n ])\n }\n // Normalize option `columns_duplicates_to_array`\n if(options.columns_duplicates_to_array === undefined || options.columns_duplicates_to_array === null || options.columns_duplicates_to_array === false){\n options.columns_duplicates_to_array = false\n }else if(options.columns_duplicates_to_array !== true){\n throw new CsvError('CSV_INVALID_OPTION_COLUMNS_DUPLICATES_TO_ARRAY', [\n 'Invalid option columns_duplicates_to_array:',\n 'expect an boolean,',\n `got ${JSON.stringify(options.columns_duplicates_to_array)}`\n ])\n }\n // Normalize option `comment`\n if(options.comment === undefined || options.comment === null || options.comment === false || options.comment === ''){\n options.comment = null\n }else{\n if(typeof options.comment === 'string'){\n options.comment = Buffer.from(options.comment)\n }\n if(!Buffer.isBuffer(options.comment)){\n throw new CsvError('CSV_INVALID_OPTION_COMMENT', [\n 'Invalid option comment:',\n 'comment must be a buffer or a string,',\n `got ${JSON.stringify(options.comment)}`\n ])\n }\n }\n // Normalize option `delimiter`\n const delimiter_json = JSON.stringify(options.delimiter)\n if(!Array.isArray(options.delimiter)) options.delimiter = [options.delimiter]\n if(options.delimiter.length === 0){\n throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [\n 'Invalid option delimiter:',\n 'delimiter must be a non empty string or buffer or array of string|buffer,',\n `got ${delimiter_json}`\n ])\n }\n options.delimiter = options.delimiter.map(function(delimiter){\n if(delimiter === undefined || delimiter === null || delimiter === false){\n return Buffer.from(',')\n }\n if(typeof delimiter === 'string'){\n delimiter = Buffer.from(delimiter)\n }\n if( !Buffer.isBuffer(delimiter) || delimiter.length === 0){\n throw new CsvError('CSV_INVALID_OPTION_DELIMITER', [\n 'Invalid option delimiter:',\n 'delimiter must be a non empty string or buffer or array of string|buffer,',\n `got ${delimiter_json}`\n ])\n }\n return delimiter\n })\n // Normalize option `escape`\n if(options.escape === undefined || options.escape === null){\n options.escape = Buffer.from('\"')\n }else if(typeof options.escape === 'string'){\n options.escape = Buffer.from(options.escape)\n }\n if(!Buffer.isBuffer(options.escape)){\n throw new Error(`Invalid Option: escape must be a buffer or a string, got ${JSON.stringify(options.escape)}`)\n }else if(options.escape.length !== 1){\n throw new Error(`Invalid Option Length: escape must be one character, got ${options.escape.length}`)\n }else{\n options.escape = options.escape[0]\n }\n // Normalize option `from`\n if(options.from === undefined || options.from === null){\n options.from = 1\n }else{\n if(typeof options.from === 'string' && /\\d+/.test(options.from)){\n options.from = parseInt(options.from)\n }\n if(Number.isInteger(options.from)){\n if(options.from < 0){\n throw new Error(`Invalid Option: from must be a positive integer, got ${JSON.stringify(opts.from)}`)\n }\n }else{\n throw new Error(`Invalid Option: from must be an integer, got ${JSON.stringify(options.from)}`)\n }\n }\n // Normalize option `from_line`\n if(options.from_line === undefined || options.from_line === null){\n options.from_line = 1\n }else{\n if(typeof options.from_line === 'string' && /\\d+/.test(options.from_line)){\n options.from_line = parseInt(options.from_line)\n }\n if(Number.isInteger(options.from_line)){\n if(options.from_line <= 0){\n throw new Error(`Invalid Option: from_line must be a positive integer greater than 0, got ${JSON.stringify(opts.from_line)}`)\n }\n }else{\n throw new Error(`Invalid Option: from_line must be an integer, got ${JSON.stringify(opts.from_line)}`)\n }\n }\n // Normalize option `info`\n if(options.info === undefined || options.info === null || options.info === false){\n options.info = false\n }else if(options.info !== true){\n throw new Error(`Invalid Option: info must be true, got ${JSON.stringify(options.info)}`)\n }\n // Normalize option `max_record_size`\n if(options.max_record_size === undefined || options.max_record_size === null || options.max_record_size === false){\n options.max_record_size = 0\n }else if(Number.isInteger(options.max_record_size) && options.max_record_size >= 0){\n // Great, nothing to do\n }else if(typeof options.max_record_size === 'string' && /\\d+/.test(options.max_record_size)){\n options.max_record_size = parseInt(options.max_record_size)\n }else{\n throw new Error(`Invalid Option: max_record_size must be a positive integer, got ${JSON.stringify(options.max_record_size)}`)\n }\n // Normalize option `objname`\n if(options.objname === undefined || options.objname === null || options.objname === false){\n options.objname = undefined\n }else if(Buffer.isBuffer(options.objname)){\n if(options.objname.length === 0){\n throw new Error(`Invalid Option: objname must be a non empty buffer`)\n }\n options.objname = options.objname.toString()\n }else if(typeof options.objname === 'string'){\n if(options.objname.length === 0){\n throw new Error(`Invalid Option: objname must be a non empty string`)\n }\n // Great, nothing to do\n }else{\n throw new Error(`Invalid Option: objname must be a string or a buffer, got ${options.objname}`)\n }\n // Normalize option `on_record`\n if(options.on_record === undefined || options.on_record === null){\n options.on_record = undefined\n }else if(typeof options.on_record !== 'function'){\n throw new CsvError('CSV_INVALID_OPTION_ON_RECORD', [\n 'Invalid option `on_record`:',\n 'expect a function,',\n `got ${JSON.stringify(options.on_record)}`\n ])\n }\n // Normalize option `quote`\n if(options.quote === null || options.quote === false || options.quote === ''){\n options.quote = null\n }else{\n if(options.quote === undefined || options.quote === true){\n options.quote = Buffer.from('\"')\n }else if(typeof options.quote === 'string'){\n options.quote = Buffer.from(options.quote)\n }\n if(!Buffer.isBuffer(options.quote)){\n throw new Error(`Invalid Option: quote must be a buffer or a string, got ${JSON.stringify(options.quote)}`)\n }else if(options.quote.length !== 1){\n throw new Error(`Invalid Option Length: quote must be one character, got ${options.quote.length}`)\n }else{\n options.quote = options.quote[0]\n }\n }\n // Normalize option `raw`\n if(options.raw === undefined || options.raw === null || options.raw === false){\n options.raw = false\n }else if(options.raw !== true){\n throw new Error(`Invalid Option: raw must be true, got ${JSON.stringify(options.raw)}`)\n }\n // Normalize option `record_delimiter`\n if(!options.record_delimiter){\n options.record_delimiter = []\n }else if(!Array.isArray(options.record_delimiter)){\n options.record_delimiter = [options.record_delimiter]\n }\n options.record_delimiter = options.record_delimiter.map( function(rd){\n if(typeof rd === 'string'){\n rd = Buffer.from(rd)\n }\n return rd\n })\n // Normalize option `relax`\n if(typeof options.relax === 'boolean'){\n // Great, nothing to do\n }else if(options.relax === undefined || options.relax === null){\n options.relax = false\n }else{\n throw new Error(`Invalid Option: relax must be a boolean, got ${JSON.stringify(options.relax)}`)\n }\n // Normalize option `relax_column_count`\n if(typeof options.relax_column_count === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count === undefined || options.relax_column_count === null){\n options.relax_column_count = false\n }else{\n throw new Error(`Invalid Option: relax_column_count must be a boolean, got ${JSON.stringify(options.relax_column_count)}`)\n }\n if(typeof options.relax_column_count_less === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count_less === undefined || options.relax_column_count_less === null){\n options.relax_column_count_less = false\n }else{\n throw new Error(`Invalid Option: relax_column_count_less must be a boolean, got ${JSON.stringify(options.relax_column_count_less)}`)\n }\n if(typeof options.relax_column_count_more === 'boolean'){\n // Great, nothing to do\n }else if(options.relax_column_count_more === undefined || options.relax_column_count_more === null){\n options.relax_column_count_more = false\n }else{\n throw new Error(`Invalid Option: relax_column_count_more must be a boolean, got ${JSON.stringify(options.relax_column_count_more)}`)\n }\n // Normalize option `skip_empty_lines`\n if(typeof options.skip_empty_lines === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_empty_lines === undefined || options.skip_empty_lines === null){\n options.skip_empty_lines = false\n }else{\n throw new Error(`Invalid Option: skip_empty_lines must be a boolean, got ${JSON.stringify(options.skip_empty_lines)}`)\n }\n // Normalize option `skip_lines_with_empty_values`\n if(typeof options.skip_lines_with_empty_values === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_lines_with_empty_values === undefined || options.skip_lines_with_empty_values === null){\n options.skip_lines_with_empty_values = false\n }else{\n throw new Error(`Invalid Option: skip_lines_with_empty_values must be a boolean, got ${JSON.stringify(options.skip_lines_with_empty_values)}`)\n }\n // Normalize option `skip_lines_with_error`\n if(typeof options.skip_lines_with_error === 'boolean'){\n // Great, nothing to do\n }else if(options.skip_lines_with_error === undefined || options.skip_lines_with_error === null){\n options.skip_lines_with_error = false\n }else{\n throw new Error(`Invalid Option: skip_lines_with_error must be a boolean, got ${JSON.stringify(options.skip_lines_with_error)}`)\n }\n // Normalize option `rtrim`\n if(options.rtrim === undefined || options.rtrim === null || options.rtrim === false){\n options.rtrim = false\n }else if(options.rtrim !== true){\n throw new Error(`Invalid Option: rtrim must be a boolean, got ${JSON.stringify(options.rtrim)}`)\n }\n // Normalize option `ltrim`\n if(options.ltrim === undefined || options.ltrim === null || options.ltrim === false){\n options.ltrim = false\n }else if(options.ltrim !== true){\n throw new Error(`Invalid Option: ltrim must be a boolean, got ${JSON.stringify(options.ltrim)}`)\n }\n // Normalize option `trim`\n if(options.trim === undefined || options.trim === null || options.trim === false){\n options.trim = false\n }else if(options.trim !== true){\n throw new Error(`Invalid Option: trim must be a boolean, got ${JSON.stringify(options.trim)}`)\n }\n // Normalize options `trim`, `ltrim` and `rtrim`\n if(options.trim === true && opts.ltrim !== false){\n options.ltrim = true\n }else if(options.ltrim !== true){\n options.ltrim = false\n }\n if(options.trim === true && opts.rtrim !== false){\n options.rtrim = true\n }else if(options.rtrim !== true){\n options.rtrim = false\n }\n // Normalize option `to`\n if(options.to === undefined || options.to === null){\n options.to = -1\n }else{\n if(typeof options.to === 'string' && /\\d+/.test(options.to)){\n options.to = parseInt(options.to)\n }\n if(Number.isInteger(options.to)){\n if(options.to <= 0){\n throw new Error(`Invalid Option: to must be a positive integer greater than 0, got ${JSON.stringify(opts.to)}`)\n }\n }else{\n throw new Error(`Invalid Option: to must be an integer, got ${JSON.stringify(opts.to)}`)\n }\n }\n // Normalize option `to_line`\n if(options.to_line === undefined || options.to_line === null){\n options.to_line = -1\n }else{\n if(typeof options.to_line === 'string' && /\\d+/.test(options.to_line)){\n options.to_line = parseInt(options.to_line)\n }\n if(Number.isInteger(options.to_line)){\n if(options.to_line <= 0){\n throw new Error(`Invalid Option: to_line must be a positive integer greater than 0, got ${JSON.stringify(opts.to_line)}`)\n }\n }else{\n throw new Error(`Invalid Option: to_line must be an integer, got ${JSON.stringify(opts.to_line)}`)\n }\n }\n this.info = {\n comment_lines: 0,\n empty_lines: 0,\n invalid_field_length: 0,\n lines: 1,\n records: 0\n }\n this.options = options\n this.state = {\n bomSkipped: false,\n castField: fnCastField,\n commenting: false,\n enabled: options.from_line === 1,\n escaping: false,\n escapeIsQuote: options.escape === options.quote,\n expectedRecordLength: options.columns === null ? 0 : options.columns.length,\n field: new ResizeableBuffer(20),\n firstLineToHeaders: fnFirstLineToHeaders,\n info: Object.assign({}, this.info),\n previousBuf: undefined,\n quoting: false,\n stop: false,\n rawBuffer: new ResizeableBuffer(100),\n record: [],\n recordHasError: false,\n record_length: 0,\n recordDelimiterMaxLength: options.record_delimiter.length === 0 ? 2 : Math.max(...options.record_delimiter.map( (v) => v.length)),\n trimChars: [Buffer.from(' ')[0], Buffer.from('\\t')[0]],\n wasQuoting: false,\n wasRowDelimiter: false\n }\n }\n // Implementation of `Transform._transform`\n _transform(buf, encoding, callback){\n if(this.state.stop === true){\n return\n }\n const err = this.__parse(buf, false)\n if(err !== undefined){\n this.state.stop = true\n }\n callback(err)\n }\n // Implementation of `Transform._flush`\n _flush(callback){\n if(this.state.stop === true){\n return\n }\n const err = this.__parse(undefined, true)\n callback(err)\n }\n // Central parser implementation\n __parse(nextBuf, end){\n const {bom, comment, escape, from_line, info, ltrim, max_record_size, quote, raw, relax, rtrim, skip_empty_lines, to, to_line} = this.options\n let {record_delimiter} = this.options\n const {bomSkipped, previousBuf, rawBuffer, escapeIsQuote} = this.state\n let buf\n if(previousBuf === undefined){\n if(nextBuf === undefined){\n // Handle empty string\n this.push(null)\n return\n }else{\n buf = nextBuf\n }\n }else if(previousBuf !== undefined && nextBuf === undefined){\n buf = previousBuf\n }else{\n buf = Buffer.concat([previousBuf, nextBuf])\n }\n // Handle UTF BOM\n if(bomSkipped === false){\n if(bom === false){\n this.state.bomSkipped = true\n }else if(buf.length < 3){\n // No enough data\n if(end === false){\n // Wait for more data\n this.state.previousBuf = buf\n return\n }\n // skip BOM detect because data length < 3\n }else{\n if(bom_utf8.compare(buf, 0, 3) === 0){\n // Skip BOM\n buf = buf.slice(3)\n }\n this.state.bomSkipped = true\n }\n }\n const bufLen = buf.length\n let pos\n for(pos = 0; pos < bufLen; pos++){\n // Ensure we get enough space to look ahead\n // There should be a way to move this out of the loop\n if(this.__needMoreData(pos, bufLen, end)){\n break\n }\n if(this.state.wasRowDelimiter === true){\n this.info.lines++\n if(info === true && this.state.record.length === 0 && this.state.field.length === 0 && this.state.wasQuoting === false){\n this.state.info = Object.assign({}, this.info)\n }\n this.state.wasRowDelimiter = false\n }\n if(to_line !== -1 && this.info.lines > to_line){\n this.state.stop = true\n this.push(null)\n return\n }\n // Auto discovery of record_delimiter, unix, mac and windows supported\n if(this.state.quoting === false && record_delimiter.length === 0){\n const record_delimiterCount = this.__autoDiscoverRowDelimiter(buf, pos)\n if(record_delimiterCount){\n record_delimiter = this.options.record_delimiter\n }\n }\n const chr = buf[pos]\n if(raw === true){\n rawBuffer.append(chr)\n }\n if((chr === cr || chr === nl) && this.state.wasRowDelimiter === false ){\n this.state.wasRowDelimiter = true\n }\n // Previous char was a valid escape char\n // treat the current char as a regular char\n if(this.state.escaping === true){\n this.state.escaping = false\n }else{\n // Escape is only active inside quoted fields\n // We are quoting, the char is an escape chr and there is a chr to escape\n if(this.state.quoting === true && chr === escape && pos + 1 < bufLen){\n if(escapeIsQuote){\n if(buf[pos+1] === quote){\n this.state.escaping = true\n continue\n }\n }else{\n this.state.escaping = true\n continue\n }\n }\n // Not currently escaping and chr is a quote\n // TODO: need to compare bytes instead of single char\n if(this.state.commenting === false && chr === quote){\n if(this.state.quoting === true){\n const nextChr = buf[pos+1]\n const isNextChrTrimable = rtrim && this.__isCharTrimable(nextChr)\n // const isNextChrComment = nextChr === comment\n const isNextChrComment = comment !== null && this.__compareBytes(comment, buf, pos+1, nextChr)\n const isNextChrDelimiter = this.__isDelimiter(nextChr, buf, pos+1)\n const isNextChrRowDelimiter = record_delimiter.length === 0 ? this.__autoDiscoverRowDelimiter(buf, pos+1) : this.__isRecordDelimiter(nextChr, buf, pos+1)\n // Escape a quote\n // Treat next char as a regular character\n // TODO: need to compare bytes instead of single char\n if(chr === escape && nextChr === quote){\n pos++\n }else if(!nextChr || isNextChrDelimiter || isNextChrRowDelimiter || isNextChrComment || isNextChrTrimable){\n this.state.quoting = false\n this.state.wasQuoting = true\n continue\n }else if(relax === false){\n const err = this.__error(\n new CsvError('CSV_INVALID_CLOSING_QUOTE', [\n 'Invalid Closing Quote:',\n `got \"${String.fromCharCode(nextChr)}\"`,\n `at line ${this.info.lines}`,\n 'instead of delimiter, row delimiter, trimable character',\n '(if activated) or comment',\n ], this.__context())\n )\n if(err !== undefined) return err\n }else{\n this.state.quoting = false\n this.state.wasQuoting = true\n // continue\n this.state.field.prepend(quote)\n }\n }else{\n if(this.state.field.length !== 0){\n // In relax mode, treat opening quote preceded by chrs as regular\n if( relax === false ){\n const err = this.__error(\n new CsvError('INVALID_OPENING_QUOTE', [\n 'Invalid Opening Quote:',\n `a quote is found inside a field at line ${this.info.lines}`,\n ], this.__context(), {\n field: this.state.field,\n })\n )\n if(err !== undefined) return err\n }\n }else{\n this.state.quoting = true\n continue\n }\n }\n }\n if(this.state.quoting === false){\n let recordDelimiterLength = this.__isRecordDelimiter(chr, buf, pos)\n if(recordDelimiterLength !== 0){\n // Do not emit comments which take a full line\n const skipCommentLine = this.state.commenting && (this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0)\n if(skipCommentLine){\n this.info.comment_lines++\n // Skip full comment line\n }else{\n // Skip if line is empty and skip_empty_lines activated\n if(skip_empty_lines === true && this.state.wasQuoting === false && this.state.record.length === 0 && this.state.field.length === 0){\n this.info.empty_lines++\n pos += recordDelimiterLength - 1\n continue\n }\n // Activate records emition if above from_line\n if(this.state.enabled === false && this.info.lines + (this.state.wasRowDelimiter === true ? 1: 0 ) >= from_line){\n this.state.enabled = true\n this.__resetField()\n this.__resetRow()\n pos += recordDelimiterLength - 1\n continue\n }else{\n const errField = this.__onField()\n if(errField !== undefined) return errField\n const errRecord = this.__onRow()\n if(errRecord !== undefined) return errRecord\n }\n if(to !== -1 && this.info.records >= to){\n this.state.stop = true\n this.push(null)\n return\n }\n }\n this.state.commenting = false\n pos += recordDelimiterLength - 1\n continue\n }\n if(this.state.commenting){\n continue\n }\n const commentCount = comment === null ? 0 : this.__compareBytes(comment, buf, pos, chr)\n if(commentCount !== 0){\n this.state.commenting = true\n continue\n }\n let delimiterLength = this.__isDelimiter(chr, buf, pos)\n if(delimiterLength !== 0){\n const errField = this.__onField()\n if(errField !== undefined) return errField\n pos += delimiterLength - 1\n continue\n }\n }\n }\n if(this.state.commenting === false){\n if(max_record_size !== 0 && this.state.record_length + this.state.field.length > max_record_size){\n const err = this.__error(\n new CsvError('CSV_MAX_RECORD_SIZE', [\n 'Max Record Size:',\n 'record exceed the maximum number of tolerated bytes',\n `of ${max_record_size}`,\n `at line ${this.info.lines}`,\n ], this.__context())\n )\n if(err !== undefined) return err\n }\n }\n\n const lappend = ltrim === false || this.state.quoting === true || this.state.field.length !== 0 || !this.__isCharTrimable(chr)\n // rtrim in non quoting is handle in __onField\n const rappend = rtrim === false || this.state.wasQuoting === false\n if( lappend === true && rappend === true ){\n this.state.field.append(chr)\n }else if(rtrim === true && !this.__isCharTrimable(chr)){\n const err = this.__error(\n new CsvError('CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE', [\n 'Invalid Closing Quote:',\n 'found non trimable byte after quote',\n `at line ${this.info.lines}`,\n ], this.__context())\n )\n if(err !== undefined) return err\n }\n }\n if(end === true){\n // Ensure we are not ending in a quoting state\n if(this.state.quoting === true){\n const err = this.__error(\n new CsvError('CSV_QUOTE_NOT_CLOSED', [\n 'Quote Not Closed:',\n `the parsing is finished with an opening quote at line ${this.info.lines}`,\n ], this.__context())\n )\n if(err !== undefined) return err\n }else{\n // Skip last line if it has no characters\n if(this.state.wasQuoting === true || this.state.record.length !== 0 || this.state.field.length !== 0){\n const errField = this.__onField()\n if(errField !== undefined) return errField\n const errRecord = this.__onRow()\n if(errRecord !== undefined) return errRecord\n }else if(this.state.wasRowDelimiter === true){\n this.info.empty_lines++\n }else if(this.state.commenting === true){\n this.info.comment_lines++\n }\n }\n }else{\n this.state.previousBuf = buf.slice(pos)\n }\n if(this.state.wasRowDelimiter === true){\n this.info.lines++\n this.state.wasRowDelimiter = false\n }\n }\n // Helper to test if a character is a space or a line delimiter\n __isCharTrimable(chr){\n return chr === space || chr === tab || chr === cr || chr === nl || chr === np\n }\n __onRow(){\n const {columns, columns_duplicates_to_array, info, from, relax_column_count, relax_column_count_less, relax_column_count_more, raw, skip_lines_with_empty_values} = this.options\n const {enabled, record} = this.state\n if(enabled === false){\n return this.__resetRow()\n }\n // Convert the first line into column names\n const recordLength = record.length\n if(columns === true){\n if(isRecordEmpty(record)){\n this.__resetRow()\n return\n }\n return this.__firstLineToColumns(record)\n }\n if(columns === false && this.info.records === 0){\n this.state.expectedRecordLength = recordLength\n }\n if(recordLength !== this.state.expectedRecordLength){\n if(relax_column_count === true || \n (relax_column_count_less === true && recordLength < this.state.expectedRecordLength) ||\n (relax_column_count_more === true && recordLength > this.state.expectedRecordLength) ){\n this.info.invalid_field_length++\n }else{\n if(columns === false){\n const err = this.__error(\n new CsvError('CSV_INCONSISTENT_RECORD_LENGTH', [\n 'Invalid Record Length:',\n `expect ${this.state.expectedRecordLength},`,\n `got ${recordLength} on line ${this.info.lines}`,\n ], this.__context(), {\n record: record,\n })\n )\n if(err !== undefined) return err\n }else{\n const err = this.__error(\n // CSV_INVALID_RECORD_LENGTH_DONT_MATCH_COLUMNS\n new CsvError('CSV_RECORD_DONT_MATCH_COLUMNS_LENGTH', [\n 'Invalid Record Length:',\n `columns length is ${columns.length},`, // rename columns\n `got ${recordLength} on line ${this.info.lines}`,\n ], this.__context(), {\n record: record,\n })\n )\n if(err !== undefined) return err\n }\n }\n }\n if(skip_lines_with_empty_values === true){\n if(isRecordEmpty(record)){\n this.__resetRow()\n return\n }\n }\n if(this.state.recordHasError === true){\n this.__resetRow()\n this.state.recordHasError = false\n return\n }\n this.info.records++\n if(from === 1 || this.info.records >= from){\n if(columns !== false){\n const obj = {}\n // Transform record array to an object\n for(let i = 0, l = record.length; i < l; i++){\n if(columns[i] === undefined || columns[i].disabled) continue\n // obj[columns[i].name] = record[i]\n // Turn duplicate columns into an array\n if (columns_duplicates_to_array === true && obj[columns[i].name]) {\n if (Array.isArray(obj[columns[i].name])) {\n obj[columns[i].name] = obj[columns[i].name].concat(record[i])\n } else {\n obj[columns[i].name] = [obj[columns[i].name], record[i]]\n }\n } else {\n obj[columns[i].name] = record[i]\n }\n }\n const {objname} = this.options\n if(objname === undefined){\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: obj},\n (raw === true ? {raw: this.state.rawBuffer.toString()}: {}),\n (info === true ? {info: this.state.info}: {})\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push(obj)\n if(err){\n return err\n }\n }\n }else{\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: [obj[objname], obj]},\n raw === true ? {raw: this.state.rawBuffer.toString()}: {},\n info === true ? {info: this.state.info}: {}\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push([obj[objname], obj])\n if(err){\n return err\n }\n }\n }\n }else{\n if(raw === true || info === true){\n const err = this.__push(Object.assign(\n {record: record},\n raw === true ? {raw: this.state.rawBuffer.toString()}: {},\n info === true ? {info: this.state.info}: {}\n ))\n if(err){\n return err\n }\n }else{\n const err = this.__push(record)\n if(err){\n return err\n }\n }\n }\n }\n this.__resetRow()\n }\n __firstLineToColumns(record){\n const {firstLineToHeaders} = this.state\n try{\n const headers = firstLineToHeaders === undefined ? record : firstLineToHeaders.call(null, record)\n if(!Array.isArray(headers)){\n return this.__error(\n new CsvError('CSV_INVALID_COLUMN_MAPPING', [\n 'Invalid Column Mapping:',\n 'expect an array from column function,',\n `got ${JSON.stringify(headers)}`\n ], this.__context(), {\n headers: headers,\n })\n )\n }\n const normalizedHeaders = normalizeColumnsArray(headers)\n this.state.expectedRecordLength = normalizedHeaders.length\n this.options.columns = normalizedHeaders\n this.__resetRow()\n return\n }catch(err){\n return err\n }\n }\n __resetRow(){\n if(this.options.raw === true){\n this.state.rawBuffer.reset()\n }\n this.state.record = []\n this.state.record_length = 0\n }\n __onField(){\n const {cast, rtrim, max_record_size} = this.options\n const {enabled, wasQuoting} = this.state\n // Short circuit for the from_line options\n if(enabled === false){ /* this.options.columns !== true && */\n return this.__resetField()\n }\n let field = this.state.field.toString()\n if(rtrim === true && wasQuoting === false){\n field = field.trimRight()\n }\n if(cast === true){\n const [err, f] = this.__cast(field)\n if(err !== undefined) return err\n field = f\n }\n this.state.record.push(field)\n // Increment record length if record size must not exceed a limit\n if(max_record_size !== 0 && typeof field === 'string'){\n this.state.record_length += field.length\n }\n this.__resetField()\n }\n __resetField(){\n this.state.field.reset()\n this.state.wasQuoting = false\n }\n __push(record){\n const {on_record} = this.options\n if(on_record !== undefined){\n const context = this.__context()\n try{\n record = on_record.call(null, record, context)\n }catch(err){\n return err\n }\n if(record === undefined || record === null){ return }\n }\n this.push(record)\n }\n // Return a tuple with the error and the casted value\n __cast(field){\n const {columns, relax_column_count} = this.options\n const isColumns = Array.isArray(columns)\n // Dont loose time calling cast\n // because the final record is an object\n // and this field can't be associated to a key present in columns\n if( isColumns === true && relax_column_count && this.options.columns.length <= this.state.record.length ){\n return [undefined, undefined]\n }\n const context = this.__context()\n if(this.state.castField !== null){\n try{\n return [undefined, this.state.castField.call(null, field, context)]\n }catch(err){\n return [err]\n }\n }\n if(this.__isFloat(field)){\n return [undefined, parseFloat(field)]\n }else if(this.options.cast_date !== false){\n return [undefined, this.options.cast_date.call(null, field, context)]\n }\n return [undefined, field]\n }\n // Keep it in case we implement the `cast_int` option\n // __isInt(value){\n // // return Number.isInteger(parseInt(value))\n // // return !isNaN( parseInt( obj ) );\n // return /^(\\-|\\+)?[1-9][0-9]*$/.test(value)\n // }\n __isFloat(value){\n return (value - parseFloat( value ) + 1) >= 0 // Borrowed from jquery\n }\n __compareBytes(sourceBuf, targetBuf, pos, firtByte){\n if(sourceBuf[0] !== firtByte) return 0\n const sourceLength = sourceBuf.length\n for(let i = 1; i < sourceLength; i++){\n if(sourceBuf[i] !== targetBuf[pos+i]) return 0\n }\n return sourceLength\n }\n __needMoreData(i, bufLen, end){\n if(end){\n return false\n }\n const {comment, delimiter} = this.options\n const {quoting, recordDelimiterMaxLength} = this.state\n const numOfCharLeft = bufLen - i - 1\n const requiredLength = Math.max(\n // Skip if the remaining buffer smaller than comment\n comment ? comment.length : 0,\n // Skip if the remaining buffer smaller than row delimiter\n recordDelimiterMaxLength,\n // Skip if the remaining buffer can be row delimiter following the closing quote\n // 1 is for quote.length\n quoting ? (1 + recordDelimiterMaxLength) : 0,\n // Skip if the remaining buffer can be delimiter\n delimiter.length,\n // Skip if the remaining buffer can be escape sequence\n // 1 is for escape.length\n 1\n )\n return numOfCharLeft < requiredLength\n }\n __isDelimiter(chr, buf, pos){\n const {delimiter} = this.options\n loop1: for(let i = 0; i < delimiter.length; i++){\n const del = delimiter[i]\n if(del[0] === chr){\n for(let j = 1; j < del.length; j++){\n if(del[j] !== buf[pos+j]) continue loop1\n }\n return del.length\n }\n }\n return 0\n }\n __isRecordDelimiter(chr, buf, pos){\n const {record_delimiter} = this.options\n const recordDelimiterLength = record_delimiter.length\n loop1: for(let i = 0; i < recordDelimiterLength; i++){\n const rd = record_delimiter[i]\n const rdLength = rd.length\n if(rd[0] !== chr){\n continue\n }\n for(let j = 1; j < rdLength; j++){\n if(rd[j] !== buf[pos+j]){\n continue loop1\n }\n }\n return rd.length\n }\n return 0\n }\n __autoDiscoverRowDelimiter(buf, pos){\n const chr = buf[pos]\n if(chr === cr){\n if(buf[pos+1] === nl){\n this.options.record_delimiter.push(Buffer.from('\\r\\n'))\n this.state.recordDelimiterMaxLength = 2\n return 2\n }else{\n this.options.record_delimiter.push(Buffer.from('\\r'))\n this.state.recordDelimiterMaxLength = 1\n return 1\n }\n }else if(chr === nl){\n this.options.record_delimiter.push(Buffer.from('\\n'))\n this.state.recordDelimiterMaxLength = 1\n return 1\n }\n return 0\n }\n __error(msg){\n const {skip_lines_with_error} = this.options\n const err = typeof msg === 'string' ? new Error(msg) : msg\n if(skip_lines_with_error){\n this.state.recordHasError = true\n this.emit('skip', err)\n return undefined\n }else{\n return err\n }\n }\n __context(){\n const {columns} = this.options\n const isColumns = Array.isArray(columns)\n return {\n column: isColumns === true ?\n ( columns.length > this.state.record.length ?\n columns[this.state.record.length].name :\n null\n ) :\n this.state.record.length,\n empty_lines: this.info.empty_lines,\n header: columns === true,\n index: this.state.record.length,\n invalid_field_length: this.info.invalid_field_length,\n quoting: this.state.wasQuoting,\n lines: this.info.lines,\n records: this.info.records\n }\n }\n}\n\nconst parse = function(){\n let data, options, callback\n for(let i in arguments){\n const argument = arguments[i]\n const type = typeof argument\n if(data === undefined && (typeof argument === 'string' || Buffer.isBuffer(argument))){\n data = argument\n }else if(options === undefined && isObject(argument)){\n options = argument\n }else if(callback === undefined && type === 'function'){\n callback = argument\n }else{\n throw new CsvError('CSV_INVALID_ARGUMENT', [\n 'Invalid argument:',\n `got ${JSON.stringify(argument)} at index ${i}`\n ])\n }\n }\n const parser = new Parser(options)\n if(callback){\n const records = options === undefined || options.objname === undefined ? [] : {}\n parser.on('readable', function(){\n let record\n while((record = this.read()) !== null){\n if(options === undefined || options.objname === undefined){\n records.push(record)\n }else{\n records[record[0]] = record[1]\n }\n }\n })\n parser.on('error', function(err){\n callback(err, undefined, parser.info)\n })\n parser.on('end', function(){\n callback(undefined, records, parser.info)\n })\n }\n if(data !== undefined){\n // Give a chance for events to be registered later\n if(typeof setImmediate === 'function'){\n setImmediate(function(){\n parser.write(data)\n parser.end()\n })\n }else{\n parser.write(data)\n parser.end()\n }\n }\n return parser\n}\n\nclass CsvError extends Error {\n constructor(code, message, ...contexts) {\n if(Array.isArray(message)) message = message.join(' ')\n super(message)\n if(Error.captureStackTrace !== undefined){\n Error.captureStackTrace(this, CsvError)\n }\n this.code = code\n for(const context of contexts){\n for(const key in context){\n const value = context[key]\n this[key] = Buffer.isBuffer(value) ? value.toString() : value == null ? value : JSON.parse(JSON.stringify(value))\n }\n }\n }\n}\n\nparse.Parser = Parser\n\nparse.CsvError = CsvError\n\nmodule.exports = parse\n\nconst underscore = function(str){\n return str.replace(/([A-Z])/g, function(_, match){\n return '_' + match.toLowerCase()\n })\n}\n\nconst isObject = function(obj){\n return (typeof obj === 'object' && obj !== null && !Array.isArray(obj))\n}\n\nconst isRecordEmpty = function(record){\n return record.every( (field) => field == null || field.toString && field.toString().trim() === '' )\n}\n\nconst normalizeColumnsArray = function(columns){\n const normalizedColumns = [];\n for(let i = 0, l = columns.length; i < l; i++){\n const column = columns[i]\n if(column === undefined || column === null || column === false){\n normalizedColumns[i] = { disabled: true }\n }else if(typeof column === 'string'){\n normalizedColumns[i] = { name: column }\n }else if(isObject(column)){\n if(typeof column.name !== 'string'){\n throw new CsvError('CSV_OPTION_COLUMNS_MISSING_NAME', [\n 'Option columns missing name:',\n `property \"name\" is required at position ${i}`,\n 'when column is an object literal'\n ])\n }\n normalizedColumns[i] = column\n }else{\n throw new CsvError('CSV_INVALID_COLUMN_DEFINITION', [\n 'Invalid column definition:',\n 'expect a string or a literal object,',\n `got ${JSON.stringify(column)} at position ${i}`\n ])\n }\n }\n return normalizedColumns;\n}\n","\nconst parse = require('.')\n\nmodule.exports = function(data, options={}){\n if(typeof data === 'string'){\n data = Buffer.from(data)\n }\n const records = options && options.objname ? {} : []\n const parser = new parse.Parser(options)\n parser.push = function(record){\n if(record === null){\n return\n }\n if(options.objname === undefined)\n records.push(record)\n else{\n records[record[0]] = record[1]\n }\n }\n const err1 = parser.__parse(data, false)\n if(err1 !== undefined) throw err1\n const err2 = parser.__parse(undefined, true)\n if(err2 !== undefined) throw err2\n return records\n}\n","// Generated by CoffeeScript 2.4.1\n// # CSV Stringifier\n\n// Please look at the [project documentation](https://csv.js.org/stringify/) for additional\n// information.\nvar Stringifier, castPath, charCodeOfDot, get, getTag, isKey, isObject, isSymbol, reEscapeChar, reIsDeepProp, reIsPlainProp, rePropName, stream, stringToPath, toKey, underscore, util;\n\nstream = require('stream');\n\nutil = require('util');\n\n// ## Usage\n\n// This module export a function as its main entry point and return a transform\n// stream.\n\n// Refers to the [official prject documentation](http://csv.js.org/stringify/)\n// on how to call this function.\nmodule.exports = function() {\n var callback, chunks, data, options, stringifier;\n if (arguments.length === 3) {\n data = arguments[0];\n options = arguments[1];\n callback = arguments[2];\n } else if (arguments.length === 2) {\n if (Array.isArray(arguments[0])) {\n data = arguments[0];\n } else {\n options = arguments[0];\n }\n if (typeof arguments[1] === 'function') {\n callback = arguments[1];\n } else {\n options = arguments[1];\n }\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'function') {\n callback = arguments[0];\n } else if (Array.isArray(arguments[0])) {\n data = arguments[0];\n } else {\n options = arguments[0];\n }\n }\n if (options == null) {\n options = {};\n }\n stringifier = new Stringifier(options);\n if (data) {\n process.nextTick(function() {\n var d, j, len;\n for (j = 0, len = data.length; j < len; j++) {\n d = data[j];\n stringifier.write(d);\n }\n return stringifier.end();\n });\n }\n if (callback) {\n chunks = [];\n stringifier.on('readable', function() {\n var chunk, results;\n results = [];\n while (chunk = stringifier.read()) {\n results.push(chunks.push(chunk));\n }\n return results;\n });\n stringifier.on('error', function(err) {\n return callback(err);\n });\n stringifier.on('end', function() {\n return callback(null, chunks.join(''));\n });\n }\n return stringifier;\n};\n\n// You can also use *util.promisify* native function (Node.js 8+) in order to wrap callbacks into promises for more convenient use when source is a readable stream and you are OK with storing entire result set in memory:\n\n// ```\n// const { promisify } = require('util');\n// const csv = require('csv');\n// const stringifyAsync = promisify(csv.stringify);\n\n// //returns promise\n// function generateCsv(sourceData) {\n// return stringifyAsync(sourceData);\n// }\n// ```\n\n// ## `Stringifier([options])`\n\n// Options are documented [here](http://csv.adaltas.com/stringify/).\nStringifier = class Stringifier extends stream.Transform {\n constructor(opts = {}) {\n var base, base1, base2, base3, base4, isRegExp, isString, j, k, len, options, quoted_match, ref, v;\n super({...{\n writableObjectMode: true\n }, ...opts});\n options = {};\n for (k in opts) {\n v = opts[k];\n // Immutable options and camelcase conversion\n options[underscore(k)] = v;\n }\n // Normalize option `delimiter`\n if (options.delimiter === null || options.delimiter === void 0) {\n options.delimiter = ',';\n } else {\n if (Buffer.isBuffer(options.delimiter)) {\n options.delimiter = options.delimiter.toString();\n } else if (typeof options.delimiter !== 'string') {\n throw new Error(`Invalid Option: delimiter must be a buffer or a string, got ${JSON.stringify(options.delimiter)}`);\n }\n }\n // Normalize option `quote`\n if (options.quote === null || options.quote === void 0) {\n options.quote = '\"';\n } else {\n if (options.quote === true) {\n options.quote = '\"';\n } else if (options.quote === false) {\n options.quote = '';\n } else if (Buffer.isBuffer(options.quote)) {\n options.quote = options.quote.toString();\n } else if (typeof options.quote !== 'string') {\n throw new Error(`Invalid Option: quote must be a boolean, a buffer or a string, got ${JSON.stringify(options.quote)}`);\n }\n }\n // Normalize option `quoted`\n if (options.quoted == null) {\n options.quoted = false;\n }\n if (options.quoted_empty == null) {\n options.quoted_empty = void 0;\n }\n if (options.quoted_string == null) {\n options.quoted_string = false;\n }\n if (options.eof == null) {\n options.eof = true;\n }\n // Normalize option `escape`\n if (options.escape === null || options.escape === void 0) {\n options.escape = '\"';\n } else {\n if (Buffer.isBuffer(options.escape)) {\n options.escape = options.escape.toString();\n }\n if (typeof options.escape !== 'string') {\n throw new Error(`Invalid Option: escape must be a buffer or a string, got ${JSON.stringify(options.escape)}`);\n } else if (options.escape.length > 1) {\n throw new Error(`Invalid Option: escape must be one character, got ${options.escape.length} characters`);\n }\n }\n if (options.header == null) {\n options.header = false;\n }\n // Normalize the columns option\n options.columns = this.normalize_columns(options.columns);\n if (options.cast == null) {\n options.cast = {};\n }\n // Normalize option `quoted_match`\n if (options.quoted_match === void 0 || options.quoted_match === null || options.quoted_match === false) {\n options.quoted_match = null;\n } else if (!Array.isArray(options.quoted_match)) {\n options.quoted_match = [options.quoted_match];\n }\n if (options.quoted_match) {\n ref = options.quoted_match;\n for (j = 0, len = ref.length; j < len; j++) {\n quoted_match = ref[j];\n isString = typeof quoted_match === 'string';\n isRegExp = quoted_match instanceof RegExp;\n if (!isString && !isRegExp) {\n throw new Error(`Invalid Option: quoted_match must be a string or a regex, got ${JSON.stringify(quoted_match)}`);\n }\n }\n }\n if (options.cast.bool) {\n // Backward compatibility\n options.cast.boolean = options.cast.bool;\n }\n // Custom cast\n if ((base = options.cast).boolean == null) {\n base.boolean = function(value) {\n // Cast boolean to string by default\n if (value) {\n return '1';\n } else {\n return '';\n }\n };\n }\n if ((base1 = options.cast).date == null) {\n base1.date = function(value) {\n // Cast date to timestamp string by default\n return '' + value.getTime();\n };\n }\n if ((base2 = options.cast).number == null) {\n base2.number = function(value) {\n // Cast number to string using native casting by default\n return '' + value;\n };\n }\n if ((base3 = options.cast).object == null) {\n base3.object = function(value) {\n // Stringify object as JSON by default\n return JSON.stringify(value);\n };\n }\n if ((base4 = options.cast).string == null) {\n base4.string = function(value) {\n return value;\n };\n }\n // Normalize option `record_delimiter`\n if (options.record_delimiter === void 0 || options.record_delimiter === null) {\n if (options.record_delimiter == null) {\n options.record_delimiter = '\\n';\n }\n } else {\n if (Buffer.isBuffer(options.record_delimiter)) {\n options.record_delimiter = options.record_delimiter.toString();\n } else if (typeof options.record_delimiter !== 'string') {\n throw new Error(`Invalid Option: record_delimiter must be a buffer or a string, got ${JSON.stringify(options.record_delimiter)}`);\n }\n switch (options.record_delimiter) {\n case 'auto':\n options.record_delimiter = null;\n break;\n case 'unix':\n options.record_delimiter = \"\\n\";\n break;\n case 'mac':\n options.record_delimiter = \"\\r\";\n break;\n case 'windows':\n options.record_delimiter = \"\\r\\n\";\n break;\n case 'ascii':\n options.record_delimiter = \"\\u001e\";\n break;\n case 'unicode':\n options.record_delimiter = \"\\u2028\";\n }\n }\n // Expose options\n this.options = options;\n // Internal state\n this.state = {\n stop: false\n };\n // Information\n this.info = {\n records: 0\n };\n this;\n }\n\n // ## `Stringifier.prototype._transform(chunk, encoding, callback)`\n\n // Implementation of the [transform._transform function](https://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback).\n _transform(chunk, encoding, callback) {\n var base, e;\n if (this.state.stop === true) {\n return;\n }\n // Chunk validation\n if (!(Array.isArray(chunk) || typeof chunk === 'object')) {\n this.state.stop = true;\n return callback(Error(`Invalid Record: expect an array or an object, got ${JSON.stringify(chunk)}`));\n }\n // Detect columns from the first record\n if (this.info.records === 0) {\n if (Array.isArray(chunk)) {\n if (this.options.header === true && !this.options.columns) {\n this.state.stop = true;\n return callback(Error('Undiscoverable Columns: header option requires column option or object records'));\n }\n } else {\n if ((base = this.options).columns == null) {\n base.columns = this.normalize_columns(Object.keys(chunk));\n }\n }\n }\n if (this.info.records === 0) {\n // Emit the header\n this.headers();\n }\n try {\n // Emit and stringify the record if an object or an array\n this.emit('record', chunk, this.info.records);\n } catch (error) {\n e = error;\n this.state.stop = true;\n return this.emit('error', e);\n }\n // Convert the record into a string\n if (this.options.eof) {\n chunk = this.stringify(chunk);\n if (chunk == null) {\n return;\n }\n chunk = chunk + this.options.record_delimiter;\n } else {\n chunk = this.stringify(chunk);\n if (chunk == null) {\n return;\n }\n if (this.options.header || this.info.records) {\n chunk = this.options.record_delimiter + chunk;\n }\n }\n // Emit the csv\n this.info.records++;\n this.push(chunk);\n return callback();\n }\n\n // ## `Stringifier.prototype._flush(callback)`\n\n // Implementation of the [transform._flush function](https://nodejs.org/api/stream.html#stream_transform_flush_callback).\n _flush(callback) {\n if (this.info.records === 0) {\n this.headers();\n }\n return callback();\n }\n\n // ## `Stringifier.prototype.stringify(line)`\n\n // Convert a line to a string. Line may be an object, an array or a string.\n stringify(chunk, chunkIsHeader = false) {\n var column, columns, containsEscape, containsQuote, containsRowDelimiter, containsdelimiter, csvrecord, delimiter, err, escape, field, header, i, j, l, len, m, options, quote, quoted, quotedMatch, quotedString, quoted_empty, quoted_match, quoted_string, record, record_delimiter, ref, ref1, regexp, shouldQuote, value;\n if (typeof chunk !== 'object') {\n return chunk;\n }\n ({columns, header} = this.options);\n record = [];\n // Record is an array\n if (Array.isArray(chunk)) {\n if (columns) {\n // We are getting an array but the user has specified output columns. In\n // this case, we respect the columns indexes\n chunk.splice(columns.length);\n }\n// Cast record elements\n for (i = j = 0, len = chunk.length; j < len; i = ++j) {\n field = chunk[i];\n [err, value] = this.__cast(field, {\n index: i,\n column: i,\n records: this.info.records,\n header: chunkIsHeader\n });\n if (err) {\n this.emit('error', err);\n return;\n }\n record[i] = [value, field];\n }\n } else {\n // Record is a literal object\n if (columns) {\n for (i = l = 0, ref = columns.length; (0 <= ref ? l < ref : l > ref); i = 0 <= ref ? ++l : --l) {\n field = get(chunk, columns[i].key);\n [err, value] = this.__cast(field, {\n index: i,\n column: columns[i].key,\n records: this.info.records,\n header: chunkIsHeader\n });\n if (err) {\n this.emit('error', err);\n return;\n }\n record[i] = [value, field];\n }\n } else {\n for (column in chunk) {\n field = chunk[column];\n [err, value] = this.__cast(field, {\n index: i,\n column: columns[i].key,\n records: this.info.records,\n header: chunkIsHeader\n });\n if (err) {\n this.emit('error', err);\n return;\n }\n record.push([value, field]);\n }\n }\n }\n csvrecord = '';\n for (i = m = 0, ref1 = record.length; (0 <= ref1 ? m < ref1 : m > ref1); i = 0 <= ref1 ? ++m : --m) {\n [value, field] = record[i];\n if (typeof value === 'string') {\n options = this.options;\n } else if (isObject(value)) {\n ({value, ...options} = value);\n if (!(typeof value === 'string' || value === void 0 || value === null)) {\n this.emit('error', Error(`Invalid Casting Value: returned value must return a string, null or undefined, got ${JSON.stringify(value)}`));\n return;\n }\n options = {...this.options, ...options};\n } else if (value === void 0 || value === null) {\n options = this.options;\n } else {\n this.emit('error', Error(`Invalid Casting Value: returned value must return a string, an object, null or undefined, got ${JSON.stringify(value)}`));\n return;\n }\n ({delimiter, escape, quote, quoted, quoted_empty, quoted_string, quoted_match, record_delimiter} = options);\n if (value) {\n if (typeof value !== 'string') {\n this.emit('error', Error(`Formatter must return a string, null or undefined, got ${JSON.stringify(value)}`));\n return null;\n }\n containsdelimiter = delimiter.length && value.indexOf(delimiter) >= 0;\n containsQuote = (quote !== '') && value.indexOf(quote) >= 0;\n containsEscape = value.indexOf(escape) >= 0 && (escape !== quote);\n containsRowDelimiter = value.indexOf(record_delimiter) >= 0;\n quotedString = quoted_string && typeof field === 'string';\n quotedMatch = quoted_match && typeof field === 'string' && quoted_match.filter(function(quoted_match) {\n if (typeof quoted_match === 'string') {\n return value.indexOf(quoted_match) !== -1;\n } else {\n return quoted_match.test(value);\n }\n });\n quotedMatch = quotedMatch && quotedMatch.length > 0;\n shouldQuote = containsQuote === true || containsdelimiter || containsRowDelimiter || quoted || quotedString || quotedMatch;\n if (shouldQuote === true && containsEscape === true) {\n regexp = escape === '\\\\' ? new RegExp(escape + escape, 'g') : new RegExp(escape, 'g');\n value = value.replace(regexp, escape + escape);\n }\n if (containsQuote === true) {\n regexp = new RegExp(quote, 'g');\n value = value.replace(regexp, escape + quote);\n }\n if (shouldQuote === true) {\n value = quote + value + quote;\n }\n csvrecord += value;\n } else if (quoted_empty === true || ((quoted_empty == null) && field === '' && quoted_string !== false)) {\n csvrecord += quote + quote;\n }\n if (i !== record.length - 1) {\n csvrecord += delimiter;\n }\n }\n return csvrecord;\n }\n\n // ## `Stringifier.prototype.headers`\n\n // Print the header line if the option \"header\" is \"true\".\n headers() {\n var headers;\n if (!this.options.header) {\n return;\n }\n if (!this.options.columns) {\n return;\n }\n headers = this.options.columns.map(function(column) {\n return column.header;\n });\n if (this.options.eof) {\n headers = this.stringify(headers, true) + this.options.record_delimiter;\n } else {\n headers = this.stringify(headers);\n }\n return this.push(headers);\n }\n\n __cast(value, context) {\n var err, type;\n type = typeof value;\n try {\n if (type === 'string') {\n // Fine for 99% of the cases\n return [void 0, this.options.cast.string(value, context)];\n } else if (type === 'number') {\n return [void 0, this.options.cast.number(value, context)];\n } else if (type === 'boolean') {\n return [void 0, this.options.cast.boolean(value, context)];\n } else if (value instanceof Date) {\n return [void 0, this.options.cast.date(value, context)];\n } else if (type === 'object' && value !== null) {\n return [void 0, this.options.cast.object(value, context)];\n } else {\n return [void 0, value, value];\n }\n } catch (error) {\n err = error;\n return [err];\n }\n }\n\n // ## `Stringifier.prototype.normalize_columns`\n normalize_columns(columns) {\n var column, k, v;\n if (columns == null) {\n return null;\n }\n if (columns != null) {\n if (typeof columns !== 'object') {\n throw Error('Invalid option \"columns\": expect an array or an object');\n }\n if (!Array.isArray(columns)) {\n columns = (function() {\n var results;\n results = [];\n for (k in columns) {\n v = columns[k];\n results.push({\n key: k,\n header: v\n });\n }\n return results;\n })();\n } else {\n columns = (function() {\n var j, len, results;\n results = [];\n for (j = 0, len = columns.length; j < len; j++) {\n column = columns[j];\n if (typeof column === 'string') {\n results.push({\n key: column,\n header: column\n });\n } else if (typeof column === 'object' && (column != null) && !Array.isArray(column)) {\n if (!column.key) {\n throw Error('Invalid column definition: property \"key\" is required');\n }\n if (column.header == null) {\n column.header = column.key;\n }\n results.push(column);\n } else {\n throw Error('Invalid column definition: expect a string or an object');\n }\n }\n return results;\n })();\n }\n }\n return columns;\n }\n\n};\n\nmodule.exports.Stringifier = Stringifier;\n\nisObject = function(obj) {\n return typeof obj === 'object' && obj !== null && !Array.isArray(obj);\n};\n\nunderscore = function(str) {\n return str.replace(/([A-Z])/g, function(_, match, index) {\n return '_' + match.toLowerCase();\n });\n};\n\n// ## Lodash implementation of `get`\ncharCodeOfDot = '.'.charCodeAt(0);\n\nreEscapeChar = /\\\\(\\\\)?/g;\n\n// Match anything that isn't a dot or bracket.\n// Or match property names within brackets.\n// Match a non-string expression.\n// Or match strings (supports escaping characters).\n// Or match \"\" as the space between consecutive dots or empty brackets.\nrePropName = RegExp('[^.[\\\\]]+' + '|' + '\\\\[(?:' + '([^\"\\'][^[]*)' + '|' + '([\"\\'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2' + ')\\\\]' + '|' + '(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))', 'g');\n\nreIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/;\n\nreIsPlainProp = /^\\w*$/;\n\ngetTag = function(value) {\n if (value != null) {\n if (value === void 0) {\n '[object Undefined]';\n } else {\n '[object Null]';\n }\n }\n return Object.prototype.toString.call(value);\n};\n\nisKey = function(value, object) {\n var type;\n if (Array.isArray(value)) {\n return false;\n }\n type = typeof value;\n if (type === 'number' || type === 'symbol' || type === 'boolean' || (value == null) || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || ((object != null) && value in Object(object));\n};\n\nisSymbol = function(value) {\n var type;\n type = typeof value;\n return type === 'symbol' || (type === 'object' && (value != null) && getTag(value) === '[object Symbol]');\n};\n\nstringToPath = function(string) {\n var result;\n result = [];\n if (string.charCodeAt(0) === charCodeOfDot) {\n result.push('');\n }\n string.replace(rePropName, function(match, expression, quote, subString) {\n var key;\n key = match;\n if (quote) {\n key = subString.replace(reEscapeChar, '$1');\n } else if (expression) {\n key = expression.trim();\n }\n return result.push(key);\n });\n return result;\n};\n\ncastPath = function(value, object) {\n if (Array.isArray(value)) {\n return value;\n } else {\n if (isKey(value, object)) {\n return [value];\n } else {\n return stringToPath(value);\n }\n }\n};\n\ntoKey = function(value) {\n var ref, result;\n if (typeof value === 'string' || isSymbol(value)) {\n return value;\n }\n result = `${value}`;\n return (ref = result === '0' && (1 / value) === -INFINITY) != null ? ref : {\n '-0': result\n };\n};\n\nget = function(object, path) {\n var index, length;\n path = Array.isArray(path) ? path : castPath(path, object);\n index = 0;\n length = path.length;\n while ((object != null) && index < length) {\n object = object[toKey(path[index++])];\n }\n if (index && index === length) {\n return object;\n } else {\n return void 0;\n }\n};\n","// Generated by CoffeeScript 2.4.1\n// # CSV Stringify Sync\n\n// Provides a synchronous alternative to the CSV stringifier.\n\n// ## Usage\n\n// `const csv = stringify(records, [options]`\nvar StringDecoder, stringify;\n\n({StringDecoder} = require('string_decoder'));\n\nstringify = require('./index');\n\nmodule.exports = function(records, options = {}) {\n var data, decoder, i, len, record, stringifier;\n data = [];\n if (records instanceof Buffer) {\n decoder = new StringDecoder();\n records = decoder.write(records);\n }\n stringifier = new stringify.Stringifier(options);\n stringifier.push = function(record) {\n if (record) {\n return data.push(record.toString());\n }\n };\n for (i = 0, len = records.length; i < len; i++) {\n record = records[i];\n stringifier.write(record);\n }\n stringifier.end();\n return data.join('');\n};\n","var accounting = require('accounting')\nvar assign = require('object-assign')\nvar localeCurrency = require('locale-currency')\nvar currencies = require('./currencies.json')\nvar localeFormats = require('./localeFormats.json')\n\nvar defaultCurrency = {\n symbol: '',\n thousandsSeparator: ',',\n decimalSeparator: '.',\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: false,\n decimalDigits: 2\n}\n\nvar defaultLocaleFormat = {}\n\nvar formatMapping = [\n {\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: false,\n format: {\n pos: '%s%v',\n neg: '-%s%v',\n zero: '%s%v'\n }\n },\n {\n symbolOnLeft: true,\n spaceBetweenAmountAndSymbol: true,\n format: {\n pos: '%s %v',\n neg: '-%s %v',\n zero: '%s %v'\n }\n },\n {\n symbolOnLeft: false,\n spaceBetweenAmountAndSymbol: false,\n format: {\n pos: '%v%s',\n neg: '-%v%s',\n zero: '%v%s'\n }\n },\n {\n symbolOnLeft: false,\n spaceBetweenAmountAndSymbol: true,\n format: {\n pos: '%v %s',\n neg: '-%v %s',\n zero: '%v %s'\n }\n }\n]\n\nfunction format(value, options) {\n var code = options.code || (options.locale && localeCurrency.getCurrency(options.locale))\n var localeMatch = /^([a-z]+)([_-]([a-z]+))?$/i.exec(options.locale) || []\n var language = localeMatch[1]\n var region = localeMatch[3]\n var localeFormat = assign({}, defaultLocaleFormat,\n localeFormats[language] || {},\n localeFormats[language + '-' + region] || {})\n var currency = assign({}, defaultCurrency, findCurrency(code), localeFormat)\n \n var symbolOnLeft = currency.symbolOnLeft\n var spaceBetweenAmountAndSymbol = currency.spaceBetweenAmountAndSymbol\n\n var format = formatMapping.filter(function(f) {\n return f.symbolOnLeft == symbolOnLeft && f.spaceBetweenAmountAndSymbol == spaceBetweenAmountAndSymbol\n })[0].format\n\n return accounting.formatMoney(value, {\n symbol: isUndefined(options.symbol)\n ? currency.symbol\n : options.symbol,\n\n decimal: isUndefined(options.decimal)\n ? currency.decimalSeparator\n : options.decimal,\n\n thousand: isUndefined(options.thousand)\n ? currency.thousandsSeparator\n : options.thousand,\n\n precision: typeof options.precision === 'number'\n ? options.precision\n : currency.decimalDigits,\n\n format: ['string', 'object'].indexOf(typeof options.format) > -1\n ? options.format\n : format\n })\n}\n\nfunction findCurrency (currencyCode) {\n return currencies[currencyCode]\n}\n\nfunction isUndefined (val) {\n return typeof val === 'undefined'\n}\n\nfunction unformat(value, options) {\n var code = options.code || (options.locale && localeCurrency.getCurrency(options.locale))\n var localeFormat = localeFormats[options.locale] || defaultLocaleFormat\n var currency = assign({}, defaultCurrency, findCurrency(code), localeFormat)\n var decimal = isUndefined(options.decimal) ? currency.decimalSeparator : options.decimal\n return accounting.unformat(value, decimal)\n}\n\nmodule.exports = {\n defaultCurrency: defaultCurrency,\n get currencies() {\n // In favor of backwards compatibility, the currencies map is converted to an array here\n return Object.keys(currencies).map(function(key) {\n return currencies[key]\n })\n },\n findCurrency: findCurrency,\n format: format,\n unformat: unformat\n}","// TheSpanishInquisition\n\n// Cache the matrix. Note that if you not pass a limit this implementation will use a dynamically calculate one.\n\nmodule.exports = function(__this, that, limit) {\n\n var thisLength = __this.length,\n thatLength = that.length,\n matrix = [];\n\n // If the limit is not defined it will be calculate from this and that args.\n limit = (limit || ((thatLength > thisLength ? thatLength : thisLength)))+1;\n\n for (var i = 0; i < limit; i++) {\n matrix[i] = [i];\n matrix[i].length = limit;\n }\n for (i = 0; i < limit; i++) {\n matrix[0][i] = i;\n }\n\n if (Math.abs(thisLength - thatLength) > (limit || 100)){\n return prepare (limit || 100);\n }\n if (thisLength === 0){\n return prepare (thatLength);\n }\n if (thatLength === 0){\n return prepare (thisLength);\n }\n\n // Calculate matrix.\n var j, this_i, that_j, cost, min, t;\n for (i = 1; i <= thisLength; ++i) {\n this_i = __this[i-1];\n\n // Step 4\n for (j = 1; j <= thatLength; ++j) {\n // Check the jagged ld total so far\n if (i === j && matrix[i][j] > 4) return prepare (thisLength);\n\n that_j = that[j-1];\n cost = (this_i === that_j) ? 0 : 1; // Step 5\n // Calculate the minimum (much faster than Math.min(...)).\n min = matrix[i - 1][j ] + 1; // Deletion.\n if ((t = matrix[i ][j - 1] + 1 ) < min) min = t; // Insertion.\n if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution.\n\n // Update matrix.\n matrix[i][j] = (i > 1 && j > 1 && this_i === that[j-2] && __this[i-2] === that_j && (t = matrix[i-2][j-2]+cost) < min) ? t : min; // Transposition.\n }\n }\n\n return prepare (matrix[thisLength][thatLength]);\n\n/**\n *\n */\n function prepare(steps) {\n var length = Math.max(thisLength, thatLength)\n var relative = length === 0\n ? 0\n : (steps / length);\n var similarity = 1 - relative\n return {\n steps: steps,\n relative: relative,\n similarity: similarity\n };\n }\n\n};\n","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError(\n 'assign requires that input parameter not be null or undefined'\n )\n }\n\n dirtyObject = dirtyObject || {}\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property]\n }\n }\n\n return target\n}\n","import assign from '../assign/index.js'\n\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject)\n}\n","import lightFormatters from '../lightFormatters/index.js'\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js'\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js'\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js'\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js'\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport addLeadingZeros from '../../addLeadingZeros/index.js'\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, { width: 'abbreviated' })\n // A, B\n case 'GGGGG':\n return localize.era(era, { width: 'narrow' })\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, { width: 'wide' })\n }\n },\n\n // Year\n y: function(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear()\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n return localize.ordinalNumber(year, { unit: 'year' })\n }\n\n return lightFormatters.y(date, token)\n },\n\n // Local week-numbering year\n Y: function(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options)\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, { unit: 'year' })\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date)\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function(date, token) {\n var year = date.getUTCFullYear()\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n })\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // Stand-alone quarter\n q: function(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3)\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n })\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n })\n }\n },\n\n // Month\n M: function(date, token, localize) {\n var month = date.getUTCMonth()\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, { unit: 'month' })\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, { width: 'narrow', context: 'formatting' })\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Stand-alone month\n L: function(date, token, localize) {\n var month = date.getUTCMonth()\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, { unit: 'month' })\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, { width: 'narrow', context: 'standalone' })\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, { width: 'wide', context: 'standalone' })\n }\n },\n\n // Local week of year\n w: function(date, token, localize, options) {\n var week = getUTCWeek(date, options)\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, { unit: 'week' })\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function(date, token, localize) {\n var isoWeek = getUTCISOWeek(date)\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, { unit: 'week' })\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), { unit: 'date' })\n }\n\n return lightFormatters.d(date, token)\n },\n\n // Day of year\n D: function(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date)\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, { unit: 'dayOfYear' })\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay()\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Local day of week\n e: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // Stand-alone local day of week\n c: function(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay()\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, { unit: 'day' })\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n })\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n })\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n })\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'standalone' })\n }\n },\n\n // ISO day of week\n i: function(date, token, localize) {\n var dayOfWeek = date.getUTCDay()\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, { unit: 'day' })\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n })\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n })\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n })\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, { width: 'wide', context: 'formatting' })\n }\n },\n\n // AM or PM\n a: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // AM, PM, midnight, noon\n b: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am'\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function(date, token, localize) {\n var hours = date.getUTCHours()\n var dayPeriodEnumValue\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n })\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n })\n }\n },\n\n // Hour [1-12]\n h: function(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12\n if (hours === 0) hours = 12\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return lightFormatters.h(date, token)\n },\n\n // Hour [0-23]\n H: function(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), { unit: 'hour' })\n }\n\n return lightFormatters.H(date, token)\n },\n\n // Hour [0-11]\n K: function(date, token, localize) {\n var hours = date.getUTCHours() % 12\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function(date, token, localize) {\n var hours = date.getUTCHours()\n if (hours === 0) hours = 24\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, { unit: 'hour' })\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), { unit: 'minute' })\n }\n\n return lightFormatters.m(date, token)\n },\n\n // Second\n s: function(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), { unit: 'second' })\n }\n\n return lightFormatters.s(date, token)\n },\n\n // Fraction of second\n S: function(date, token) {\n var numberOfDigits = token.length\n var milliseconds = date.getUTCMilliseconds()\n var fractionalSeconds = Math.floor(\n milliseconds * Math.pow(10, numberOfDigits - 3)\n )\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timezoneOffset = originalDate.getTimezoneOffset()\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = Math.floor(originalDate.getTime() / 1000)\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function(date, token, _localize, options) {\n var originalDate = options._originalDate || date\n var timestamp = originalDate.getTime()\n return addLeadingZeros(timestamp, token.length)\n }\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimiter = dirtyDelimiter || ''\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2)\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimiter)\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(absOffset % 60, 2)\n return sign + hours + delimiter + minutes\n}\n\nexport default formatters\n","import addLeadingZeros from '../../addLeadingZeros/index.js'\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Year\n y: function(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear()\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length)\n },\n\n // Month\n M: function(date, token) {\n var month = date.getUTCMonth()\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2)\n },\n\n // Day of the month\n d: function(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length)\n },\n\n // AM or PM\n a: function(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am'\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase()\n case 'aaaaa':\n return dayPeriodEnumValue[0]\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.'\n }\n },\n\n // Hour [1-12]\n h: function(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length)\n },\n\n // Hour [0-23]\n H: function(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length)\n },\n\n // Minute\n m: function(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length)\n },\n\n // Second\n s: function(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length)\n }\n}\n\nexport default formatters\n","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({ width: 'short' })\n case 'PP':\n return formatLong.date({ width: 'medium' })\n case 'PPP':\n return formatLong.date({ width: 'long' })\n case 'PPPP':\n default:\n return formatLong.date({ width: 'full' })\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({ width: 'short' })\n case 'pp':\n return formatLong.time({ width: 'medium' })\n case 'ppp':\n return formatLong.time({ width: 'long' })\n case 'pppp':\n default:\n return formatLong.time({ width: 'full' })\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/)\n var datePattern = matchResult[1]\n var timePattern = matchResult[2]\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong)\n }\n\n var dateTimeFormat\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({ width: 'short' })\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({ width: 'medium' })\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({ width: 'long' })\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({ width: 'full' })\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n}\n\nexport default longFormatters\n","var MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime())\n var baseTimezoneOffset = date.getTimezoneOffset()\n date.setSeconds(0, 0)\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n","import toDate from '../../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var timestamp = date.getTime()\n date.setUTCMonth(0, 1)\n date.setUTCHours(0, 0, 0, 0)\n var startOfYearTimestamp = date.getTime()\n var difference = timestamp - startOfYearTimestamp\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getUTCFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfUTCWeek(date, options).getTime() -\n startOfUTCWeekYear(date, options).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions)\n var year = date.getUTCFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0)\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0)\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","export var protectedTokens = ['D', 'DD', 'YY', 'YYYY']\n\nexport function isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nexport function throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = toInteger(dirtyDay)\n\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var day = toInteger(dirtyDay)\n\n if (day % 7 === 0) {\n day = day - 7\n }\n\n var weekStartsOn = 1\n var date = toDate(dirtyDate)\n var currentDay = date.getUTCDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCISOWeek from '../getUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getUTCISOWeek(date) - isoWeek\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\nimport getUTCWeek from '../getUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var week = toInteger(dirtyWeek)\n var diff = getUTCWeek(date, options) - week\n date.setUTCDate(date.getUTCDate() - diff * 7)\n return date\n}\n","import toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var weekStartsOn = 1\n\n var date = toDate(dirtyDate)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js'\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getUTCISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setUTCFullYear(year, 0, 4)\n fourthOfJanuary.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCISOWeek(fourthOfJanuary)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport toDate from '../../toDate/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getUTCDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setUTCDate(date.getUTCDate() - diff)\n date.setUTCHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../toInteger/index.js'\nimport getUTCWeekYear from '../getUTCWeekYear/index.js'\nimport startOfUTCWeek from '../startOfUTCWeek/index.js'\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nexport default function startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setUTCHours(0, 0, 0, 0)\n var date = startOfUTCWeek(firstWeek, dirtyOptions)\n return date\n}\n","export default function toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber)\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var amount = toInteger(dirtyAmount)\n date.setDate(date.getDate() + amount)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getISOWeekYear from '../getISOWeekYear/index.js'\nimport setISOWeekYear from '../setISOWeekYear/index.js'\n\n/**\n * @name addISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Add the specified number of ISO week-numbering years to the given date.\n *\n * @description\n * Add the specified number of ISO week-numbering years to the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `addISOYears` to `addISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be added\n * @returns {Date} the new date with the ISO week-numbering years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 ISO week-numbering years to 2 July 2010:\n * var result = addISOWeekYears(new Date(2010, 6, 2), 5)\n * //=> Fri Jun 26 2015 00:00:00\n */\nexport default function addISOWeekYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return setISOWeekYear(dirtyDate, getISOWeekYear(dirtyDate) + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var timestamp = toDate(dirtyDate).getTime()\n var amount = toInteger(dirtyAmount)\n return new Date(timestamp + amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var amount = toInteger(dirtyAmount)\n var desiredMonth = date.getMonth() + amount\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be added\n * @returns {Date} the new date with the quarters added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * var result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nexport default function addQuarters(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n var months = amount * 3\n return addMonths(dirtyDate, months)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * var result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, amount * 1000)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n var days = amount * 7\n return addDays(dirtyDate, days)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, amount * 12)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name areIntervalsOverlapping\n * @category Interval Helpers\n * @summary Is the given time interval overlapping with another time interval?\n *\n * @description\n * Is the given time interval overlapping with another time interval?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `areRangesOverlapping` to `areIntervalsOverlapping`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * areRangesOverlapping(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/types/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/types/Interval}\n * @returns {Boolean} whether the time intervals are overlapping\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> true\n *\n * @example\n * // For non-overlapping time intervals:\n * areIntervalsOverlapping(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> false\n */\nexport default function areIntervalsOverlapping(\n dirtyIntervalLeft,\n dirtyIntervalRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start).getTime()\n var leftEndTime = toDate(intervalLeft.end).getTime()\n var rightStartTime = toDate(intervalRight.start).getTime()\n var rightEndTime = toDate(intervalRight.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return leftStartTime < rightEndTime && rightStartTime < leftEndTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestIndexTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Number} an index of the date closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * var dateToCompare = new Date(2015, 8, 6)\n * var datesArray = [\n * new Date(2015, 0, 1),\n * new Date(2016, 0, 1),\n * new Date(2017, 0, 1)\n * ]\n * var result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateToCompare = toDate(dirtyDateToCompare)\n\n if (isNaN(dateToCompare)) {\n return NaN\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function(dirtyDate, index) {\n var currentDate = toDate(dirtyDate)\n\n if (isNaN(currentDate)) {\n result = NaN\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = index\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name closestTo\n * @category Common Helpers\n * @summary Return a date from the array closest to the given date.\n *\n * @description\n * Return a date from the array closest to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now, `closestTo` doesn't throw an exception\n * when the second argument is not an array, and returns Invalid Date instead.\n *\n * @param {Date|Number} dateToCompare - the date to compare with\n * @param {Date[]|Number[]} datesArray - the array to search\n * @returns {Date} the date from the array closest to the given date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030?\n * var dateToCompare = new Date(2015, 8, 6)\n * var result = closestTo(dateToCompare, [\n * new Date(2000, 0, 1),\n * new Date(2030, 0, 1)\n * ])\n * //=> Tue Jan 01 2030 00:00:00\n */\nexport default function closestTo(dirtyDateToCompare, dirtyDatesArray) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateToCompare = toDate(dirtyDateToCompare)\n\n if (isNaN(dateToCompare)) {\n return new Date(NaN)\n }\n\n var timeToCompare = dateToCompare.getTime()\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n var minDistance\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (isNaN(currentDate)) {\n result = new Date(NaN)\n minDistance = NaN\n return\n }\n\n var distance = Math.abs(timeToCompare - currentDate.getTime())\n if (result == null || distance < minDistance) {\n result = currentDate\n minDistance = distance\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * var result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff < 0) {\n return -1\n } else if (diff > 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name compareDesc\n * @category Common Helpers\n * @summary Compare the two dates reverse chronologically and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return -1 if the first date is after the second,\n * 1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989 reverse chronologically:\n * var result = compareDesc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> 1\n *\n * @example\n * // Sort the array of dates in reverse chronological order:\n * var result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareDesc)\n * //=> [\n * // Sun Jul 02 1995 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Wed Feb 11 1987 00:00:00\n * // ]\n */\nexport default function compareDesc(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var diff = dateLeft.getTime() - dateRight.getTime()\n\n if (diff > 0) {\n return -1\n } else if (diff < 0) {\n return 1\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfDay from '../startOfDay/index.js'\n\nvar MILLISECONDS_IN_DAY = 86400000\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft)\n var startOfDayRight = startOfDay(dirtyDateRight)\n\n var timestampLeft =\n startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft)\n var timestampRight =\n startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY)\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\n\n/**\n * @name differenceInCalendarISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of calendar ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of calendar ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInCalendarISOYears` to `differenceInCalendarISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO week-numbering years are 1 January 2010 and 1 January 2012?\n * var result = differenceInCalendarISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarISOWeekYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n return getISOWeekYear(dirtyDateLeft) - getISOWeekYear(dirtyDateRight)\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarISOWeeks\n * @category ISO Week Helpers\n * @summary Get the number of calendar ISO weeks between the given dates.\n *\n * @description\n * Get the number of calendar ISO weeks between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar ISO weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar ISO weeks are between 6 July 2014 and 21 July 2014?\n * var result = differenceInCalendarISOWeeks(\n * new Date(2014, 6, 21),\n * new Date(2014, 6, 6)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarISOWeeks(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfISOWeekLeft = startOfISOWeek(dirtyDateLeft)\n var startOfISOWeekRight = startOfISOWeek(dirtyDateRight)\n\n var timestampLeft =\n startOfISOWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekLeft)\n var timestampRight =\n startOfISOWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfISOWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth()\n\n return yearDiff * 12 + monthDiff\n}\n","import getQuarter from '../getQuarter/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarQuarters\n * @category Quarter Helpers\n * @summary Get the number of calendar quarters between the given dates.\n *\n * @description\n * Get the number of calendar quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInCalendarQuarters(\n * new Date(2014, 6, 2),\n * new Date(2013, 11, 31)\n * )\n * //=> 3\n */\nexport default function differenceInCalendarQuarters(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear()\n var quarterDiff = getQuarter(dateLeft) - getQuarter(dateRight)\n\n return yearDiff * 4 + quarterDiff\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * { weekStartsOn: 1 }\n * )\n * //=> 2\n */\nexport default function differenceInCalendarWeeks(\n dirtyDateLeft,\n dirtyDateRight,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions)\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions)\n\n var timestampLeft =\n startOfWeekLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfWeekLeft)\n var timestampRight =\n startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight)\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n return dateLeft.getFullYear() - dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight))\n\n dateLeft.setDate(dateLeft.getDate() - sign * difference)\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastDayNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * var result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff =\n differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /\n MILLISECONDS_IN_HOUR\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarISOWeekYears from '../differenceInCalendarISOWeekYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport subISOWeekYears from '../subISOWeekYears/index.js'\n\n/**\n * @name differenceInISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of full ISO week-numbering years between the given dates.\n *\n * @description\n * Get the number of full ISO week-numbering years between the given dates.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `differenceInISOYears` to `differenceInISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full ISO week-numbering years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full ISO week-numbering years are between 1 January 2010 and 1 January 2012?\n * var result = differenceInISOWeekYears(\n * new Date(2012, 0, 1),\n * new Date(2010, 0, 1)\n * )\n * //=> 1\n */\nexport default function differenceInISOWeekYears(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(\n differenceInCalendarISOWeekYears(dateLeft, dateRight)\n )\n dateLeft = subISOWeekYears(dateLeft, sign * difference)\n\n // Math.abs(diff in full ISO years - diff in calendar ISO years) === 1\n // if last calendar ISO year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastISOWeekYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastISOWeekYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * var result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(\n dirtyDateLeft,\n dirtyDateRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return dateLeft.getTime() - dateRight.getTime()\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60000\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the number of minutes between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * var result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n */\nexport default function differenceInMinutes(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff =\n differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) /\n MILLISECONDS_IN_MINUTE\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarMonths from '../differenceInCalendarMonths/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight))\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference)\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastMonthNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import differenceInMonths from '../differenceInMonths/index.js'\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of full quarters between the given dates.\n *\n * @description\n * Get the number of full quarters between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * var result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInMonths(dirtyDateLeft, dirtyDateRight) / 3\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInMilliseconds from '../differenceInMilliseconds/index.js'\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * var result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInMilliseconds(dirtyDateLeft, dirtyDateRight) / 1000\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import differenceInDays from '../differenceInDays/index.js'\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n */\nexport default function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var diff = differenceInDays(dirtyDateLeft, dirtyDateRight) / 7\n return diff > 0 ? Math.floor(diff) : Math.ceil(diff)\n}\n","import toDate from '../toDate/index.js'\nimport differenceInCalendarYears from '../differenceInCalendarYears/index.js'\nimport compareAsc from '../compareAsc/index.js'\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * var result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n\n var sign = compareAsc(dateLeft, dateRight)\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight))\n dateLeft.setFullYear(dateLeft.getFullYear() - sign * difference)\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign\n var result = sign * (difference - isLastYearNotFull)\n // Prevent negative zero\n return result === 0 ? 0 : result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `eachDay` to `eachDayOfInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * eachDay(new Date(2014, 0, 10), new Date(2014, 0, 20))\n *\n * // v2.0.0 onward\n *\n * eachDayOfInterval(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) }\n * )\n * ```\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * var result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start)\n var endDate = toDate(interval.end)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var dates = []\n\n var currentDate = startDate\n currentDate.setHours(0, 0, 0, 0)\n\n var step = options && 'step' in options ? Number(options.step) : 1\n if (step < 1 || isNaN(step))\n throw new RangeError('`options.step` must be a number greater than 1')\n\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate))\n currentDate.setDate(currentDate.getDate() + step)\n currentDate.setHours(0, 0, 0, 0)\n }\n\n return dates\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name eachWeekOfInterval\n * @category Interval Helpers\n * @summary Return the array of weeks within the specified time interval.\n *\n * @description\n * Return the array of weeks within the specified time interval.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Interval} interval - the interval. See [Interval]{@link docs/types/Interval}\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date[]} the array with starts of weeks from the week of the interval start to the week of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be 0, 1, ..., 6\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each week within interval 6 October 2014 - 23 November 2014:\n * var result = eachWeekOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 10, 23)\n * })\n * //=> [\n * // Sun Oct 05 2014 00:00:00,\n * // Sun Oct 12 2014 00:00:00,\n * // Sun Oct 19 2014 00:00:00,\n * // Sun Oct 26 2014 00:00:00,\n * // Sun Nov 02 2014 00:00:00,\n * // Sun Nov 09 2014 00:00:00,\n * // Sun Nov 16 2014 00:00:00,\n * // Sun Nov 23 2014 00:00:00\n * // ]\n */\nexport default function eachWeekOfInterval(dirtyInterval, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var startDate = toDate(interval.start)\n var endDate = toDate(interval.end)\n\n var endTime = endDate.getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var startDateWeek = startOfWeek(startDate, options)\n var endDateWeek = startOfWeek(endDate, options)\n\n // Some timezones switch DST at midnight, making start of day unreliable in these timezones, 3pm is a safe bet\n startDateWeek.setHours(15)\n endDateWeek.setHours(15)\n\n endTime = endDateWeek.getTime()\n\n var weeks = []\n\n var currentWeek = startDateWeek\n\n while (currentWeek.getTime() <= endTime) {\n currentWeek.setHours(0)\n weeks.push(toDate(currentWeek))\n currentWeek = addWeeks(currentWeek, 1)\n currentWeek.setHours(15)\n }\n\n return weeks\n}\n","import eachDayOfInterval from '../eachDayOfInterval/index.js'\nimport isSunday from '../isSunday/index.js'\nimport isWeekend from '../isWeekend/index.js'\n\n/**\n * @name eachWeekendOfInterval\n * @category Interval Helpers\n * @summary List all the Saturdays and Sundays in the given date interval.\n *\n * @description\n * Get all the Saturdays and Sundays in the given date interval.\n *\n * @param {Interval} interval - the given interval. See [Interval]{@link docs/types/Interval}\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Lists all Saturdays and Sundays in the given date interval\n * var result = eachWeekendOfInterval({\n * start: new Date(2018, 8, 17),\n * end: new Date(2018, 8, 30)\n * })\n * //=> [\n * // Sat Sep 22 2018 00:00:00,\n * // Sun Sep 23 2018 00:00:00,\n * // Sat Sep 29 2018 00:00:00,\n * // Sun Sep 30 2018 00:00:00\n * // ]\n */\nexport default function eachWeekendOfInterval(interval) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateInterval = eachDayOfInterval(interval)\n var weekends = []\n var index = 0\n while (index++ < dateInterval.length) {\n var date = dateInterval[index]\n if (isWeekend(date)) {\n weekends.push(date)\n if (isSunday(date)) index = index + 5\n }\n }\n return weekends\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name eachWeekendOfMonth\n * @category Month Helpers\n * @summary List all the Saturdays and Sundays in the given month.\n *\n * @description\n * Get all the Saturdays and Sundays in the given month.\n *\n * @param {Date|Number} date - the given month\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the given month\n * var result = eachWeekendOfMonth(new Date(2022, 1, 1))\n * //=> [\n * // Sat Feb 05 2022 00:00:00,\n * // Sun Feb 06 2022 00:00:00,\n * // Sat Feb 12 2022 00:00:00,\n * // Sun Feb 13 2022 00:00:00,\n * // Sat Feb 19 2022 00:00:00,\n * // Sun Feb 20 2022 00:00:00,\n * // Sat Feb 26 2022 00:00:00,\n * // Sun Feb 27 2022 00:00:00\n * // ]\n */\nexport default function eachWeekendOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfMonth(dirtyDate)\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid')\n\n var endDate = endOfMonth(dirtyDate)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import eachWeekendOfInterval from '../eachWeekendOfInterval/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport endOfYear from '../endOfYear/index.js'\n\n/**\n * @name eachWeekendOfYear\n * @category Year Helpers\n * @summary List all the Saturdays and Sundays in the year.\n *\n * @description\n * Get all the Saturdays and Sundays in the year.\n *\n * @param {Date|Number} date - the given year\n * @returns {Date[]} an array containing all the Saturdays and Sundays\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} The passed date is invalid\n *\n * @example\n * // Lists all Saturdays and Sundays in the year\n * var result = eachWeekendOfYear(new Date(2020, 1, 1))\n * //=> [\n * // Sat Jan 03 2020 00:00:00,\n * // Sun Jan 04 2020 00:00:00,\n * // ...\n * // Sun Dec 27 2020 00:00:00\n * // ]\n * ]\n */\nexport default function eachWeekendOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var startDate = startOfYear(dirtyDate)\n if (isNaN(startDate)) throw new RangeError('The passed date is invalid')\n\n var endDate = endOfYear(dirtyDate)\n return eachWeekendOfInterval({ start: startDate, end: endDate })\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * var result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfDecade\n * @category Decade Helpers\n * @summary Return the end of a decade for the given date.\n *\n * @description\n * Return the end of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a decade\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The end of a decade for 12 May 1984 00:00:00:\n * var result = endOfDecade(new Date(1984, 4, 12, 00, 00, 00))\n * //=> Dec 31 1989 23:59:59.999\n */\nexport default function endOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade, 11, 31)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * var result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\nexport default function endOfHour(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMinutes(59, 59, 999)\n return date\n}\n","import endOfWeek from '../endOfWeek/index.js'\n\n/**\n * @name endOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the end of an ISO week for the given date.\n *\n * @description\n * Return the end of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week for 2 September 2014 11:55:00:\n * var result = endOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return endOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name endOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the end of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the end of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `endOfISOYear` to `endOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `addWeekYears`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of an ISO week-numbering year for 2 July 2005:\n * var result = endOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 23:59:59.999\n */\nexport default function endOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuaryOfNextYear)\n date.setMilliseconds(date.getMilliseconds() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * var result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\nexport default function endOfMinute(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setSeconds(59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * var result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * var result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3) + 3\n date.setMonth(month, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * var result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\nexport default function endOfSecond(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMilliseconds(999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setDate(date.getDate() + diff)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * var result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(23, 59, 59, 999)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport isValid from '../isValid/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport formatters from '../_lib/format/formatters/index.js'\nimport longFormatters from '../_lib/format/longFormatters/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate)\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value')\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset)\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n }\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0]\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter]\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring)\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport differenceInMonths from '../differenceInMonths/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_TWO_MONTHS = 86400\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance `\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * var result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistance(dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate)\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value')\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate)\n dateRight = toDate(dirtyDate)\n } else {\n dateLeft = toDate(dirtyDate)\n dateRight = toDate(dirtyBaseDate)\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(dateRight) -\n getTimezoneOffsetInMilliseconds(dateLeft)) /\n 1000\n var minutes = Math.round((seconds - offsetInSeconds) / 60)\n var months\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions)\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions)\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions)\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions)\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions)\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions)\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions)\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60)\n return locale.formatDistance('aboutXHours', hours, localizeOptions)\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions)\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('aboutXMonths', months, localizeOptions)\n }\n\n months = differenceInMonths(dateRight, dateLeft)\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions)\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12\n var years = Math.floor(months / 12)\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions)\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions)\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions)\n }\n }\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport compareAsc from '../compareAsc/index.js'\nimport toDate from '../toDate/index.js'\nimport differenceInSeconds from '../differenceInSeconds/index.js'\nimport cloneObject from '../_lib/cloneObject/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\n\nvar MINUTES_IN_DAY = 1440\nvar MINUTES_IN_MONTH = 43200\nvar MINUTES_IN_YEAR = 525600\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsStrict` to `formatDistanceStrict`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(2015, 0, 2),\n * new Date(2014, 6, 2)\n * ) //=> '6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(2014, 6, 2),\n * new Date(2015, 0, 2)\n * ) //=> '6 months'\n * ```\n *\n * - `partialMethod` option is renamed to `roundingMethod`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { partialMethod: 'ceil' }\n * ) //=> '2 minutes'\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { roundingMethod: 'ceil' }\n * ) //=> '2 minutes'\n * ```\n *\n * - If `roundingMethod` is not specified, it now defaults to `round` instead of `floor`.\n *\n * - `unit` option now accepts one of the strings:\n * 'second', 'minute', 'hour', 'day', 'month' or 'year' instead of 's', 'm', 'h', 'd', 'M' or 'Y'\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsStrict(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 10, 33, 1),\n * { unit: 'm' }\n * )\n *\n * // v2.0.0 onward\n *\n * formatDistanceStrict(\n * new Date(1986, 3, 4, 10, 33, 1),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { unit: 'minute' }\n * )\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * var result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * var result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * var result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * var result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 28 January 2015, in months, rounded up?\n * var result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\nexport default function formatDistanceStrict(\n dirtyDate,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property')\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate)\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value')\n }\n\n var localizeOptions = cloneObject(options)\n localizeOptions.addSuffix = Boolean(options.addSuffix)\n localizeOptions.comparison = comparison\n\n var dateLeft\n var dateRight\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate)\n dateRight = toDate(dirtyDate)\n } else {\n dateLeft = toDate(dirtyDate)\n dateRight = toDate(dirtyBaseDate)\n }\n\n var roundingMethod =\n options.roundingMethod == null ? 'round' : String(options.roundingMethod)\n var roundingMethodFn\n\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\")\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft)\n var offsetInSeconds =\n (getTimezoneOffsetInMilliseconds(dateRight) -\n getTimezoneOffsetInMilliseconds(dateLeft)) /\n 1000\n var minutes = roundingMethodFn((seconds - offsetInSeconds) / 60)\n\n var unit\n if (options.unit == null) {\n if (minutes < 1) {\n unit = 'second'\n } else if (minutes < 60) {\n unit = 'minute'\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour'\n } else if (minutes < MINUTES_IN_MONTH) {\n unit = 'day'\n } else if (minutes < MINUTES_IN_YEAR) {\n unit = 'month'\n } else {\n unit = 'year'\n }\n } else {\n unit = String(options.unit)\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n return locale.formatDistance('xSeconds', seconds, localizeOptions)\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n return locale.formatDistance('xMinutes', minutes, localizeOptions)\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60)\n return locale.formatDistance('xHours', hours, localizeOptions)\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(minutes / MINUTES_IN_DAY)\n return locale.formatDistance('xDays', days, localizeOptions)\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(minutes / MINUTES_IN_MONTH)\n return locale.formatDistance('xMonths', months, localizeOptions)\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(minutes / MINUTES_IN_YEAR)\n return locale.formatDistance('xYears', years, localizeOptions)\n }\n\n throw new RangeError(\n \"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\"\n )\n}\n","import getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport format from '../format/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n/**\n * @name formatRelative\n * @category Common Helpers\n * @summary Represent the date in words relative to the given base date.\n *\n * @description\n * Represent the date in words relative to the given base date.\n *\n * | Distance to the base date | Result |\n * |---------------------------|---------------------------|\n * | Previous 6 days | last Sunday at 04:30 AM |\n * | Last day | yesterday at 04:30 AM |\n * | Same day | today at 04:30 AM |\n * | Next day | tomorrow at 04:30 AM |\n * | Next 6 days | Sunday at 04:30 AM |\n * | Other | 12/31/2017 |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to format\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the date in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.locale` must contain `formatRelative` property\n */\nexport default function formatRelative(dirtyDate, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var baseDate = toDate(dirtyBaseDate)\n\n var options = dirtyOptions || {}\n var locale = options.locale || defaultLocale\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n if (!locale.formatRelative) {\n throw new RangeError('locale must contain formatRelative property')\n }\n\n var diff = differenceInCalendarDays(date, baseDate)\n\n if (isNaN(diff)) {\n throw new RangeError('Invalid time value')\n }\n\n var token\n if (diff < -6) {\n token = 'other'\n } else if (diff < -1) {\n token = 'lastWeek'\n } else if (diff < 0) {\n token = 'yesterday'\n } else if (diff < 1) {\n token = 'today'\n } else if (diff < 2) {\n token = 'tomorrow'\n } else if (diff < 7) {\n token = 'nextWeek'\n } else {\n token = 'other'\n }\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n var utcBaseDate = subMilliseconds(\n baseDate,\n getTimezoneOffsetInMilliseconds(baseDate)\n )\n var formatStr = locale.formatRelative(token, utcDate, utcBaseDate, options)\n return format(date, formatStr, options)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name fromUnixTime\n * @category Timestamp Helpers\n * @summary Create a date from a Unix timestamp.\n *\n * @description\n * Create a date from a Unix timestamp.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Number} unixTime - the given Unix timestamp\n * @returns {Date} the date\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Create the date 29 February 2012 11:45:05:\n * var result = fromUnixTime(1330515905)\n * //=> Wed Feb 29 2012 11:45:05\n */\nexport default function fromUnixTime(dirtyUnixTime) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var unixTime = toInteger(dirtyUnixTime)\n\n return toDate(unixTime * 1000)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nexport default function getDate(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfMonth = date.getDate()\n return dayOfMonth\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfYear from '../startOfYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * var result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport default function getDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff = differenceInCalendarDays(date, startOfYear(date))\n var dayOfYear = diff + 1\n return dayOfYear\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var monthIndex = date.getMonth()\n var lastDayOfMonth = new Date(0)\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0)\n lastDayOfMonth.setHours(0, 0, 0, 0)\n return lastDayOfMonth.getDate()\n}\n","import toDate from '../toDate/index.js'\nimport isLeapYear from '../isLeapYear/index.js'\n\n/**\n * @name getDaysInYear\n * @category Year Helpers\n * @summary Get the number of days in a year of the given date.\n *\n * @description\n * Get the number of days in a year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in 2012?\n * var result = getDaysInYear(new Date(2012, 0, 1))\n * //=> 366\n */\nexport default function getDaysInYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n\n if (isNaN(date)) {\n return NaN\n }\n\n return isLeapYear(date) ? 366 : 365\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getDecade\n * @category Decade Helpers\n * @summary Get the decade of the given date.\n *\n * @description\n * Get the decade of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year of decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which decade belongs 27 November 1942?\n * var result = getDecade(new Date(1942, 10, 27))\n * //=> 1940\n */\nexport default function getDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n return decade\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var hours = date.getHours()\n return hours\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * var result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport default function getISODay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n\n if (day === 0) {\n day = 7\n }\n\n return day\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport default function getISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toDate from '../toDate/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getISOYear` to `getISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * var result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport default function getISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n\n var fourthOfJanuaryOfNextYear = new Date(0)\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4)\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear)\n\n var fourthOfJanuaryOfThisYear = new Date(0)\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4)\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getISOWeeksInYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * @description\n * Get the number of weeks in an ISO week-numbering year of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of ISO weeks in a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many weeks are in ISO week-numbering year 2015?\n * var result = getISOWeeksInYear(new Date(2015, 1, 11))\n * //=> 53\n */\nexport default function getISOWeeksInYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var thisYear = startOfISOWeekYear(dirtyDate)\n var nextYear = startOfISOWeekYear(addWeeks(thisYear, 60))\n var diff = nextYear.valueOf() - thisYear.valueOf()\n // Round the number of weeks to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMilliseconds\n * @category Millisecond Helpers\n * @summary Get the milliseconds of the given date.\n *\n * @description\n * Get the milliseconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the milliseconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the milliseconds of 29 February 2012 11:45:05.123:\n * var result = getMilliseconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 123\n */\nexport default function getMilliseconds(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var milliseconds = date.getMilliseconds()\n return milliseconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport default function getMinutes(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var minutes = date.getMinutes()\n return minutes\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n return month\n}\n","import toDate from '../toDate/index.js'\n\nvar MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000\n\n/**\n * @name getOverlappingDaysInIntervals\n * @category Interval Helpers\n * @summary Get the number of days that overlap in two time intervals\n *\n * @description\n * Get the number of days that overlap in two time intervals\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `getOverlappingDaysInRanges` to `getOverlappingDaysInIntervals`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * getOverlappingDaysInRanges(\n * new Date(2014, 0, 10), new Date(2014, 0, 20),\n * new Date(2014, 0, 17), new Date(2014, 0, 21)\n * )\n *\n * // v2.0.0 onward\n *\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * ```\n *\n * @param {Interval} intervalLeft - the first interval to compare. See [Interval]{@link docs/Interval}\n * @param {Interval} intervalRight - the second interval to compare. See [Interval]{@link docs/Interval}\n * @returns {Number} the number of days that overlap in two time intervals\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For overlapping time intervals adds 1 for each started overlapping day:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }\n * )\n * //=> 3\n *\n * @example\n * // For non-overlapping time intervals returns 0:\n * getOverlappingDaysInIntervals(\n * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },\n * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }\n * )\n * //=> 0\n */\nexport default function getOverlappingDaysInIntervals(\n dirtyIntervalLeft,\n dirtyIntervalRight\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var intervalLeft = dirtyIntervalLeft || {}\n var intervalRight = dirtyIntervalRight || {}\n var leftStartTime = toDate(intervalLeft.start).getTime()\n var leftEndTime = toDate(intervalLeft.end).getTime()\n var rightStartTime = toDate(intervalRight.start).getTime()\n var rightEndTime = toDate(intervalRight.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(leftStartTime <= leftEndTime && rightStartTime <= rightEndTime)) {\n throw new RangeError('Invalid interval')\n }\n\n var isOverlapping =\n leftStartTime < rightEndTime && rightStartTime < leftEndTime\n\n if (!isOverlapping) {\n return 0\n }\n\n var overlapStartDate =\n rightStartTime < leftStartTime ? leftStartTime : rightStartTime\n\n var overlapEndDate = rightEndTime > leftEndTime ? leftEndTime : rightEndTime\n\n var differenceInMs = overlapEndDate - overlapStartDate\n\n return Math.ceil(differenceInMs / MILLISECONDS_IN_DAY)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * var result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var quarter = Math.floor(date.getMonth() / 3) + 1\n return quarter\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var seconds = date.getSeconds()\n return seconds\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nexport default function getTime(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var timestamp = date.getTime()\n return timestamp\n}\n","import getTime from '../getTime/index.js'\n\n/**\n * @name getUnixTime\n * @category Timestamp Helpers\n * @summary Get the seconds timestamp of the given date.\n *\n * @description\n * Get the seconds timestamp of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05 CET:\n * var result = getUnixTime(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 1330512305\n */\nexport default function getUnixTime(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return Math.floor(getTime(dirtyDate) / 1000)\n}\n","import toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\n\nvar MILLISECONDS_IN_WEEK = 604800000\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * var result = getISOWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * var result = getISOWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport default function getWeek(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var diff =\n startOfWeek(date, options).getTime() -\n startOfWeekYear(date, options).getTime()\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getDate from '../getDate/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\nimport getDay from '../getDay/index.js'\n\n/**\n * @name getWeekOfMonth\n * @category Week Helpers\n * @summary Get the week of the month of the given date.\n *\n * @description\n * Get the week of the month of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Number} the week of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Which week of the month is 9 November 2017?\n * var result = getWeekOfMonth(new Date(2017, 10, 9))\n * //=> 2\n */\nexport default function getWeekOfMonth(date, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var startWeekDay = getDay(startOfMonth(date))\n var currentWeekDay = getDay(date)\n\n var startWeekDayWithOptions =\n startWeekDay < weekStartsOn ? 7 - weekStartsOn : startWeekDay\n var diff = startWeekDayWithOptions > currentWeekDay ? 7 - weekStartsOn : 0\n\n return Math.ceil((getDate(date) + diff) / 7)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Number} the local week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * var result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * var result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * var result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport default function getWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var firstWeekOfNextYear = new Date(0)\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate)\n firstWeekOfNextYear.setHours(0, 0, 0, 0)\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, dirtyOptions)\n\n var firstWeekOfThisYear = new Date(0)\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate)\n firstWeekOfThisYear.setHours(0, 0, 0, 0)\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, dirtyOptions)\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n","import differenceInCalendarWeeks from '../differenceInCalendarWeeks/index.js'\nimport lastDayOfMonth from '../lastDayOfMonth/index.js'\nimport startOfMonth from '../startOfMonth/index.js'\n\n/**\n * @name getWeeksInMonth\n * @category Week Helpers\n * @summary Get the number of calendar weeks a month spans.\n *\n * @description\n * Get the number of calendar weeks the month in the given date spans.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks does February 2015 span?\n * var result = getWeeksInMonth(new Date(2015, 1, 8))\n * //=> 4\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks does July 2017 span?\n * var result = getWeeksInMonth(new Date(2017, 6, 5), { weekStartsOn: 1 })\n * //=> 6\n */\nexport default function getWeeksInMonth(date, options) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n differenceInCalendarWeeks(\n lastDayOfMonth(date),\n startOfMonth(date),\n options\n ) + 1\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n return year\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as lightFormat } from './lightFormat/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport { default as parseISO } from './parseISO/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dateToCompare = toDate(dirtyDateToCompare)\n return date.getTime() > dateToCompare.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dateToCompare = toDate(dirtyDateToCompare)\n return date.getTime() < dateToCompare.getTime()\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyLeftDate)\n var dateRight = toDate(dirtyRightDate)\n return dateLeft.getTime() === dateRight.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFirstDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the first day of a month?\n *\n * @description\n * Is the given date the first day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the first day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2014 the first day of a month?\n * var result = isFirstDayOfMonth(new Date(2014, 8, 1))\n * //=> true\n */\nexport default function isFirstDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDate() === 1\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isFriday\n * @category Weekday Helpers\n * @summary Is the given date Friday?\n *\n * @description\n * Is the given date Friday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Friday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 26 September 2014 Friday?\n * var result = isFriday(new Date(2014, 8, 26))\n * //=> true\n */\nexport default function isFriday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 5\n}\n","import toDate from '../toDate/index.js'\nimport endOfDay from '../endOfDay/index.js'\nimport endOfMonth from '../endOfMonth/index.js'\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n return endOfDay(date).getTime() === endOfMonth(date).getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isLeapYear\n * @category Year Helpers\n * @summary Is the given date in the leap year?\n *\n * @description\n * Is the given date in the leap year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the leap year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 1 September 2012 in the leap year?\n * var result = isLeapYear(new Date(2012, 8, 1))\n * //=> true\n */\nexport default function isLeapYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isMonday\n * @category Weekday Helpers\n * @summary Is the given date Monday?\n *\n * @description\n * Is the given date Monday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Monday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 22 September 2014 Monday?\n * var result = isMonday(new Date(2014, 8, 22))\n * //=> true\n */\nexport default function isMonday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 1\n}\n","import startOfDay from '../startOfDay/index.js'\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft)\n var dateRightStartOfDay = startOfDay(dirtyDateRight)\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n","import startOfHour from '../startOfHour/index.js'\n\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour?\n *\n * @description\n * Are the given dates in the same hour?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * var result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft)\n var dateRightStartOfHour = startOfHour(dirtyDateRight)\n\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime()\n}\n","import isSameWeek from '../isSameWeek/index.js'\n\n/**\n * @name isSameISOWeek\n * @category ISO Week Helpers\n * @summary Are the given dates in the same ISO week?\n *\n * @description\n * Are the given dates in the same ISO week?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 September 2014 and 7 September 2014 in the same ISO week?\n * var result = isSameISOWeek(new Date(2014, 8, 1), new Date(2014, 8, 7))\n * //=> true\n */\nexport default function isSameISOWeek(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n return isSameWeek(dirtyDateLeft, dirtyDateRight, { weekStartsOn: 1 })\n}\n","import startOfISOWeekYear from '../startOfISOWeekYear/index.js'\n\n/**\n * @name isSameISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Are the given dates in the same ISO week-numbering year?\n *\n * @description\n * Are the given dates in the same ISO week-numbering year?\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isSameISOYear` to `isSameISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same ISO week-numbering year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 29 December 2003 and 2 January 2005 in the same ISO week-numbering year?\n * var result = isSameISOWeekYear(new Date(2003, 11, 29), new Date(2005, 0, 2))\n * //=> true\n */\nexport default function isSameISOWeekYear(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfYear = startOfISOWeekYear(dirtyDateLeft)\n var dateRightStartOfYear = startOfISOWeekYear(dirtyDateRight)\n\n return dateLeftStartOfYear.getTime() === dateRightStartOfYear.getTime()\n}\n","import startOfMinute from '../startOfMinute/index.js'\n\n/**\n * @name isSameMinute\n * @category Minute Helpers\n * @summary Are the given dates in the same minute?\n *\n * @description\n * Are the given dates in the same minute?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same minute\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:00 and 4 September 2014 06:30:15\n * // in the same minute?\n * var result = isSameMinute(\n * new Date(2014, 8, 4, 6, 30),\n * new Date(2014, 8, 4, 6, 30, 15)\n * )\n * //=> true\n */\nexport default function isSameMinute(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfMinute = startOfMinute(dirtyDateLeft)\n var dateRightStartOfMinute = startOfMinute(dirtyDateRight)\n\n return dateLeftStartOfMinute.getTime() === dateRightStartOfMinute.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return (\n dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n )\n}\n","import startOfQuarter from '../startOfQuarter/index.js'\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same year quarter?\n *\n * @description\n * Are the given dates in the same year quarter?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same quarter\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * var result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n */\nexport default function isSameQuarter(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfQuarter = startOfQuarter(dirtyDateLeft)\n var dateRightStartOfQuarter = startOfQuarter(dirtyDateRight)\n\n return dateLeftStartOfQuarter.getTime() === dateRightStartOfQuarter.getTime()\n}\n","import startOfSecond from '../startOfSecond/index.js'\n\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second?\n *\n * @description\n * Are the given dates in the same second?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500\n * // in the same second?\n * var result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n */\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft)\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight)\n\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime()\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name isSameWeek\n * @category Week Helpers\n * @summary Are the given dates in the same week?\n *\n * @description\n * Are the given dates in the same week?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Boolean} the dates are in the same week\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4))\n * //=> true\n *\n * @example\n * // If week starts with Monday,\n * // are 31 August 2014 and 4 September 2014 in the same week?\n * var result = isSameWeek(new Date(2014, 7, 31), new Date(2014, 8, 4), {\n * weekStartsOn: 1\n * })\n * //=> false\n */\nexport default function isSameWeek(\n dirtyDateLeft,\n dirtyDateRight,\n dirtyOptions\n) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeftStartOfWeek = startOfWeek(dirtyDateLeft, dirtyOptions)\n var dateRightStartOfWeek = startOfWeek(dirtyDateRight, dirtyOptions)\n\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateLeft = toDate(dirtyDateLeft)\n var dateRight = toDate(dirtyDateRight)\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSaturday\n * @category Weekday Helpers\n * @summary Is the given date Saturday?\n *\n * @description\n * Is the given date Saturday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Saturday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 27 September 2014 Saturday?\n * var result = isSaturday(new Date(2014, 8, 27))\n * //=> true\n */\nexport default function isSaturday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isSunday\n * @category Weekday Helpers\n * @summary Is the given date Sunday?\n *\n * @description\n * Is the given date Sunday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 21 September 2014 Sunday?\n * var result = isSunday(new Date(2014, 8, 21))\n * //=> true\n */\nexport default function isSunday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 0\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isThursday\n * @category Weekday Helpers\n * @summary Is the given date Thursday?\n *\n * @description\n * Is the given date Thursday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Thursday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 25 September 2014 Thursday?\n * var result = isThursday(new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isThursday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 4\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isTuesday\n * @category Weekday Helpers\n * @summary Is the given date Tuesday?\n *\n * @description\n * Is the given date Tuesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Tuesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 23 September 2014 Tuesday?\n * var result = isTuesday(new Date(2014, 8, 23))\n * //=> true\n */\nexport default function isTuesday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 2\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n return !isNaN(date)\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWednesday\n * @category Weekday Helpers\n * @summary Is the given date Wednesday?\n *\n * @description\n * Is the given date Wednesday?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is Wednesday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 24 September 2014 Wednesday?\n * var result = isWednesday(new Date(2014, 8, 24))\n * //=> true\n */\nexport default function isWednesday(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return toDate(dirtyDate).getDay() === 3\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWeekend\n * @category Weekday Helpers\n * @summary Does the given date fall on a weekend?\n *\n * @description\n * Does the given date fall on a weekend?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date falls on a weekend\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Does 5 October 2014 fall on a weekend?\n * var result = isWeekend(new Date(2014, 9, 5))\n * //=> true\n */\nexport default function isWeekend(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n return day === 0 || day === 6\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `isWithinRange` to `isWithinInterval`.\n * This change was made to mirror the use of the word \"interval\" in standard ISO 8601:2004 terminology:\n *\n * ```\n * 2.1.3\n * time interval\n * part of the time axis limited by two instants\n * ```\n *\n * Also, this function now accepts an object with `start` and `end` properties\n * instead of two arguments as an interval.\n * This function now throws `RangeError` if the start of the interval is after its end\n * or if any date in the interval is `Invalid Date`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * isWithinRange(\n * new Date(2014, 0, 3),\n * new Date(2014, 0, 1), new Date(2014, 0, 7)\n * )\n *\n * // v2.0.0 onward\n *\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * { start: new Date(2014, 0, 1), end: new Date(2014, 0, 7) }\n * )\n * ```\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n */\nexport default function isWithinInterval(dirtyDate, dirtyInterval) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var interval = dirtyInterval || {}\n var time = toDate(dirtyDate).getTime()\n var startTime = toDate(interval.start).getTime()\n var endTime = toDate(interval.end).getTime()\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfDecade\n * @category Decade Helpers\n * @summary Return the last day of a decade for the given date.\n *\n * @description\n * Return the last day of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a decade for 21 December 2012 21:12:00:\n * var result = lastDayOfDecade(new Date(2012, 11, 21, 21, 12, 00))\n * //=> Wed Dec 31 2019 00:00:00\n */\nexport default function lastDayOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = 9 + Math.floor(year / 10) * 10\n date.setFullYear(decade + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import lastDayOfWeek from '../lastDayOfWeek/index.js'\n\n/**\n * @name lastDayOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the last day of an ISO week for the given date.\n *\n * @description\n * Return the last day of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week for 2 September 2014 11:55:00:\n * var result = lastDayOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return lastDayOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name lastDayOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the last day of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the last day of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `lastDayOfISOYear` to `lastDayOfISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `getWeekYear`.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of an ISO week-numbering year for 2 July 2005:\n * var result = lastDayOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Sun Jan 01 2006 00:00:00\n */\nexport default function lastDayOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year + 1, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n date.setDate(date.getDate() - 1)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfMonth\n * @category Month Helpers\n * @summary Return the last day of a month for the given date.\n *\n * @description\n * Return the last day of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a month for 2 September 2014 11:55:00:\n * var result = lastDayOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = date.getMonth()\n date.setFullYear(date.getFullYear(), month + 1, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfQuarter\n * @category Quarter Helpers\n * @summary Return the last day of a year quarter for the given date.\n *\n * @description\n * Return the last day of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the last day of a quarter\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The last day of a quarter for 2 September 2014 11:55:00:\n * var result = lastDayOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function lastDayOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3) + 3\n date.setMonth(month, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfWeek\n * @category Week Helpers\n * @summary Return the last day of a week for the given date.\n *\n * @description\n * Return the last day of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the last day of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The last day of a week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the last day of the week for 2 September 2014 11:55:00:\n * var result = lastDayOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function lastDayOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn)\n\n date.setHours(0, 0, 0, 0)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name lastDayOfYear\n * @category Year Helpers\n * @summary Return the last day of a year for the given date.\n *\n * @description\n * Return the last day of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the last day of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The last day of a year for 2 September 2014 11:55:00:\n * var result = lastDayOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 00:00:00\n */\nexport default function lastDayOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n date.setFullYear(year + 1, 0, 0)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\nimport formatters from '../_lib/format/lightFormatters/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport isValid from '../isValid/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\n\n// This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM | a..aaa | AM, PM |\n * | | aaaa | a.m., p.m. |\n * | | aaaaa | a, p |\n * | Calendar year | y | 44, 1, 1900, 2017 |\n * | | yy | 44, 01, 00, 17 |\n * | | yyy | 044, 001, 000, 017 |\n * | | yyyy | 0044, 0001, 1900, 2017 |\n * | Month (formatting) | M | 1, 2, ..., 12 |\n * | | MM | 01, 02, ..., 12 |\n * | Day of month | d | 1, 2, ..., 31 |\n * | | dd | 01, 02, ..., 31 |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 |\n * | | hh | 01, 02, ..., 11, 12 |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 |\n * | | HH | 00, 01, 02, ..., 23 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z |\n * | | XX | -0800, +0530, Z |\n * | | XXX | -08:00, +05:30, Z |\n * | | XXXX | -0800, +0530, Z, +123456 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 |\n * | | xx | -0800, +0530, +0000 |\n * | | xxx | -08:00, +05:30, +00:00 |\n * | | xxxx | -0800, +0530, +0000, +123456 |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * var result = format(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '1987-02-11'\n */\nexport default function lightFormat(dirtyDate, dirtyFormatStr) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr)\n\n var originalDate = toDate(dirtyDate)\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value')\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate)\n var utcDate = subMilliseconds(originalDate, timezoneOffset)\n\n var result = formatStr\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0]\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter]\n if (formatter) {\n return formatter(utcDate, substring, null, {})\n }\n\n return substring\n })\n .join('')\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","export default function buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var format = args.formats[width] || args.formats[args.defaultWidth]\n return format\n }\n}\n","export default function buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {}\n var width = options.width ? String(options.width) : args.defaultWidth\n var context = options.context ? String(options.context) : 'standalone'\n\n var valuesArray\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth]\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth]\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex\n return valuesArray[index]\n }\n}\n","export default function buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n var width = options.width\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth]\n var matchResult = string.match(matchPattern)\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth]\n\n var value\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n })\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n })\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n","export default function buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString)\n var options = dirtyOptions || {}\n\n var matchResult = string.match(args.matchPattern)\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0]\n\n var parseResult = string.match(args.parsePattern)\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]\n value = options.valueCallback ? options.valueCallback(value) : value\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n}\n\nexport default function formatDistance (token, count, options) {\n options = options || {}\n\n var result\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token]\n } else if (count === 1) {\n result = formatDistanceLocale[token].one\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count)\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js'\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n}\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n}\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n}\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n}\n\nexport default formatLong\n","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n}\n\nexport default function formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js'\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n}\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n}\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n}\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n}\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n}\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber)\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n}\n\nexport default localize\n","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js'\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i\nvar parseOrdinalNumberPattern = /\\d+/i\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n}\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n}\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n}\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n}\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n}\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n}\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n}\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n}\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n}\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n}\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n}\n\nexport default match\n","import formatDistance from './_lib/formatDistance/index.js'\nimport formatLong from './_lib/formatLong/index.js'\nimport formatRelative from './_lib/formatRelative/index.js'\nimport localize from './_lib/localize/index.js'\nimport match from './_lib/match/index.js'\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n}\n\nexport default locale\n","import toDate from '../toDate/index.js'\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `max` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var maxDate = max(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var maxDate = max(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nexport default function max(dirtyDatesArray) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - `min` function now accepts an array of dates rather than spread arguments.\n *\n * ```javascript\n * // Before v2.0.0\n * var date1 = new Date(1989, 6, 10)\n * var date2 = new Date(1987, 1, 11)\n * var minDate = min(date1, date2)\n *\n * // v2.0.0 onward:\n * var dates = [new Date(1989, 6, 10), new Date(1987, 1, 11)]\n * var minDate = min(dates)\n * ```\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nexport default function min(dirtyDatesArray) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var datesArray\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = []\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray)\n }\n\n var result\n datesArray.forEach(function(dirtyDate) {\n var currentDate = toDate(dirtyDate)\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate\n }\n })\n\n return result\n}\n","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js'\nimport setUTCDay from '../../../_lib/setUTCDay/index.js'\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js'\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js'\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js'\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js'\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar MILLISECONDS_IN_SECOND = 1000\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n}\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n}\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10)\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern)\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0\n\n return {\n value:\n sign *\n (hours * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(\n numericPatterns.anyDigitsSigned,\n string,\n valueCallback\n )\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n numericPatterns.singleDigit,\n string,\n valueCallback\n )\n case 2:\n return parseNumericPattern(\n numericPatterns.twoDigits,\n string,\n valueCallback\n )\n case 3:\n return parseNumericPattern(\n numericPatterns.threeDigits,\n string,\n valueCallback\n )\n case 4:\n return parseNumericPattern(\n numericPatterns.fourDigits,\n string,\n valueCallback\n )\n default:\n return parseNumericPattern(\n new RegExp('^\\\\d{1,' + n + '}'),\n string,\n valueCallback\n )\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n numericPatterns.singleDigitSigned,\n string,\n valueCallback\n )\n case 2:\n return parseNumericPattern(\n numericPatterns.twoDigitsSigned,\n string,\n valueCallback\n )\n case 3:\n return parseNumericPattern(\n numericPatterns.threeDigitsSigned,\n string,\n valueCallback\n )\n case 4:\n return parseNumericPattern(\n numericPatterns.fourDigitsSigned,\n string,\n valueCallback\n )\n default:\n return parseNumericPattern(\n new RegExp('^-?\\\\d{1,' + n + '}'),\n string,\n valueCallback\n )\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear\n\n var result\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100\n } else {\n var rangeEnd = absCurrentYear + 50\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0)\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\n// User for validation\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function(string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return (\n match.era(string, { width: 'abbreviated' }) ||\n match.era(string, { width: 'narrow' })\n )\n // A, B\n case 'GGGGG':\n return match.era(string, { width: 'narrow' })\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return (\n match.era(string, { width: 'wide' }) ||\n match.era(string, { width: 'abbreviated' }) ||\n match.era(string, { width: 'narrow' })\n )\n }\n },\n set: function(date, flags, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function(string, token, match, options) {\n var valueCallback = function(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n }\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n })\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function(date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options)\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n )\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function(string, token, match, options) {\n var valueCallback = function(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n }\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n })\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function(date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function(date, flags, value, options) {\n var currentYear = date.getUTCFullYear()\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear\n )\n date.setUTCFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate\n )\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate)\n date.setUTCHours(0, 0, 0, 0)\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function(string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function(date, flags, value, options) {\n var firstWeekOfYear = new Date(0)\n firstWeekOfYear.setUTCFullYear(value, 0, 4)\n firstWeekOfYear.setUTCHours(0, 0, 0, 0)\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function(string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function(date, flags, value, options) {\n date.setUTCFullYear(value, 0, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return (\n match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'formatting' })\n )\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n })\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return (\n match.quarter(string, { width: 'wide', context: 'formatting' }) ||\n match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function(string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, { unit: 'quarter' })\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return (\n match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'standalone' })\n )\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n })\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return (\n match.quarter(string, { width: 'wide', context: 'standalone' }) ||\n match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.quarter(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth((value - 1) * 3, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(\n numericPatterns.month,\n string,\n valueCallback\n )\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n })\n // Jan, Feb, ..., Dec\n case 'MMM':\n return (\n match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.month(string, { width: 'narrow', context: 'formatting' })\n )\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, { width: 'narrow', context: 'formatting' })\n // January, February, ..., December\n case 'MMMM':\n default:\n return (\n match.month(string, { width: 'wide', context: 'formatting' }) ||\n match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.month(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return value - 1\n }\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(\n numericPatterns.month,\n string,\n valueCallback\n )\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n })\n // Jan, Feb, ..., Dec\n case 'LLL':\n return (\n match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.month(string, { width: 'narrow', context: 'standalone' })\n )\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, { width: 'narrow', context: 'standalone' })\n // January, February, ..., December\n case 'LLLL':\n default:\n return (\n match.month(string, { width: 'wide', context: 'standalone' }) ||\n match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.month(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(value, 1)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, { unit: 'week' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function(date, flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, { unit: 'week' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function(date, flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, { unit: 'date' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n var month = date.getUTCMonth()\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month]\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCDate(value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, { unit: 'date' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n var year = date.getUTCFullYear()\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCMonth(0, value)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function(string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // T\n case 'EEEEE':\n return match.day(string, { width: 'narrow', context: 'formatting' })\n // Tu\n case 'EEEEEE':\n return (\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // Tuesday\n case 'EEEE':\n default:\n return (\n match.day(string, { width: 'wide', context: 'formatting' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n })\n // Tue\n case 'eee':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // T\n case 'eeeee':\n return match.day(string, { width: 'narrow', context: 'formatting' })\n // Tu\n case 'eeeeee':\n return (\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n // Tuesday\n case 'eeee':\n default:\n return (\n match.day(string, { width: 'wide', context: 'formatting' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.day(string, { width: 'short', context: 'formatting' }) ||\n match.day(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays\n }\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n })\n // Tue\n case 'ccc':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n // T\n case 'ccccc':\n return match.day(string, { width: 'narrow', context: 'standalone' })\n // Tu\n case 'cccccc':\n return (\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n // Tuesday\n case 'cccc':\n default:\n return (\n match.day(string, { width: 'wide', context: 'standalone' }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) ||\n match.day(string, { width: 'short', context: 'standalone' }) ||\n match.day(string, { width: 'narrow', context: 'standalone' })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function(date, flags, value, options) {\n date = setUTCDay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n if (value === 0) {\n return 7\n }\n return value\n }\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, { unit: 'day' })\n // Tue\n case 'iii':\n return (\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n // T\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n // Tu\n case 'iiiiii':\n return (\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n // Tuesday\n case 'iiii':\n default:\n return (\n match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) ||\n match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n })\n )\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function(date, flags, value, options) {\n date = setUTCISODay(date, value, options)\n date.setUTCHours(0, 0, 0, 0)\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'aaaa':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'bbbb':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return (\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n })\n case 'BBBB':\n default:\n return (\n match.dayPeriod(string, { width: 'wide', context: 'formatting' }) ||\n match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) ||\n match.dayPeriod(string, { width: 'narrow', context: 'formatting' })\n )\n }\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0)\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function(date, flags, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function(date, flags, value, options) {\n date.setUTCHours(value, 0, 0, 0)\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function(date, flags, value, options) {\n var isPM = date.getUTCHours() >= 12\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0)\n } else {\n date.setUTCHours(value, 0, 0, 0)\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, { unit: 'hour' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function(date, flags, value, options) {\n var hours = value <= 24 ? value % 24 : value\n date.setUTCHours(hours, 0, 0, 0)\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, { unit: 'minute' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function(date, flags, value, options) {\n date.setUTCMinutes(value, 0, 0)\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function(string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, { unit: 'second' })\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function(date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function(date, flags, value, options) {\n date.setUTCSeconds(value, 0)\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 30,\n parse: function(string, token, match, options) {\n var valueCallback = function(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n }\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function(date, flags, value, options) {\n date.setUTCMilliseconds(value)\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n string\n )\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n string\n )\n case 'XXXXX':\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n string\n )\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function(date, flags, value, options) {\n if (flags.timestampIsSet) {\n return date\n }\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function(string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n string\n )\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n string\n )\n case 'xxxxx':\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n string\n )\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function(date, flags, value, options) {\n if (flags.timestampIsSet) {\n return date\n }\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function(string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function(date, flags, value, options) {\n return [new Date(value * 1000), { timestampIsSet: true }]\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function(string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function(date, flags, value, options) {\n return [new Date(value), { timestampIsSet: true }]\n }\n }\n}\n\nexport default parsers\n","import toInteger from '../_lib/toInteger/index.js'\nimport assign from '../_lib/assign/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport toDate from '../toDate/index.js'\nimport subMilliseconds from '../subMilliseconds/index.js'\nimport defaultLocale from '../locale/en-US/index.js'\nimport parsers from './_lib/parsers/index.js'\nimport {\n isProtectedToken,\n throwProtectedError\n} from '../_lib/protectedTokens/index.js'\n\nvar TIMEZONE_UNIT_PRIORITY = 10\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g\n\nvar escapedStringRegExp = /^'(.*?)'?$/\nvar doubleQuoteRegExp = /''/g\n\nvar notWhitespaceRegExp = /\\S/\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} baseDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString)\n var formatString = String(dirtyFormatString)\n var options = dirtyOptions || {}\n\n var locale = options.locale || defaultLocale\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ]\n\n var i\n\n var tokens = formatString.match(formattingTokensRegExp)\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token)\n }\n\n var firstCharacter = token[0]\n var parser = parsers[firstCharacter]\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n )\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n })\n\n dateString = parseResult.rest\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\"\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token)\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length)\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n })\n\n var date = toDate(dirtyBaseDate)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date))\n\n var flags = {}\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i]\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions)\n // Result is tuple (date, flags)\n if (result[0]) {\n utcDate = result[0]\n assign(flags, result[1])\n // Result is date\n } else {\n utcDate = result\n }\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date\n }\n\n var convertedDate = new Date(0)\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n )\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n )\n return convertedDate\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n}\n\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits =\n options.additionalDigits == null\n ? DEFAULT_ADDITIONAL_DIGITS\n : toInteger(options.additionalDigits)\n if (\n additionalDigits !== 2 &&\n additionalDigits !== 1 &&\n additionalDigits !== 0\n ) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n if (\n !(\n typeof argument === 'string' ||\n Object.prototype.toString.call(argument) === '[object String]'\n )\n ) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var date = parseDate(parseYearResult.restDateString, parseYearResult.year)\n\n if (isNaN(date) || !date) {\n return new Date(NaN)\n }\n\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone)\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n var fullTime = timestamp + time\n var fullTimeDate = new Date(fullTime)\n\n offset = getTimezoneOffsetInMilliseconds(fullTimeDate)\n\n // Adjust time when it's coming from DST\n var fullTimeDateNextDay = new Date(fullTime)\n fullTimeDateNextDay.setDate(fullTimeDate.getDate() + 1)\n var offsetDiff =\n getTimezoneOffsetInMilliseconds(fullTimeDateNextDay) - offset\n if (offsetDiff > 0) {\n offset += offsetDiff\n }\n }\n\n return new Date(timestamp + time + offset)\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {}\n var array = dateString.split(patterns.dateTimeDelimiter)\n var timeString\n\n if (/:/.test(array[0])) {\n dateStrings.date = null\n timeString = array[0]\n } else {\n dateStrings.date = array[0]\n timeString = array[1]\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0]\n timeString = dateString.substr(dateStrings.date.length, dateString.length)\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timezone = token[1]\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp(\n '^(?:(\\\\d{4}|[+-]\\\\d{' +\n (4 + additionalDigits) +\n '})|(\\\\d{2}|[+-]\\\\d{' +\n (2 + additionalDigits) +\n '})$)'\n )\n\n var captures = dateString.match(regex)\n // Invalid ISO-formatted year\n if (!captures) return { year: null }\n\n var year = captures[1] && parseInt(captures[1])\n var century = captures[2] && parseInt(captures[2])\n\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n }\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null\n\n var captures = dateString.match(dateRegex)\n // Invalid ISO-formatted string\n if (!captures) return null\n\n var isWeekDate = !!captures[4]\n var dayOfYear = parseDateUnit(captures[1])\n var month = parseDateUnit(captures[2]) - 1\n var day = parseDateUnit(captures[3])\n var week = parseDateUnit(captures[4]) - 1\n var dayOfWeek = parseDateUnit(captures[5]) - 1\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n return dayOfISOWeekYear(year, week, dayOfWeek)\n } else {\n var date = new Date(0)\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN)\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day))\n return date\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex)\n if (!captures) return null // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1])\n var minutes = parseTimeUnit(captures[2])\n var seconds = parseTimeUnit(captures[3])\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (\n (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n )\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(',', '.'))) || 0\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0\n\n var captures = timezoneString.match(timezoneRegex)\n if (!captures) return 0\n\n var sign = captures[1] === '+' ? -1 : 1\n var hours = parseInt(captures[2])\n var minutes = (captures[3] && parseInt(captures[3])) || 0\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n return (\n sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE)\n )\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = (week || 0) * 7 + (day || 0) + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100)\n}\n\nfunction validateDate(year, month, date) {\n return !(\n month < 0 ||\n month > 11 ||\n date < 1 ||\n date > (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n )\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return !(dayOfYear < 1 || dayOfYear > (isLeapYearIndex(year) ? 366 : 365))\n}\n\nfunction validateWeekDate(_year, week, day) {\n return !(week < 0 || week > 52 || day < 0 || day > 6)\n}\n\nfunction validateTime(hours, minutes, seconds) {\n return !(\n seconds < 0 ||\n seconds >= 60 ||\n minutes < 0 ||\n minutes >= 60 ||\n hours < 0 ||\n hours >= 25\n )\n}\n\nfunction validateTimezone(_hours, minutes) {\n return !(minutes < 0 || minutes > 59)\n}\n","import toDate from '../toDate/index.js'\nimport toInteger from '../_lib/toInteger/index.js'\n\n/**\n * @name roundToNearestMinutes\n * @category Minute Helpers\n * @summary Rounds the given date to the nearest minute\n *\n * @description\n * Rounds the given date to the nearest minute\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to round\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.nearestTo=1] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date rounded to the closest minute\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.nearestTo` must be between 1 and 30\n *\n * @example\n * // Round 10 July 2014 12:12:34 to nearest minute:\n * var result = roundToNearestMinutes(new Date(2014, 6, 10, 12, 12, 34))\n * //=> Thu Jul 10 2014 12:13:00\n */\nexport default function roundToNearestMinutes(dirtyDate, options) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only none provided present')\n }\n\n var nearestTo =\n options && 'nearestTo' in options ? toInteger(options.nearestTo) : 1\n\n if (nearestTo < 1 || nearestTo > 30) {\n throw new RangeError('`options.nearestTo` must be between 1 and 30')\n }\n\n var date = toDate(dirtyDate)\n var seconds = date.getSeconds() // relevant if nearestTo is 1, which is the default case\n var minutes = date.getMinutes() + seconds / 60\n var roundedMinutes = Math.floor(minutes / nearestTo) * nearestTo\n var remainderMinutes = minutes % nearestTo\n var addedMinutes = Math.round(remainderMinutes / nearestTo) * nearestTo\n\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n roundedMinutes + addedMinutes\n )\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * var result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfMonth = toInteger(dirtyDayOfMonth)\n date.setDate(dayOfMonth)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the new date with the day of the week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If week starts with Monday, set Sunday to 1 September 2014:\n * var result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setDay(dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options)\n var day = toInteger(dirtyDay)\n var currentDay = date.getDay()\n\n var remainder = day % 7\n var dayIndex = (remainder + 7) % 7\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay\n return addDays(date, diff, options)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @returns {Date} the new date with the day of the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nexport default function setDayOfYear(dirtyDate, dirtyDayOfYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var dayOfYear = toInteger(dirtyDayOfYear)\n date.setMonth(0)\n date.setDate(dayOfYear)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var hours = toInteger(dirtyHours)\n date.setHours(hours)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport addDays from '../addDays/index.js'\nimport getISODay from '../getISODay/index.js'\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} day - the day of the ISO week of the new date\n * @returns {Date} the new date with the day of the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * var result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport default function setISODay(dirtyDate, dirtyDay) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var day = toInteger(dirtyDay)\n var currentDay = getISODay(date)\n var diff = day - currentDay\n return addDays(date, diff)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getISOWeek from '../getISOWeek/index.js'\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeek - the ISO week of the new date\n * @returns {Date} the new date with the ISO week set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * var result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setISOWeek(dirtyDate, dirtyISOWeek) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeek = toInteger(dirtyISOWeek)\n var diff = getISOWeek(date) - isoWeek\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfISOWeekYear from '../startOfISOWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Set the ISO week-numbering year to the given date.\n *\n * @description\n * Set the ISO week-numbering year to the given date,\n * saving the week number and the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `setISOYear` to `setISOWeekYear`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} isoWeekYear - the ISO week-numbering year of the new date\n * @returns {Date} the new date with the ISO week-numbering year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set ISO week-numbering year 2007 to 29 December 2008:\n * var result = setISOWeekYear(new Date(2008, 11, 29), 2007)\n * //=> Mon Jan 01 2007 00:00:00\n */\nexport default function setISOWeekYear(dirtyDate, dirtyISOWeekYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var isoWeekYear = toInteger(dirtyISOWeekYear)\n var diff = differenceInCalendarDays(date, startOfISOWeekYear(date))\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(isoWeekYear, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n date = startOfISOWeekYear(fourthOfJanuary)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} milliseconds - the milliseconds of the new date\n * @returns {Date} the new date with the milliseconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * var result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport default function setMilliseconds(dirtyDate, dirtyMilliseconds) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var milliseconds = toInteger(dirtyMilliseconds)\n date.setMilliseconds(milliseconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var minutes = toInteger(dirtyMinutes)\n date.setMinutes(minutes)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getDaysInMonth from '../getDaysInMonth/index.js'\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var month = toInteger(dirtyMonth)\n var year = date.getFullYear()\n var day = date.getDate()\n\n var dateWithDesiredMonth = new Date(0)\n dateWithDesiredMonth.setFullYear(year, month, 15)\n dateWithDesiredMonth.setHours(0, 0, 0, 0)\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth)\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth))\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport setMonth from '../setMonth/index.js'\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} quarter - the quarter of the new date\n * @returns {Date} the new date with the quarter set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * var result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nexport default function setQuarter(dirtyDate, dirtyQuarter) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var quarter = toInteger(dirtyQuarter)\n var oldQuarter = Math.floor(date.getMonth() / 3) + 1\n var diff = quarter - oldQuarter\n return setMonth(date, date.getMonth() + diff * 3)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var seconds = toInteger(dirtySeconds)\n date.setSeconds(seconds)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport getWeek from '../getWeek/index.js'\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} week - the week of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * var result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * var result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport default function setWeek(dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var week = toInteger(dirtyWeek)\n var diff = getWeek(date, dirtyOptions) - week\n date.setDate(date.getDate() - diff * 7)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\nimport startOfWeekYear from '../startOfWeekYear/index.js'\nimport differenceInCalendarDays from '../differenceInCalendarDays/index.js'\n\n/**\n * @name setWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Set the local week-numbering year to the given date.\n *\n * @description\n * Set the local week-numbering year to the given date,\n * saving the week number and the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} weekYear - the local week-numbering year of the new date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the new date with the local week-numbering year set\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010 with default options:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004)\n * //=> Sat Jan 03 2004 00:00:00\n *\n * @example\n * // Set the local week-numbering year 2004 to 2 January 2010,\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = setWeekYear(new Date(2010, 0, 2), 2004, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport default function setWeekYear(dirtyDate, dirtyWeekYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var date = toDate(dirtyDate)\n var weekYear = toInteger(dirtyWeekYear)\n var diff = differenceInCalendarDays(date, startOfWeekYear(date, dirtyOptions))\n var firstWeek = new Date(0)\n firstWeek.setFullYear(weekYear, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n date = startOfWeekYear(firstWeek, dirtyOptions)\n date.setDate(date.getDate() + diff)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = toInteger(dirtyYear)\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfDecade\n * @category Decade Helpers\n * @summary Return the start of a decade for the given date.\n *\n * @description\n * Return the start of a decade for the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a decade\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a decade for 21 October 2015 00:00:00:\n * var result = startOfDecade(new Date(2015, 9, 21, 00, 00, 00))\n * //=> Jan 01 2010 00:00:00\n */\nexport default function startOfDecade(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var year = date.getFullYear()\n var decade = Math.floor(year / 10) * 10\n date.setFullYear(decade, 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * var result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMinutes(0, 0, 0)\n return date\n}\n","import startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * var result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfISOWeek(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return startOfWeek(dirtyDate, { weekStartsOn: 1 })\n}\n","import getISOWeekYear from '../getISOWeekYear/index.js'\nimport startOfISOWeek from '../startOfISOWeek/index.js'\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * var result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfISOWeekYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var year = getISOWeekYear(dirtyDate)\n var fourthOfJanuary = new Date(0)\n fourthOfJanuary.setFullYear(year, 0, 4)\n fourthOfJanuary.setHours(0, 0, 0, 0)\n var date = startOfISOWeek(fourthOfJanuary)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * var result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\nexport default function startOfMinute(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setSeconds(0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setDate(1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * var result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport default function startOfQuarter(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n var currentMonth = date.getMonth()\n var month = currentMonth - (currentMonth % 3)\n date.setMonth(month, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * var result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\nexport default function startOfSecond(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n date.setMilliseconds(0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeWeekStartsOn =\n locale && locale.options && locale.options.weekStartsOn\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn)\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn)\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate)\n var day = date.getDay()\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n\n date.setDate(date.getDate() - diff)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport getWeekYear from '../getWeekYear/index.js'\nimport startOfWeek from '../startOfWeek/index.js'\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#Week_numbering\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @returns {Date} the start of a week-numbering year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * var result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * var result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport default function startOfWeekYear(dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var options = dirtyOptions || {}\n var locale = options.locale\n var localeFirstWeekContainsDate =\n locale && locale.options && locale.options.firstWeekContainsDate\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate)\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate)\n\n var year = getWeekYear(dirtyDate, dirtyOptions)\n var firstWeek = new Date(0)\n firstWeek.setFullYear(year, 0, firstWeekContainsDate)\n firstWeek.setHours(0, 0, 0, 0)\n var date = startOfWeek(firstWeek, dirtyOptions)\n return date\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var cleanDate = toDate(dirtyDate)\n var date = new Date(0)\n date.setFullYear(cleanDate.getFullYear(), 0, 1)\n date.setHours(0, 0, 0, 0)\n return date\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addDays from '../addDays/index.js'\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport default function subDays(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addDays(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addHours from '../addHours/index.js'\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be subtracted\n * @returns {Date} the new date with the hours subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * var result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport default function subHours(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addHours(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addISOWeekYears from '../addISOWeekYears/index.js'\n\n/**\n * @name subISOWeekYears\n * @category ISO Week-Numbering Year Helpers\n * @summary Subtract the specified number of ISO week-numbering years from the given date.\n *\n * @description\n * Subtract the specified number of ISO week-numbering years from the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `subISOYears` to `subISOWeekYears`.\n * \"ISO week year\" is short for [ISO week-numbering year](https://en.wikipedia.org/wiki/ISO_week_date).\n * This change makes the name consistent with\n * locale-dependent week-numbering year helpers, e.g., `setWeekYear`.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of ISO week-numbering years to be subtracted\n * @returns {Date} the new date with the ISO week-numbering years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 ISO week-numbering years from 1 September 2014:\n * var result = subISOWeekYears(new Date(2014, 8, 1), 5)\n * //=> Mon Aug 31 2009 00:00:00\n */\nexport default function subISOWeekYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addISOWeekYears(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMilliseconds from '../addMilliseconds/index.js'\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMilliseconds(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMinutes from '../addMinutes/index.js'\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @returns {Date} the new date with the minutes subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport default function subMinutes(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMinutes(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addMonths from '../addMonths/index.js'\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function subMonths(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addMonths(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addQuarters from '../addQuarters/index.js'\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of quarters to be subtracted\n * @returns {Date} the new date with the quarters subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * var result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport default function subQuarters(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addQuarters(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addSeconds from '../addSeconds/index.js'\n\n/**\n * @name subSeconds\n * @category Second Helpers\n * @summary Subtract the specified number of seconds from the given date.\n *\n * @description\n * Subtract the specified number of seconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be subtracted\n * @returns {Date} the new date with the seconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * var result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport default function subSeconds(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addSeconds(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addWeeks from '../addWeeks/index.js'\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addWeeks(dirtyDate, -amount)\n}\n","import toInteger from '../_lib/toInteger/index.js'\nimport addYears from '../addYears/index.js'\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport default function subYears(dirtyDate, dirtyAmount) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var amount = toInteger(dirtyAmount)\n return addYears(dirtyDate, -amount)\n}\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * var result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * var result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var argStr = Object.prototype.toString.call(argument)\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && argStr === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument)\n } else {\n if (\n (typeof argument === 'string' || argStr === '[object String]') &&\n typeof console !== 'undefined'\n ) {\n console.warn(\n \"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fpAk2\"\n )\n console.warn(new Error().stack)\n }\n return new Date(NaN)\n }\n}\n","'use strict';\n\nvar objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isArray = require('isarray');\nvar isDate = require('is-date-object');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar whichCollection = require('which-collection');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar whichTypedArray = require('which-typed-array');\nvar assign = require('object.assign');\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n var i = getIterator(set);\n var result;\n while ((result = i.next()) && !result.done) {\n if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n // Remove the matching element to make sure we do not check that again.\n $setDelete(set, result.value);\n return true;\n }\n }\n\n return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n if (typeof prim === 'undefined') {\n return null;\n }\n if (typeof prim === 'object') { // Only pass in null as object!\n return void 0;\n }\n if (typeof prim === 'symbol') {\n return false;\n }\n if (typeof prim === 'string' || typeof prim === 'number') {\n // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n return +prim === +prim; // eslint-disable-line no-implicit-coercion\n }\n return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = $mapGet(b, altValue);\n var looseOpts = assign({}, opts, { strict: false });\n if (\n (typeof curB === 'undefined' && !$mapHas(b, altValue))\n // eslint-disable-next-line no-use-before-define\n || !internalDeepEqual(item, curB, looseOpts, channel)\n ) {\n return false;\n }\n // eslint-disable-next-line no-use-before-define\n return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n\n return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n var i = getIterator(set);\n var result;\n var key2;\n while ((result = i.next()) && !result.done) {\n key2 = result.value;\n if (\n // eslint-disable-next-line no-use-before-define\n internalDeepEqual(key1, key2, opts, channel)\n // eslint-disable-next-line no-use-before-define\n && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n ) {\n $setDelete(set, key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n var actualBoxed = whichBoxedPrimitive(actual);\n var expectedBoxed = whichBoxedPrimitive(expected);\n if (actualBoxed !== expectedBoxed) {\n return false;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n var hasActual = channel.has(actual);\n var hasExpected = channel.has(expected);\n var sentinel;\n if (hasActual && hasExpected) {\n if (channel.get(actual) === channel.get(expected)) {\n return true;\n }\n } else {\n sentinel = {};\n }\n if (!hasActual) { channel.set(actual, sentinel); }\n if (!hasExpected) { channel.set(expected, sentinel); }\n\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n\n return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n if ($setSize(a) !== $setSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n while ((resultA = iA.next()) && !resultA.done) {\n if (resultA.value && typeof resultA.value === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n } else if (!$setHas(b, resultA.value)) {\n if (opts.strict) { return false; }\n if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, resultA.value);\n }\n }\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n if (resultB.value && typeof resultB.value === 'object') {\n if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && !$setHas(a, resultB.value)\n && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n if ($mapSize(a) !== $mapSize(b)) {\n return false;\n }\n var iA = getIterator(a);\n var iB = getIterator(b);\n var resultA;\n var resultB;\n var set;\n var key;\n var item1;\n var item2;\n while ((resultA = iA.next()) && !resultA.done) {\n key = resultA.value[0];\n item1 = resultA.value[1];\n if (key && typeof key === 'object') {\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n } else {\n item2 = $mapGet(b, key);\n if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n if (opts.strict) {\n return false;\n }\n if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n return false;\n }\n if (!set) { set = new $Set(); }\n $setAdd(set, key);\n }\n }\n }\n\n if (set) {\n while ((resultB = iB.next()) && !resultB.done) {\n key = resultB.value[0];\n item2 = resultB.value[1];\n if (key && typeof key === 'object') {\n if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n return false;\n }\n } else if (\n !opts.strict\n && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n ) {\n return false;\n }\n }\n return $setSize(set) === 0;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5] */\n var i, key;\n\n if (typeof a !== typeof b) { return false; }\n if (a == null || b == null) { return false; }\n\n if ($objToString(a) !== $objToString(b)) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsArray = isArray(a);\n var bIsArray = isArray(b);\n if (aIsArray !== bIsArray) { return false; }\n\n // TODO: replace when a cross-realm brand check is available\n var aIsError = a instanceof Error;\n var bIsError = b instanceof Error;\n if (aIsError !== bIsError) { return false; }\n if (aIsError || bIsError) {\n if (a.name !== b.name || a.message !== b.message) { return false; }\n }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n return false;\n }\n\n var aIsDate = isDate(a);\n var bIsDate = isDate(b);\n if (aIsDate !== bIsDate) { return false; }\n if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n if ($getTime(a) !== $getTime(b)) { return false; }\n }\n if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n if (whichTypedArray(a) !== whichTypedArray(b)) {\n return false;\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n }\n\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n }\n\n var aCollection = whichCollection(a);\n var bCollection = whichCollection(b);\n if (aCollection !== bCollection) {\n return false;\n }\n if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n return setEquiv(a, b, opts, channel);\n }\n if (aCollection === 'Map') { // aCollection === bCollection\n return mapEquiv(a, b, opts, channel);\n }\n\n return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n return internalDeepEqual(a, b, opts, getSideChannel());\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\nvar $species = GetIntrinsic('%Symbol.species%', true);\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar IsArray = require('./IsArray');\nvar IsConstructor = require('./IsConstructor');\nvar IsInteger = require('./IsInteger');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate\n\nmodule.exports = function ArraySpeciesCreate(originalArray, length) {\n\tif (!IsInteger(length) || length < 0) {\n\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0');\n\t}\n\tvar len = length === 0 ? 0 : length;\n\tvar C;\n\tvar isArray = IsArray(originalArray);\n\tif (isArray) {\n\t\tC = Get(originalArray, 'constructor');\n\t\t// TODO: figure out how to make a cross-realm normal Array, a same-realm Array\n\t\t// if (IsConstructor(C)) {\n\t\t// \tif C is another realm's Array, C = undefined\n\t\t// \tObject.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?\n\t\t// }\n\t\tif ($species && Type(C) === 'Object') {\n\t\t\tC = Get(C, $species);\n\t\t\tif (C === null) {\n\t\t\t\tC = void 0;\n\t\t\t}\n\t\t}\n\t}\n\tif (typeof C === 'undefined') {\n\t\treturn $Array(len);\n\t}\n\tif (!IsConstructor(C)) {\n\t\tthrow new $TypeError('C must be a constructor');\n\t}\n\treturn new C(len); // Construct(C, len);\n};\n\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsArray = require('./IsArray');\n\nvar $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-call\n\nmodule.exports = function Call(F, V) {\n\tvar argumentsList = arguments.length > 2 ? arguments[2] : [];\n\tif (!IsArray(argumentsList)) {\n\t\tthrow new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');\n\t}\n\treturn $apply(F, V, argumentsList);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsExtensible = require('./IsExtensible');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty\n\nmodule.exports = function CreateDataProperty(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar oldDesc = OrdinaryGetOwnProperty(O, P);\n\tvar extensible = !oldDesc || IsExtensible(O);\n\tvar immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']);\n\tif (immutable || !extensible) {\n\t\treturn false;\n\t}\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\t{\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Value]]': V,\n\t\t\t'[[Writable]]': true\n\t\t}\n\t);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar CreateDataProperty = require('./CreateDataProperty');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow\n\nmodule.exports = function CreateDataPropertyOrThrow(O, P, V) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\tvar success = CreateDataProperty(O, P, V);\n\tif (!success) {\n\t\tthrow new $TypeError('unable to create data property');\n\t}\n\treturn success;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar isPropertyDescriptor = require('../helpers/isPropertyDescriptor');\nvar DefineOwnProperty = require('../helpers/DefineOwnProperty');\n\nvar FromPropertyDescriptor = require('./FromPropertyDescriptor');\nvar IsAccessorDescriptor = require('./IsAccessorDescriptor');\nvar IsDataDescriptor = require('./IsDataDescriptor');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar SameValue = require('./SameValue');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow\n\nmodule.exports = function DefinePropertyOrThrow(O, P, desc) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t}\n\n\tvar Desc = isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, desc) ? desc : ToPropertyDescriptor(desc);\n\tif (!isPropertyDescriptor({\n\t\tType: Type,\n\t\tIsDataDescriptor: IsDataDescriptor,\n\t\tIsAccessorDescriptor: IsAccessorDescriptor\n\t}, Desc)) {\n\t\tthrow new $TypeError('Assertion failed: Desc is not a valid Property Descriptor');\n\t}\n\n\treturn DefineOwnProperty(\n\t\tIsDataDescriptor,\n\t\tSameValue,\n\t\tFromPropertyDescriptor,\n\t\tO,\n\t\tP,\n\t\tDesc\n\t);\n};\n","'use strict';\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor\n\nmodule.exports = function FromPropertyDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn Desc;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tvar obj = {};\n\tif ('[[Value]]' in Desc) {\n\t\tobj.value = Desc['[[Value]]'];\n\t}\n\tif ('[[Writable]]' in Desc) {\n\t\tobj.writable = Desc['[[Writable]]'];\n\t}\n\tif ('[[Get]]' in Desc) {\n\t\tobj.get = Desc['[[Get]]'];\n\t}\n\tif ('[[Set]]' in Desc) {\n\t\tobj.set = Desc['[[Set]]'];\n\t}\n\tif ('[[Enumerable]]' in Desc) {\n\t\tobj.enumerable = Desc['[[Enumerable]]'];\n\t}\n\tif ('[[Configurable]]' in Desc) {\n\t\tobj.configurable = Desc['[[Configurable]]'];\n\t}\n\treturn obj;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = require('object-inspect');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n/**\n * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p\n * 1. Assert: Type(O) is Object.\n * 2. Assert: IsPropertyKey(P) is true.\n * 3. Return O.[[Get]](P, O).\n */\n\nmodule.exports = function Get(O, P) {\n\t// 7.3.1.1\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\t// 7.3.1.2\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\t// 7.3.1.3\n\treturn O[P];\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\nmodule.exports = function HasProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `O` must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: `P` must be a Property Key');\n\t}\n\treturn P in O;\n};\n","'use strict';\n\nvar has = require('has');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor\n\nmodule.exports = function IsAccessorDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isarray\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = require('is-callable');\n","'use strict';\n\nvar GetIntrinsic = require('../GetIntrinsic.js');\n\nvar $construct = GetIntrinsic('%Reflect.construct%', true);\n\nvar DefinePropertyOrThrow = require('./DefinePropertyOrThrow');\ntry {\n\tDefinePropertyOrThrow({}, '', { '[[Get]]': function () {} });\n} catch (e) {\n\t// Accessor properties aren't supported\n\tDefinePropertyOrThrow = null;\n}\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isconstructor\n\nif (DefinePropertyOrThrow && $construct) {\n\tvar isConstructorMarker = {};\n\tvar badArrayLike = {};\n\tDefinePropertyOrThrow(badArrayLike, 'length', {\n\t\t'[[Get]]': function () {\n\t\t\tthrow isConstructorMarker;\n\t\t},\n\t\t'[[Enumerable]]': true\n\t});\n\n\tmodule.exports = function IsConstructor(argument) {\n\t\ttry {\n\t\t\t// `Reflect.construct` invokes `IsConstructor(target)` before `Get(args, 'length')`:\n\t\t\t$construct(argument, badArrayLike);\n\t\t} catch (err) {\n\t\t\treturn err === isConstructorMarker;\n\t\t}\n\t};\n} else {\n\tmodule.exports = function IsConstructor(argument) {\n\t\t// unfortunately there's no way to truly check this without try/catch `new argument` in old environments\n\t\treturn typeof argument === 'function' && !!argument.prototype;\n\t};\n}\n","'use strict';\n\nvar has = require('has');\n\nvar assertRecord = require('../helpers/assertRecord');\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor\n\nmodule.exports = function IsDataDescriptor(Desc) {\n\tif (typeof Desc === 'undefined') {\n\t\treturn false;\n\t}\n\n\tassertRecord(Type, 'Property Descriptor', 'Desc', Desc);\n\n\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar $preventExtensions = $Object.preventExtensions;\nvar $isExtensible = $Object.isExtensible;\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o\n\nmodule.exports = $preventExtensions\n\t? function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj) && $isExtensible(obj);\n\t}\n\t: function IsExtensible(obj) {\n\t\treturn !isPrimitive(obj);\n\t};\n","'use strict';\n\nvar abs = require('./abs');\nvar floor = require('./floor');\n\nvar $isNaN = require('../helpers/isNaN');\nvar $isFinite = require('../helpers/isFinite');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isinteger\n\nmodule.exports = function IsInteger(argument) {\n\tif (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {\n\t\treturn false;\n\t}\n\tvar absValue = abs(argument);\n\treturn floor(absValue) === absValue;\n};\n","'use strict';\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $match = GetIntrinsic('%Symbol.match%', true);\n\nvar hasRegExpMatcher = require('is-regex');\n\nvar ToBoolean = require('./ToBoolean');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isregexp\n\nmodule.exports = function IsRegExp(argument) {\n\tif (!argument || typeof argument !== 'object') {\n\t\treturn false;\n\t}\n\tif ($match) {\n\t\tvar isRegExp = argument[$match];\n\t\tif (typeof isRegExp !== 'undefined') {\n\t\t\treturn ToBoolean(isRegExp);\n\t\t}\n\t}\n\treturn hasRegExpMatcher(argument);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar ToLength = require('./ToLength');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/11.0/#sec-lengthofarraylike\n\nmodule.exports = function LengthOfArrayLike(obj) {\n\tif (Type(obj) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `obj` must be an Object');\n\t}\n\treturn ToLength(Get(obj, 'length'));\n};\n\n// TODO: use this all over\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = require('../helpers/getOwnPropertyDescriptor');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\nvar has = require('has');\n\nvar IsArray = require('./IsArray');\nvar IsPropertyKey = require('./IsPropertyKey');\nvar IsRegExp = require('./IsRegExp');\nvar ToPropertyDescriptor = require('./ToPropertyDescriptor');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty\n\nmodule.exports = function OrdinaryGetOwnProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: O must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: P must be a Property Key');\n\t}\n\tif (!has(O, P)) {\n\t\treturn void 0;\n\t}\n\tif (!$gOPD) {\n\t\t// ES3 / IE 8 fallback\n\t\tvar arrayLength = IsArray(O) && P === 'length';\n\t\tvar regexLastIndex = IsRegExp(O) && P === 'lastIndex';\n\t\treturn {\n\t\t\t'[[Configurable]]': !(arrayLength || regexLastIndex),\n\t\t\t'[[Enumerable]]': $isEnumerable(O, P),\n\t\t\t'[[Value]]': O[P],\n\t\t\t'[[Writable]]': true\n\t\t};\n\t}\n\treturn ToPropertyDescriptor($gOPD(O, P));\n};\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar $isNaN = require('../helpers/isNaN');\n\n// http://262.ecma-international.org/5.1/#sec-9.12\n\nmodule.exports = function SameValue(x, y) {\n\tif (x === y) { // 0 === -0, but they are not identical.\n\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\treturn true;\n\t}\n\treturn $isNaN(x) && $isNaN(y);\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.2\n\nmodule.exports = function ToBoolean(value) { return !!value; };\n","'use strict';\n\nvar ES5ToInteger = require('../5/ToInteger');\n\nvar ToNumber = require('./ToNumber');\n\n// https://262.ecma-international.org/11.0/#sec-tointeger\n\nmodule.exports = function ToInteger(value) {\n\tvar number = ToNumber(value);\n\tif (number !== 0) {\n\t\tnumber = ES5ToInteger(number);\n\t}\n\treturn number === 0 ? 0 : number;\n};\n","'use strict';\n\nvar MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');\n\nvar ToInteger = require('./ToInteger');\n\nmodule.exports = function ToLength(argument) {\n\tvar len = ToInteger(argument);\n\tif (len <= 0) { return 0; } // includes converting -0 to +0\n\tif (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }\n\treturn len;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $Number = GetIntrinsic('%Number%');\nvar $RegExp = GetIntrinsic('%RegExp%');\nvar $parseInteger = GetIntrinsic('%parseInt%');\n\nvar callBound = require('call-bind/callBound');\nvar regexTester = require('../helpers/regexTester');\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar $strSlice = callBound('String.prototype.slice');\nvar isBinary = regexTester(/^0b[01]+$/i);\nvar isOctal = regexTester(/^0o[0-7]+$/i);\nvar isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new $RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = regexTester(nonWSregex);\n\n// whitespace from: https://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar $replace = callBound('String.prototype.replace');\nvar $trim = function (value) {\n\treturn $replace(value, trimRegex, '');\n};\n\nvar ToPrimitive = require('./ToPrimitive');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tonumber\n\nmodule.exports = function ToNumber(argument) {\n\tvar value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);\n\tif (typeof value === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a number');\n\t}\n\tif (typeof value === 'string') {\n\t\tif (isBinary(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 2));\n\t\t} else if (isOctal(value)) {\n\t\t\treturn ToNumber($parseInteger($strSlice(value, 2), 8));\n\t\t} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {\n\t\t\treturn NaN;\n\t\t} else {\n\t\t\tvar trimmed = $trim(value);\n\t\t\tif (trimmed !== value) {\n\t\t\t\treturn ToNumber(trimmed);\n\t\t\t}\n\t\t}\n\t}\n\treturn $Number(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar RequireObjectCoercible = require('./RequireObjectCoercible');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toobject\n\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n","'use strict';\n\nvar toPrimitive = require('es-to-primitive/es2015');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive\n\nmodule.exports = function ToPrimitive(input) {\n\tif (arguments.length > 1) {\n\t\treturn toPrimitive(input, arguments[1]);\n\t}\n\treturn toPrimitive(input);\n};\n","'use strict';\n\nvar has = require('has');\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Type = require('./Type');\nvar ToBoolean = require('./ToBoolean');\nvar IsCallable = require('./IsCallable');\n\n// https://262.ecma-international.org/5.1/#sec-8.10.5\n\nmodule.exports = function ToPropertyDescriptor(Obj) {\n\tif (Type(Obj) !== 'Object') {\n\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t}\n\n\tvar desc = {};\n\tif (has(Obj, 'enumerable')) {\n\t\tdesc['[[Enumerable]]'] = ToBoolean(Obj.enumerable);\n\t}\n\tif (has(Obj, 'configurable')) {\n\t\tdesc['[[Configurable]]'] = ToBoolean(Obj.configurable);\n\t}\n\tif (has(Obj, 'value')) {\n\t\tdesc['[[Value]]'] = Obj.value;\n\t}\n\tif (has(Obj, 'writable')) {\n\t\tdesc['[[Writable]]'] = ToBoolean(Obj.writable);\n\t}\n\tif (has(Obj, 'get')) {\n\t\tvar getter = Obj.get;\n\t\tif (typeof getter !== 'undefined' && !IsCallable(getter)) {\n\t\t\tthrow new $TypeError('getter must be a function');\n\t\t}\n\t\tdesc['[[Get]]'] = getter;\n\t}\n\tif (has(Obj, 'set')) {\n\t\tvar setter = Obj.set;\n\t\tif (typeof setter !== 'undefined' && !IsCallable(setter)) {\n\t\t\tthrow new $TypeError('setter must be a function');\n\t\t}\n\t\tdesc['[[Set]]'] = setter;\n\t}\n\n\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t}\n\treturn desc;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $String = GetIntrinsic('%String%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tostring\n\nmodule.exports = function ToString(argument) {\n\tif (typeof argument === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a string');\n\t}\n\treturn $String(argument);\n};\n","'use strict';\n\nvar ES5Type = require('../5/Type');\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $abs = GetIntrinsic('%Math.abs%');\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function abs(x) {\n\treturn $abs(x);\n};\n","'use strict';\n\n// var modulo = require('./modulo');\nvar $floor = Math.floor;\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function floor(x) {\n\t// return x - modulo(x, 1);\n\treturn $floor(x);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar abs = require('./abs');\nvar floor = require('./floor');\nvar ToNumber = require('./ToNumber');\n\nvar $isNaN = require('../helpers/isNaN');\nvar $isFinite = require('../helpers/isFinite');\nvar $sign = require('../helpers/sign');\n\n// http://262.ecma-international.org/5.1/#sec-9.4\n\nmodule.exports = function ToInteger(value) {\n\tvar number = ToNumber(value);\n\tif ($isNaN(number)) { return 0; }\n\tif (number === 0 || !$isFinite(number)) { return number; }\n\treturn $sign(number) * floor(abs(number));\n};\n","'use strict';\n\nvar ToPrimitive = require('./ToPrimitive');\n\n// http://262.ecma-international.org/5.1/#sec-9.3\n\nmodule.exports = function ToNumber(value) {\n\tvar prim = ToPrimitive(value, Number);\n\tif (typeof prim !== 'string') {\n\t\treturn +prim; // eslint-disable-line no-implicit-coercion\n\t}\n\n\t// eslint-disable-next-line no-control-regex\n\tvar trimmed = prim.replace(/^[ \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u0085]+|[ \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u0085]+$/g, '');\n\tif ((/^0[ob]|^[+-]0x/).test(trimmed)) {\n\t\treturn NaN;\n\t}\n\n\treturn +trimmed; // eslint-disable-line no-implicit-coercion\n};\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.1\n\nmodule.exports = require('es-to-primitive/es5');\n","'use strict';\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $abs = GetIntrinsic('%Math.abs%');\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function abs(x) {\n\treturn $abs(x);\n};\n","'use strict';\n\n// var modulo = require('./modulo');\nvar $floor = Math.floor;\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function floor(x) {\n\t// return x - modulo(x, 1);\n\treturn $floor(x);\n};\n","'use strict';\n\n// TODO: remove, semver-major\n\nmodule.exports = require('get-intrinsic');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nvar callBound = require('call-bind/callBound');\n\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\n\n// eslint-disable-next-line max-params\nmodule.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {\n\tif (!$defineProperty) {\n\t\tif (!IsDataDescriptor(desc)) {\n\t\t\t// ES3 does not support getters/setters\n\t\t\treturn false;\n\t\t}\n\t\tif (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// fallback for ES3\n\t\tif (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {\n\t\t\t// a non-enumerable existing property\n\t\t\treturn false;\n\t\t}\n\n\t\t// property does not exist at all, or exists but is enumerable\n\t\tvar V = desc['[[Value]]'];\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tO[P] = V; // will use [[Define]]\n\t\treturn SameValue(O[P], V);\n\t}\n\t$defineProperty(O, P, FromPropertyDescriptor(desc));\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\n\nvar has = require('has');\n\nvar predicates = {\n\t// https://262.ecma-international.org/6.0/#sec-property-descriptor-specification-type\n\t'Property Descriptor': function isPropertyDescriptor(Type, Desc) {\n\t\tif (Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t}\n};\n\nmodule.exports = function assertRecord(Type, recordType, argumentName, value) {\n\tvar predicate = predicates[recordType];\n\tif (typeof predicate !== 'function') {\n\t\tthrow new $SyntaxError('unknown record type: ' + recordType);\n\t}\n\tif (!predicate(Type, value)) {\n\t\tthrow new $TypeError(argumentName + ' must be a ' + recordType);\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%');\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar has = require('has');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nmodule.exports = function IsPropertyDescriptor(ES, Desc) {\n\tif (ES.Type(Desc) !== 'Object') {\n\t\treturn false;\n\t}\n\tvar allowed = {\n\t\t'[[Configurable]]': true,\n\t\t'[[Enumerable]]': true,\n\t\t'[[Get]]': true,\n\t\t'[[Set]]': true,\n\t\t'[[Value]]': true,\n\t\t'[[Writable]]': true\n\t};\n\n\tfor (var key in Desc) { // eslint-disable-line no-restricted-syntax\n\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) {\n\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t}\n\treturn true;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Math = GetIntrinsic('%Math%');\nvar $Number = GetIntrinsic('%Number%');\n\nmodule.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $test = GetIntrinsic('RegExp.prototype.test');\n\nvar callBind = require('call-bind');\n\nmodule.exports = function regexTester(regex) {\n\treturn callBind($test, regex);\n};\n","'use strict';\n\nmodule.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n","module.exports = function properlyBoxed(method) {\n\t// Check node 0.6.21 bug where third parameter is not boxed\n\tvar properlyBoxesNonStrict = true;\n\tvar properlyBoxesStrict = true;\n\tvar threwException = false;\n\tif (typeof method === 'function') {\n\t\ttry {\n\t\t\t// eslint-disable-next-line max-params\n\t\t\tmethod.call('f', function (_, __, O) {\n\t\t\t\tif (typeof O !== 'object') {\n\t\t\t\t\tproperlyBoxesNonStrict = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmethod.call(\n\t\t\t\t[null],\n\t\t\t\tfunction () {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tproperlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this\n\t\t\t\t},\n\t\t\t\t'x'\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tthrewException = true;\n\t\t}\n\t\treturn !threwException && properlyBoxesNonStrict && properlyBoxesStrict;\n\t}\n\treturn false;\n};\n","'use strict';\n\n/* eslint global-require: 0 */\n// the code is structured this way so that bundlers can\n// alias out `has-symbols` to `() => true` or `() => false` if your target\n// environments' Symbol capabilities are known, and then use\n// dead code elimination on the rest of this module.\n//\n// Similarly, `isarray` can be aliased to `Array.isArray` if\n// available in all target environments.\n\nvar isArguments = require('is-arguments');\n\nif (require('has-symbols')() || require('has-symbols/shams')()) {\n\tvar $iterator = Symbol.iterator;\n\t// Symbol is available natively or shammed\n\t// natively:\n\t// - Chrome >= 38\n\t// - Edge 12-14?, Edge >= 15 for sure\n\t// - FF >= 36\n\t// - Safari >= 9\n\t// - node >= 0.12\n\tmodule.exports = function getIterator(iterable) {\n\t\t// alternatively, `iterable[$iterator]?.()`\n\t\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\t\treturn iterable[$iterator]();\n\t\t}\n\t\tif (isArguments(iterable)) {\n\t\t\t// arguments objects lack Symbol.iterator\n\t\t\t// - node 0.12\n\t\t\treturn Array.prototype[$iterator].call(iterable);\n\t\t}\n\t};\n} else {\n\t// Symbol is not available, native or shammed\n\tvar isArray = require('isarray');\n\tvar isString = require('is-string');\n\tvar GetIntrinsic = require('get-intrinsic');\n\tvar $Map = GetIntrinsic('%Map%', true);\n\tvar $Set = GetIntrinsic('%Set%', true);\n\tvar callBound = require('call-bind/callBound');\n\tvar $arrayPush = callBound('Array.prototype.push');\n\tvar $charCodeAt = callBound('String.prototype.charCodeAt');\n\tvar $stringSlice = callBound('String.prototype.slice');\n\n\tvar advanceStringIndex = function advanceStringIndex(S, index) {\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t};\n\n\tvar getArrayIterator = function getArrayIterator(arraylike) {\n\t\tvar i = 0;\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tvar done = i >= arraylike.length;\n\t\t\t\tvar value;\n\t\t\t\tif (!done) {\n\t\t\t\t\tvalue = arraylike[i];\n\t\t\t\t\ti += 1;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: done,\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t};\n\n\tvar getNonCollectionIterator = function getNonCollectionIterator(iterable, noPrimordialCollections) {\n\t\tif (isArray(iterable) || isArguments(iterable)) {\n\t\t\treturn getArrayIterator(iterable);\n\t\t}\n\t\tif (isString(iterable)) {\n\t\t\tvar i = 0;\n\t\t\treturn {\n\t\t\t\tnext: function next() {\n\t\t\t\t\tvar nextIndex = advanceStringIndex(iterable, i);\n\t\t\t\t\tvar value = $stringSlice(iterable, i, nextIndex);\n\t\t\t\t\ti = nextIndex;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: nextIndex > iterable.length,\n\t\t\t\t\t\tvalue: value\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t// es6-shim and es-shims' es-map use a string \"_es6-shim iterator_\" property on different iterables, such as MapIterator.\n\t\tif (noPrimordialCollections && typeof iterable['_es6-shim iterator_'] !== 'undefined') {\n\t\t\treturn iterable['_es6-shim iterator_']();\n\t\t}\n\t};\n\n\tif (!$Map && !$Set) {\n\t\t// the only language iterables are Array, String, arguments\n\t\t// - Safari <= 6.0\n\t\t// - Chrome < 38\n\t\t// - node < 0.12\n\t\t// - FF < 13\n\t\t// - IE < 11\n\t\t// - Edge < 11\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\tif (iterable != null) {\n\t\t\t\treturn getNonCollectionIterator(iterable, true);\n\t\t\t}\n\t\t};\n\t} else {\n\t\t// either Map or Set are available, but Symbol is not\n\t\t// - es6-shim on an ES5 browser\n\t\t// - Safari 6.2 (maybe 6.1?)\n\t\t// - FF v[13, 36)\n\t\t// - IE 11\n\t\t// - Edge 11\n\t\t// - Safari v[6, 9)\n\n\t\tvar isMap = require('is-map');\n\t\tvar isSet = require('is-set');\n\n\t\t// Firefox >= 27, IE 11, Safari 6.2 - 9, Edge 11, es6-shim in older envs, all have forEach\n\t\tvar $mapForEach = callBound('Map.prototype.forEach', true);\n\t\tvar $setForEach = callBound('Set.prototype.forEach', true);\n\t\tif (typeof process === 'undefined' || !process.versions || !process.versions.node) { // \"if is not node\"\n\n\t\t\t// Firefox 17 - 26 has `.iterator()`, whose iterator `.next()` either\n\t\t\t// returns a value, or throws a StopIteration object. These browsers\n\t\t\t// do not have any other mechanism for iteration.\n\t\t\tvar $mapIterator = callBound('Map.prototype.iterator', true);\n\t\t\tvar $setIterator = callBound('Set.prototype.iterator', true);\n\t\t\tvar getStopIterationIterator = function (iterator) {\n\t\t\t\tvar done = false;\n\t\t\t\treturn {\n\t\t\t\t\tnext: function next() {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: done,\n\t\t\t\t\t\t\t\tvalue: done ? undefined : iterator.next()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tdone: true,\n\t\t\t\t\t\t\t\tvalue: undefined\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\t\t// Firefox 27-35, and some older es6-shim versions, use a string \"@@iterator\" property\n\t\t// this returns a proper iterator object, so we should use it instead of forEach.\n\t\t// newer es6-shim versions use a string \"_es6-shim iterator_\" property.\n\t\tvar $mapAtAtIterator = callBound('Map.prototype.@@iterator', true) || callBound('Map.prototype._es6-shim iterator_', true);\n\t\tvar $setAtAtIterator = callBound('Set.prototype.@@iterator', true) || callBound('Set.prototype._es6-shim iterator_', true);\n\n\t\tvar getCollectionIterator = function getCollectionIterator(iterable) {\n\t\t\tif (isMap(iterable)) {\n\t\t\t\tif ($mapIterator) {\n\t\t\t\t\treturn getStopIterationIterator($mapIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($mapAtAtIterator) {\n\t\t\t\t\treturn $mapAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($mapForEach) {\n\t\t\t\t\tvar entries = [];\n\t\t\t\t\t$mapForEach(iterable, function (v, k) {\n\t\t\t\t\t\t$arrayPush(entries, [k, v]);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(entries);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isSet(iterable)) {\n\t\t\t\tif ($setIterator) {\n\t\t\t\t\treturn getStopIterationIterator($setIterator(iterable));\n\t\t\t\t}\n\t\t\t\tif ($setAtAtIterator) {\n\t\t\t\t\treturn $setAtAtIterator(iterable);\n\t\t\t\t}\n\t\t\t\tif ($setForEach) {\n\t\t\t\t\tvar values = [];\n\t\t\t\t\t$setForEach(iterable, function (v) {\n\t\t\t\t\t\t$arrayPush(values, v);\n\t\t\t\t\t});\n\t\t\t\t\treturn getArrayIterator(values);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tmodule.exports = function getIterator(iterable) {\n\t\t\treturn getCollectionIterator(iterable) || getNonCollectionIterator(iterable);\n\t\t};\n\t}\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = require('./helpers/isPrimitive');\nvar isCallable = require('is-callable');\nvar isDate = require('is-date-object');\nvar isSymbol = require('is-symbol');\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var f=a[e];if(b.call(c,f,e,a))return{i:e,v:f}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;\n$jscomp.defineProperty=$jscomp.ASSUME_ES5||\"function\"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)};$jscomp.getGlobal=function(a){return\"undefined\"!=typeof window&&window===a?a:\"undefined\"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);\n$jscomp.polyfill=function(a,b,c,d){if(b){c=$jscomp.global;a=a.split(\".\");for(d=0;d<a.length-1;d++){var e=a[d];e in c||(c[e]={});c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&$jscomp.defineProperty(c,a,{configurable:!0,writable:!0,value:b})}};$jscomp.polyfill(\"Array.prototype.findIndex\",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).i}},\"es6\",\"es3\");\n$jscomp.checkStringArgs=function(a,b,c){if(null==a)throw new TypeError(\"The 'this' value for String.prototype.\"+c+\" must not be null or undefined\");if(b instanceof RegExp)throw new TypeError(\"First argument to String.prototype.\"+c+\" must not be a regular expression\");return a+\"\"};\n$jscomp.polyfill(\"String.prototype.endsWith\",function(a){return a?a:function(a,c){var b=$jscomp.checkStringArgs(this,a,\"endsWith\");a+=\"\";void 0===c&&(c=b.length);c=Math.max(0,Math.min(c|0,b.length));for(var e=a.length;0<e&&0<c;)if(b[--c]!=a[--e])return!1;return 0>=e}},\"es6\",\"es3\");$jscomp.polyfill(\"Array.prototype.find\",function(a){return a?a:function(a,c){return $jscomp.findInternal(this,a,c).v}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.startsWith\",function(a){return a?a:function(a,c){var b=$jscomp.checkStringArgs(this,a,\"startsWith\");a+=\"\";var e=b.length,f=a.length;c=Math.max(0,Math.min(c|0,b.length));for(var g=0;g<f&&c<e;)if(b[c++]!=a[g++])return!1;return g>=f}},\"es6\",\"es3\");\n$jscomp.polyfill(\"String.prototype.repeat\",function(a){return a?a:function(a){var b=$jscomp.checkStringArgs(this,null,\"repeat\");if(0>a||1342177279<a)throw new RangeError(\"Invalid count value\");a|=0;for(var d=\"\";a;)if(a&1&&(d+=b),a>>>=1)b+=b;return d}},\"es6\",\"es3\");var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.isDef=function(a){return void 0!==a};goog.isString=function(a){return\"string\"==typeof a};goog.isBoolean=function(a){return\"boolean\"==typeof a};\ngoog.isNumber=function(a){return\"number\"==typeof a};goog.exportPath_=function(a,b,c){a=a.split(\".\");c=c||goog.global;a[0]in c||\"undefined\"==typeof c.execScript||c.execScript(\"var \"+a[0]);for(var d;a.length&&(d=a.shift());)!a.length&&goog.isDef(b)?c[d]=b:c=c[d]&&c[d]!==Object.prototype[d]?c[d]:c[d]={}};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2012;goog.DEBUG=!0;goog.LOCALE=\"en\";goog.TRUSTED_SITE=!0;goog.STRICT_MODE_COMPATIBLE=!1;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.provide cannot be used within a module.\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var c=a;(c=c.substring(0,c.lastIndexOf(\".\")))&&!goog.getObjectByName(c);)goog.implicitNamespaces_[c]=!0}goog.exportPath_(a,b)};\ngoog.getScriptNonce=function(a){if(a&&a!=goog.global)return goog.getScriptNonce_(a.document);null===goog.cspNonce_&&(goog.cspNonce_=goog.getScriptNonce_(goog.global.document));return goog.cspNonce_};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.cspNonce_=null;goog.getScriptNonce_=function(a){return(a=a.querySelector&&a.querySelector(\"script[nonce]\"))&&(a=a.nonce||a.getAttribute(\"nonce\"))&&goog.NONCE_PATTERN_.test(a)?a:\"\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if(!goog.isString(a)||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\"Invalid module identifier\");if(!goog.isInGoogModuleLoader_())throw Error(\"Module \"+a+\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\");\nif(goog.moduleLoaderState_.moduleName)throw Error(\"goog.module may only be called once per module.\");goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \"'+a+'\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};\ngoog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\"es6\",GOOG:\"goog\"};goog.moduleLoaderState_=null;goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};\ngoog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\"function\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\"goog.module.declareLegacyNamespace must be called from within a goog.module\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\"goog.module must be called prior to goog.module.declareLegacyNamespace.\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\"goog.declareModuleId may only be called from within an ES6 module\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\"goog.declareModuleId may only be called once per module.\");if(a in goog.loadedModules_)throw Error('Module with namespace \"'+a+'\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\"function\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \"'+\na+'\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\"\",Error(\"Importing test-only code into non-debug environment\"+(a?\": \"+a:\".\"));};goog.forwardDeclare=function(a){};\nCOMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&goog.isDefAndNotNull(goog.getObjectByName(a))},goog.implicitNamespaces_={\"goog.module\":!0});goog.getObjectByName=function(a,b){a=a.split(\".\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],!goog.isDefAndNotNull(b))return null;return b};goog.globalize=function(a,b){b=b||goog.global;for(var c in a)b[c]=a[c]};\ngoog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\"\";goog.nullFunction=function(){};\ngoog.abstractMethod=function(){throw Error(\"unimplemented abstract method\");};goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\"detect\";\ngoog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRANSPILE_TO_LANGUAGE=\"\";goog.TRANSPILER=\"transpile.js\";goog.hasBadLetScoping=null;goog.useSafari10Workaround=function(){if(null==goog.hasBadLetScoping){try{var a=!eval('\"use strict\";let x = 1; function f() { return typeof x; };f() == \"number\";')}catch(b){a=!1}goog.hasBadLetScoping=a}return goog.hasBadLetScoping};goog.workaroundSafari10EvalBug=function(a){return\"(function(){\"+a+\"\\n;})();\\n\"};\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\"\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};if(goog.isFunction(a))var c=a.call(void 0,{});else if(goog.isString(a))goog.useSafari10Workaround()&&(a=goog.workaroundSafari10EvalBug(a)),c=goog.loadModuleFromSource_.call(void 0,a);else throw Error(\"Invalid module definition\");var d=goog.moduleLoaderState_.moduleName;if(goog.isString(d)&&d)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(d,\nc):goog.SEAL_MODULE_EXPORTS&&Object.seal&&\"object\"==typeof c&&null!=c&&Object.seal(c),goog.loadedModules_[d]={exports:c,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \"'+d+'\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a){eval(a);return{}};goog.normalizePath_=function(a){a=a.split(\"/\");for(var b=0;b<a.length;)\".\"==a[b]?a.splice(b,1):b&&\"..\"==a[b]&&a[b-1]&&\"..\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\"/\")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\"get\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};\ngoog.transpile_=function(a,b,c){var d=goog.global.$jscomp;d||(goog.global.$jscomp=d={});var e=d.transpile;if(!e){var f=goog.basePath+goog.TRANSPILER,g=goog.loadFileSync_(f);if(g){(function(){(0,eval)(g+\"\\n//# sourceURL=\"+f)}).call(goog.global);if(goog.global.$gwtExport&&goog.global.$gwtExport.$jscomp&&!goog.global.$gwtExport.$jscomp.transpile)throw Error('The transpiler did not properly export the \"transpile\" method. $gwtExport: '+JSON.stringify(goog.global.$gwtExport));goog.global.$jscomp.transpile=\ngoog.global.$gwtExport.$jscomp.transpile;d=goog.global.$jscomp;e=d.transpile}}e||(e=d.transpile=function(a,b){goog.logToConsole_(b+\" requires transpilation but no transpiler was found.\");return a});return e(a,b,c)};\ngoog.typeOf=function(a){var b=typeof a;if(\"object\"==b)if(a){if(a instanceof Array)return\"array\";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if(\"[object Window]\"==c)return\"object\";if(\"[object Array]\"==c||\"number\"==typeof a.length&&\"undefined\"!=typeof a.splice&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"splice\"))return\"array\";if(\"[object Function]\"==c||\"undefined\"!=typeof a.call&&\"undefined\"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable(\"call\"))return\"function\"}else return\"null\";\nelse if(\"function\"==b&&\"undefined\"==typeof a.call)return\"object\";return b};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return\"array\"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\"array\"==b||\"object\"==b&&\"number\"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&\"function\"==typeof a.getFullYear};goog.isFunction=function(a){return\"function\"==goog.typeOf(a)};\ngoog.isObject=function(a){var b=typeof a;return\"object\"==b&&null!=a||\"function\"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\"removeAttribute\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};goog.UID_PROPERTY_=\"closure_uid_\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;\ngoog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(\"function\"===typeof a.clone)return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\"native code\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};\ngoog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,\"JavaScript\");else if(goog.global.eval){if(null==goog.evalWorksForGlobals_){try{goog.global.eval(\"var _evalTest_ = 1;\")}catch(d){}if(\"undefined\"!=typeof goog.global._evalTest_){try{delete goog.global._evalTest_}catch(d){}goog.evalWorksForGlobals_=!0}else goog.evalWorksForGlobals_=!1}if(goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement(\"SCRIPT\");c.type=\"text/javascript\";c.defer=\n!1;c.appendChild(b.createTextNode(a));b.head.appendChild(c);b.head.removeChild(c)}}else throw Error(\"goog.globalEval not available\");};goog.evalWorksForGlobals_=null;\ngoog.getCssName=function(a,b){if(\".\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \".\". You passed: '+a);var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split(\"-\");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join(\"-\")};d=goog.cssNameMapping_?\"BY_WHOLE\"==goog.cssNameMappingStyle_?c:d:function(a){return a};a=b?a+\"-\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\"<\"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(a,c){return null!=b&&c in b?b[c]:a}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};\ngoog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(a,c,f){for(var d=Array(arguments.length-2),e=2;e<arguments.length;e++)d[e-2]=arguments[e];return b.prototype[c].apply(a,d)}};\ngoog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.STRICT_MODE_COMPATIBLE||goog.DEBUG&&!d)throw Error(\"arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C\");if(\"undefined\"!==typeof d.superClass_){for(var e=Array(arguments.length-1),f=1;f<arguments.length;f++)e[f-1]=arguments[f];return d.superClass_.constructor.apply(a,e)}if(\"string\"!=typeof b&&\"symbol\"!=typeof b)throw Error(\"method names provided to goog.base must be a string or a symbol\");\ne=Array(arguments.length-2);for(f=2;f<arguments.length;f++)e[f-2]=arguments[f];f=!1;for(var g=a.constructor.prototype;g;g=Object.getPrototypeOf(g))if(g[b]===d)f=!0;else if(f)return g[b].apply(a,e);if(a[b]===d)return a.constructor.prototype[b].apply(a,e);throw Error(\"goog.base called from a method of one name to a method of a different name\");};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\"goog.scope is not supported within a module.\");a.call(goog.global)};\nCOMPILED||(goog.global.COMPILED=COMPILED);goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\"cannot instantiate an interface (no constructor defined).\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};\ngoog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;goog.defineClass.createSealingConstructor_=function(a,b){if(!goog.defineClass.SEAL_CLASS_INSTANCES)return a;var c=!goog.defineClass.isUnsealable_(b),d=function(){var b=a.apply(this,arguments)||this;b[goog.UID_PROPERTY_]=b[goog.UID_PROPERTY_];this.constructor===d&&c&&Object.seal instanceof Function&&Object.seal(b);return b};return d};goog.defineClass.isUnsealable_=function(a){return a&&a.prototype&&a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]};\ngoog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};\ngoog.tagUnsealableClass=function(a){!COMPILED&&goog.defineClass.SEAL_CLASS_INSTANCES&&(a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]=!0)};goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_=\"goog_defineClass_legacy_unsealable\";\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\"write\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\"complete\"!=a.readyState:\"loading\"==a.readyState},goog.findBasePath_=function(){if(goog.isDef(goog.global.CLOSURE_BASE_PATH)&&goog.isString(goog.global.CLOSURE_BASE_PATH))goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;\na=b?[b]:a.getElementsByTagName(\"SCRIPT\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\"?\");d=-1==d?c.length:d;if(\"base.js\"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}}},goog.findBasePath_(),goog.Transpiler=function(){this.requiresTranspilation_=null;this.transpilationTarget_=goog.TRANSPILE_TO_LANGUAGE},goog.Transpiler.prototype.createRequiresTranspilation_=function(){function a(a,b){e?d[a]=!0:b()?(c=a,d[a]=!1):e=d[a]=!0}function b(a){try{return!!eval(a)}catch(h){return!1}}\nvar c=\"es3\",d={es3:!1},e=!1,f=goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\"\";a(\"es5\",function(){return b(\"[1,].length==1\")});a(\"es6\",function(){return f.match(/Edge\\/(\\d+)(\\.\\d)*/i)?!1:b('(()=>{\"use strict\";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()')});\na(\"es7\",function(){return b(\"2 ** 2 == 4\")});a(\"es8\",function(){return b(\"async () => 1, true\")});a(\"es9\",function(){return b(\"({...rest} = {}), true\")});a(\"es_next\",function(){return!1});return{target:c,map:d}},goog.Transpiler.prototype.needsTranspile=function(a,b){if(\"always\"==goog.TRANSPILE)return!0;if(\"never\"==goog.TRANSPILE)return!1;if(!this.requiresTranspilation_){var c=this.createRequiresTranspilation_();this.requiresTranspilation_=c.map;this.transpilationTarget_=this.transpilationTarget_||\nc.target}if(a in this.requiresTranspilation_)return this.requiresTranspilation_[a]?!0:!goog.inHtmlDocument_()||\"es6\"!=b||\"noModule\"in goog.global.document.createElement(\"script\")?!1:!0;throw Error(\"Unknown language mode: \"+a);},goog.Transpiler.prototype.transpile=function(a,b){return goog.transpile_(a,b,this.transpilationTarget_)},goog.transpiler_=new goog.Transpiler,goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,\"\\\\x3c/$1\")},goog.DebugLoader_=function(){this.dependencies_={};\nthis.idToPath_={};this.written_={};this.loadingDeps_=[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory(goog.transpiler_);this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\"Unregonized namespace: \"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=\n0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\"deps.js\"),\"deps.js\",[],[],{},!1));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=\nfunction(a){this.factory_=a},goog.DebugLoader_.prototype.load_=function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(a){var e=b.getPathFromDeps_(a);if(!e)throw Error(\"Bad dependency path or symbol: \"+a);if(!b.written_[e]){b.written_[e]=!0;a=b.dependencies_[e];for(e=0;e<a.requires.length;e++)goog.isProvided_(a.requires[e])||d(a.requires[e]);c.push(a)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else throw a=\"goog.require could not find: \"+\na,goog.logToConsole_(a),Error(a);},goog.DebugLoader_.prototype.loadDeps_=function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\"Cannot call pause after the call to load.\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\"Double call to loaded.\");e=!0;a.loaded_(d)},pending:function(){for(var b=[],c=0;c<a.loadingDeps_.length;c++)b.push(a.loadingDeps_[c]);\nreturn b},setModuleState:function(a){goog.moduleLoaderState_={type:a,moduleName:\"\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(a,b,c){c&&(goog.loadedModules_[c]={exports:b,type:goog.ModuleType.ES6,moduleId:c||\"\"})},registerGoogModuleExports:function(a,b){goog.loadedModules_[a]={exports:b,type:goog.ModuleType.GOOG,moduleId:a}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(b){if(c)throw Error(\"Cannot register with defer after the call to load.\");a.defer_(d,\nb)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);\nbreak}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=\nfunction(a){return a in this.idToPath_?this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,\nb,c){},goog.LoadController.prototype.setModuleState=function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\"://\");0<=b&&(a=a.substring(b+3),b=\na.indexOf(\"/\"),0<=b&&(a=a.substring(b+1)));return a},goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=\nfunction(a){delete goog.Dependency.callbackMap_[a]},goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\"Callback key \"+a+\" does not exist (was base.js loaded more than once?).\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=\ngoog.global.document;if(\"complete\"==b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \"'+this.path+'\" after document load');}if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var c=goog.Dependency.registerCallback_(function(b){goog.DebugLoader_.IS_OLD_IE_&&\"complete\"!=b.readyState||(goog.Dependency.unregisterCallback_(c),a.loaded())}),d=!goog.DebugLoader_.IS_OLD_IE_&&goog.getScriptNonce()?\n' nonce=\"'+goog.getScriptNonce()+'\"':\"\";d='<script src=\"'+this.path+'\" '+(goog.DebugLoader_.IS_OLD_IE_?\"onreadystatechange\":\"onload\")+\"=\\\"goog.Dependency.callback_('\"+c+'\\', this)\" type=\"text/javascript\" '+(goog.Dependency.defer_?\"defer\":\"\")+d+\">\\x3c/script>\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}else{var e=b.createElement(\"script\");e.defer=goog.Dependency.defer_;e.async=!1;e.type=\"text/javascript\";(d=goog.getScriptNonce())&&e.setAttribute(\"nonce\",d);goog.DebugLoader_.IS_OLD_IE_?\n(a.pause(),e.onreadystatechange=function(){if(\"loaded\"==e.readyState||\"complete\"==e.readyState)a.loaded(),a.resume()}):e.onload=function(){e.onload=null;a.loaded()};e.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(e)}}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),\"deps.js\"==this.relativePath?(goog.logToConsole_(\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\"),\na.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(a,b){a=b?'<script type=\"module\" crossorigin>'+b+\"\\x3c/script>\":'<script type=\"module\" crossorigin src=\"'+a+'\">\\x3c/script>';d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(a):a)}function c(a,b){var c=d.createElement(\"script\");c.defer=!0;c.async=!1;c.type=\n\"module\";c.setAttribute(\"crossorigin\",!0);var e=goog.getScriptNonce();e&&c.setAttribute(\"nonce\",e);b?c.textContent=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(b):b:c.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(a):a;d.head.appendChild(c)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=\n!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\"'+g+'\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(b){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,b,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \"'+this.path+'\"; goog.Dependency.callback_(\"'+h+'\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);\na.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\"'+k+'\")')}else goog.logToConsole_(\"Cannot use default debug loader outside of HTML documents.\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\"noModule\"in goog.global.document.createElement(\"script\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=\ngoog.loadFileSync_(e.path);e.contents_&&(e.contents_=e.transform(e.contents_),e.contents_&&(e.contents_+=\"\\n//# sourceURL=\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var c=e.contents_;e.contents_=null;goog.globalEval(c);if(f)var d=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),\nd)});a.loaded()}}function d(){var a=goog.global.document,b=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(b);c()}),d='<script type=\"text/javascript\">'+goog.protectScriptTag_('goog.Dependency.callback_(\"'+b+'\");')+\"\\x3c/script>\";a.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(d):d)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\"\",this.contents_)?(this.contents_=null,a.loaded()):a.pause();\nelse{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length,h=g&&goog.DebugLoader_.IS_OLD_IE_;g=goog.Dependency.defer_&&(g||goog.isDocumentLoading_());if(h||g)a.defer(function(){c()});else{var k=goog.global.document;h=goog.inHtmlDocument_()&&\"ActiveXObject\"in goog.global;if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!h){goog.Dependency.defer_=!0;a.pause();var l=k.onreadystatechange;k.onreadystatechange=function(){\"interactive\"==k.readyState&&(k.onreadystatechange=\nl,c(),a.resume());goog.isFunction(l)&&l.apply(void 0,arguments)}}else!goog.DebugLoader_.IS_OLD_IE_&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.TranspiledDependency=function(a,b,c,d,e,f){goog.TransformedDependency.call(this,a,b,c,d,e);this.transpiler=f},goog.inherits(goog.TranspiledDependency,goog.TransformedDependency),goog.TranspiledDependency.prototype.transform=function(a){return this.transpiler.transpile(a,this.getPathName())},\ngoog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,c,d,e,f,g){goog.TransformedDependency.call(this,a,b,c,d,e);this.needsTranspile_=f;this.transpiler_=g},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=\nfunction(a){this.needsTranspile_&&(a=this.transpiler_.transpile(a,this.getPathName()));return goog.LOAD_MODULE_USING_EVAL&&goog.isDef(goog.global.JSON)?\"goog.loadModule(\"+goog.global.JSON.stringify(a+\"\\n//# sourceURL=\"+this.path+\"\\n\")+\");\":'goog.loadModule(function(exports) {\"use strict\";'+a+\"\\n;return exports});\\n//# sourceURL=\"+this.path+\"\\n\"},goog.DebugLoader_.IS_OLD_IE_=!(goog.global.atob||!goog.global.document||!goog.global.document.all),goog.DebugLoader_.prototype.addDependency=function(a,b,\nc,d){b=b||[];a=a.replace(/\\\\/g,\"/\");var e=goog.normalizePath_(goog.basePath+a);d&&\"boolean\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d,goog.transpiler_.needsTranspile(d.lang||\"es3\",d.module));this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(a){this.transpiler=a},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e,f){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,\nb,c,d,e,f,this.transpiler):f?new goog.TranspiledDependency(a,b,c,d,e,this.transpiler):e.module==goog.ModuleType.ES6?\"never\"==goog.TRANSPILE&&goog.ASSUME_ES_MODULES_TRANSPILED?new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.global.CLOSURE_NO_DEPS||\ngoog.debugLoader_.loadClosureDeps(),goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});goog.TRUSTED_TYPES_POLICY_NAME=\"\";goog.identity_=function(a){return a};goog.createTrustedTypesPolicy=function(a){var b=null;if(\"undefined\"===typeof TrustedTypes||!TrustedTypes.createPolicy)return b;try{b=TrustedTypes.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_,createURL:goog.identity_})}catch(c){goog.logToConsole_(c.message)}return b};\ngoog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#base\"):null;var jspb={BinaryConstants:{},ConstBinaryMessage:function(){},BinaryMessage:function(){}};jspb.BinaryConstants.FieldType={INVALID:-1,DOUBLE:1,FLOAT:2,INT64:3,UINT64:4,INT32:5,FIXED64:6,FIXED32:7,BOOL:8,STRING:9,GROUP:10,MESSAGE:11,BYTES:12,UINT32:13,ENUM:14,SFIXED32:15,SFIXED64:16,SINT32:17,SINT64:18,FHASH64:30,VHASH64:31};jspb.BinaryConstants.WireType={INVALID:-1,VARINT:0,FIXED64:1,DELIMITED:2,START_GROUP:3,END_GROUP:4,FIXED32:5};\njspb.BinaryConstants.FieldTypeToWireType=function(a){var b=jspb.BinaryConstants.FieldType,c=jspb.BinaryConstants.WireType;switch(a){case b.INT32:case b.INT64:case b.UINT32:case b.UINT64:case b.SINT32:case b.SINT64:case b.BOOL:case b.ENUM:case b.VHASH64:return c.VARINT;case b.DOUBLE:case b.FIXED64:case b.SFIXED64:case b.FHASH64:return c.FIXED64;case b.STRING:case b.MESSAGE:case b.BYTES:return c.DELIMITED;case b.FLOAT:case b.FIXED32:case b.SFIXED32:return c.FIXED32;default:return c.INVALID}};\njspb.BinaryConstants.INVALID_FIELD_NUMBER=-1;jspb.BinaryConstants.FLOAT32_EPS=1.401298464324817E-45;jspb.BinaryConstants.FLOAT32_MIN=1.1754943508222875E-38;jspb.BinaryConstants.FLOAT32_MAX=3.4028234663852886E38;jspb.BinaryConstants.FLOAT64_EPS=4.9E-324;jspb.BinaryConstants.FLOAT64_MIN=2.2250738585072014E-308;jspb.BinaryConstants.FLOAT64_MAX=1.7976931348623157E308;jspb.BinaryConstants.TWO_TO_20=1048576;jspb.BinaryConstants.TWO_TO_23=8388608;jspb.BinaryConstants.TWO_TO_31=2147483648;\njspb.BinaryConstants.TWO_TO_32=4294967296;jspb.BinaryConstants.TWO_TO_52=4503599627370496;jspb.BinaryConstants.TWO_TO_63=0x7fffffffffffffff;jspb.BinaryConstants.TWO_TO_64=1.8446744073709552E19;jspb.BinaryConstants.ZERO_HASH=\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.debug={};goog.debug.Error=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,goog.debug.Error);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a));this.reportErrorToServer=!0};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name=\"CustomError\";goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){goog.debug.Error.call(this,goog.asserts.subs_(a,b));this.messagePattern=a};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name=\"AssertionError\";goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};goog.asserts.errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;\ngoog.asserts.subs_=function(a,b){a=a.split(\"%s\");for(var c=\"\",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:\"%s\");return c+a[d]};goog.asserts.doAssertFailure_=function(a,b,c,d){var e=\"Assertion failed\";if(c){e+=\": \"+c;var f=d}else a&&(e+=\": \"+a,f=b);a=new goog.asserts.AssertionError(\"\"+e,f||[]);goog.asserts.errorHandler_(a)};goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(goog.asserts.errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_(\"\",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&goog.asserts.doAssertFailure_(\"Expected to exist: %s.\",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&goog.asserts.errorHandler_(new goog.asserts.AssertionError(\"Failure\"+(a?\": \"+a:\"\"),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_(\"Expected number but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_(\"Expected string but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_(\"Expected function but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_(\"Expected object but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_(\"Expected array but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_(\"Expected boolean but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_(\"Expected Element but got %s: %s.\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_(\"Expected instanceof %s but got %s.\",[goog.asserts.getType_(b),goog.asserts.getType_(a)],c,Array.prototype.slice.call(arguments,3));return a};goog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||\"number\"==typeof a&&isFinite(a)||goog.asserts.doAssertFailure_(\"Expected %s to be a finite number but it is not.\",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+\" should not be enumerable in Object.prototype.\")};goog.asserts.getType_=function(a){return a instanceof Function?a.displayName||a.name||\"unknown type name\":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?\"null\":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.peek=function(a){return a[a.length-1]};goog.array.last=goog.array.peek;\ngoog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(\"\"):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)};\ngoog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(\"\"):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};\ngoog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(\"\"):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};\ngoog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};\ngoog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};\ngoog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&(goog.array.ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};\ngoog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(\"\"):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};\ngoog.array.findIndexRight=function(a,b,c){var d=a.length,e=goog.isString(a)?a.split(\"\"):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};\ngoog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){b=goog.array.indexOf(a,b);var c;(c=0<=b)&&goog.array.removeAt(a,b);return c};\ngoog.array.removeLast=function(a,b){b=goog.array.lastIndexOf(a,b);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.removeAllIf=function(a,b,c){var d=0;goog.array.forEachRight(a,function(e,f){b.call(c,e,f,a)&&goog.array.removeAt(a,f)&&d++});return d};\ngoog.array.concat=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.join=function(a){return Array.prototype.concat.apply([],arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(goog.isArrayLike(d)){var e=a.length||0,f=d.length||0;a.length=e+f;for(var g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}};\ngoog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,goog.array.slice(arguments,1))};goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};\ngoog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(a){return goog.isObject(a)?\"o\"+goog.getUid(a):(typeof a).charAt(0)+a};c=c||d;d={};for(var e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};\ngoog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1;var l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){a.sort(b||goog.array.defaultCompare)};goog.array.stableSort=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(c,function(a,b){return e(a.value,b.value)||a.index-b.index});for(d=0;d<a.length;d++)a[d]=c[d].value};\ngoog.array.sortByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(b(a),b(c))})};goog.array.sortObjectsByKey=function(a,b,c){goog.array.sortByKey(a,function(a){return a[b]},c)};goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};\ngoog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};\ngoog.array.inverseDefaultCompare=function(a,b){return-goog.array.defaultCompare(a,b)};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};\ngoog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(d[g]||(d[g]=[])).push(f)}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};\ngoog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];if(goog.isArray(d))for(var e=0;e<d.length;e+=8192){var f=goog.array.slice(d,e,e+8192);f=goog.array.flatten.apply(null,f);for(var g=0;g<f.length;g++)b.push(f[g])}else b.push(d)}return b};\ngoog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])};\ngoog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=arguments[0].length,d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){for(var e=[],f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b};goog.array.shuffle=function(a,b){b=b||Math.random;for(var c=a.length-1;0<c;c--){var d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}};goog.array.copyByIndex=function(a,b){var c=[];goog.array.forEach(b,function(b){c.push(a[b])});return c};\ngoog.array.concatMap=function(a,b,c){return goog.array.concat.apply([],goog.array.map(a,b,c))};goog.crypt={};goog.crypt.stringToByteArray=function(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);255<e&&(b[c++]=e&255,e>>=8);b[c++]=e}return b};goog.crypt.byteArrayToString=function(a){if(8192>=a.length)return String.fromCharCode.apply(null,a);for(var b=\"\",c=0;c<a.length;c+=8192){var d=goog.array.slice(a,c,c+8192);b+=String.fromCharCode.apply(null,d)}return b};\ngoog.crypt.byteArrayToHex=function(a,b){return goog.array.map(a,function(a){a=a.toString(16);return 1<a.length?a:\"0\"+a}).join(b||\"\")};goog.crypt.hexToByteArray=function(a){goog.asserts.assert(0==a.length%2,\"Key string length must be multiple of 2\");for(var b=[],c=0;c<a.length;c+=2)b.push(parseInt(a.substring(c,c+2),16));return b};\ngoog.crypt.stringToUtf8ByteArray=function(a){for(var b=[],c=0,d=0;d<a.length;d++){var e=a.charCodeAt(d);128>e?b[c++]=e:(2048>e?b[c++]=e>>6|192:(55296==(e&64512)&&d+1<a.length&&56320==(a.charCodeAt(d+1)&64512)?(e=65536+((e&1023)<<10)+(a.charCodeAt(++d)&1023),b[c++]=e>>18|240,b[c++]=e>>12&63|128):b[c++]=e>>12|224,b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b};\ngoog.crypt.utf8ByteArrayToString=function(a){for(var b=[],c=0,d=0;c<a.length;){var e=a[c++];if(128>e)b[d++]=String.fromCharCode(e);else if(191<e&&224>e){var f=a[c++];b[d++]=String.fromCharCode((e&31)<<6|f&63)}else if(239<e&&365>e){f=a[c++];var g=a[c++],h=a[c++];e=((e&7)<<18|(f&63)<<12|(g&63)<<6|h&63)-65536;b[d++]=String.fromCharCode(55296+(e>>10));b[d++]=String.fromCharCode(56320+(e&1023))}else f=a[c++],g=a[c++],b[d++]=String.fromCharCode((e&15)<<12|(f&63)<<6|g&63)}return b.join(\"\")};\ngoog.crypt.xorByteArray=function(a,b){goog.asserts.assert(a.length==b.length,\"XOR array lengths must match\");for(var c=[],d=0;d<a.length;d++)c.push(a[d]^b[d]);return c};goog.string={};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?\"<br />\":\"<br>\")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,\"&\").replace(goog.string.internal.LT_RE_,\"<\").replace(goog.string.internal.GT_RE_,\">\").replace(goog.string.internal.QUOT_RE_,\""\").replace(goog.string.internal.SINGLE_QUOTE_RE_,\"'\").replace(goog.string.internal.NULL_RE_,\"�\");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf(\"&\")&&(a=a.replace(goog.string.internal.AMP_RE_,\"&\"));-1!=a.indexOf(\"<\")&&(a=a.replace(goog.string.internal.LT_RE_,\n\"<\"));-1!=a.indexOf(\">\")&&(a=a.replace(goog.string.internal.GT_RE_,\">\"));-1!=a.indexOf('\"')&&(a=a.replace(goog.string.internal.QUOT_RE_,\""\"));-1!=a.indexOf(\"'\")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,\"'\"));-1!=a.indexOf(\"\\x00\")&&(a=a.replace(goog.string.internal.NULL_RE_,\"�\"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/\"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>\"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,\"  \"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(\".\");b=goog.string.internal.trim(String(b)).split(\".\");for(var d=Math.max(a.length,b.length),e=0;0==c&&e<d;e++){var f=a[e]||\"\",g=b[e]||\"\";do{f=/(\\d*)(\\D*)(.*)/.exec(f)||[\"\",\"\",\"\",\"\"];g=/(\\d*)(\\D*)(.*)/.exec(g)||[\"\",\"\",\"\",\"\"];if(0==f[0].length&&0==g[0].length)break;c=0==f[1].length?0:parseInt(f[1],10);var h=0==g[1].length?0:parseInt(g[1],10);c=goog.string.internal.compareElements_(c,h)||goog.string.internal.compareElements_(0==\nf[2].length,0==g[2].length)||goog.string.internal.compareElements_(f[2],g[2]);f=f[3];g=g[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||\"\";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.string.Const.prototype.toString=function(){return\"Const{\"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+\"}\"};goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail(\"expected object of type Const, got '\"+a+\"'\");return\"type_error:Const\"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from(\"\");goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.getUrlObject_=function(){var a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error(\"This browser doesn't seem to support blob URLs\");};\ngoog.fs.url.findUrlObject_=function(){return goog.isDef(goog.global.URL)&&goog.isDef(goog.global.URL.createObjectURL)?goog.global.URL:goog.isDef(goog.global.webkitURL)&&goog.isDef(goog.global.webkitURL.createObjectURL)?goog.global.webkitURL:goog.isDef(goog.global.createObjectURL)?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\"#html\"):null;goog.i18n={};goog.i18n.bidi={};goog.i18n.bidi.FORCE_RTL=!1;\ngoog.i18n.bidi.IS_RTL=goog.i18n.bidi.FORCE_RTL||(\"ar\"==goog.LOCALE.substring(0,2).toLowerCase()||\"fa\"==goog.LOCALE.substring(0,2).toLowerCase()||\"he\"==goog.LOCALE.substring(0,2).toLowerCase()||\"iw\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ps\"==goog.LOCALE.substring(0,2).toLowerCase()||\"sd\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ug\"==goog.LOCALE.substring(0,2).toLowerCase()||\"ur\"==goog.LOCALE.substring(0,2).toLowerCase()||\"yi\"==goog.LOCALE.substring(0,2).toLowerCase())&&(2==goog.LOCALE.length||\n\"-\"==goog.LOCALE.substring(2,3)||\"_\"==goog.LOCALE.substring(2,3))||3<=goog.LOCALE.length&&\"ckb\"==goog.LOCALE.substring(0,3).toLowerCase()&&(3==goog.LOCALE.length||\"-\"==goog.LOCALE.substring(3,4)||\"_\"==goog.LOCALE.substring(3,4))||7<=goog.LOCALE.length&&(\"-\"==goog.LOCALE.substring(2,3)||\"_\"==goog.LOCALE.substring(2,3))&&(\"adlm\"==goog.LOCALE.substring(3,7).toLowerCase()||\"arab\"==goog.LOCALE.substring(3,7).toLowerCase()||\"hebr\"==goog.LOCALE.substring(3,7).toLowerCase()||\"nkoo\"==goog.LOCALE.substring(3,\n7).toLowerCase()||\"rohg\"==goog.LOCALE.substring(3,7).toLowerCase()||\"thaa\"==goog.LOCALE.substring(3,7).toLowerCase())||8<=goog.LOCALE.length&&(\"-\"==goog.LOCALE.substring(3,4)||\"_\"==goog.LOCALE.substring(3,4))&&(\"adlm\"==goog.LOCALE.substring(4,8).toLowerCase()||\"arab\"==goog.LOCALE.substring(4,8).toLowerCase()||\"hebr\"==goog.LOCALE.substring(4,8).toLowerCase()||\"nkoo\"==goog.LOCALE.substring(4,8).toLowerCase()||\"rohg\"==goog.LOCALE.substring(4,8).toLowerCase()||\"thaa\"==goog.LOCALE.substring(4,8).toLowerCase());\ngoog.i18n.bidi.Format={LRE:\"\\u202a\",RLE:\"\\u202b\",PDF:\"\\u202c\",LRM:\"\\u200e\",RLM:\"\\u200f\"};goog.i18n.bidi.Dir={LTR:1,RTL:-1,NEUTRAL:0};goog.i18n.bidi.RIGHT=\"right\";goog.i18n.bidi.LEFT=\"left\";goog.i18n.bidi.I18N_RIGHT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.LEFT:goog.i18n.bidi.RIGHT;goog.i18n.bidi.I18N_LEFT=goog.i18n.bidi.IS_RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT;\ngoog.i18n.bidi.toDir=function(a,b){return\"number\"==typeof a?0<a?goog.i18n.bidi.Dir.LTR:0>a?goog.i18n.bidi.Dir.RTL:b?null:goog.i18n.bidi.Dir.NEUTRAL:null==a?null:a?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};goog.i18n.bidi.ltrChars_=\"A-Za-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u02b8\\u0300-\\u0590\\u0900-\\u1fff\\u200e\\u2c00-\\ud801\\ud804-\\ud839\\ud83c-\\udbff\\uf900-\\ufb1c\\ufe00-\\ufe6f\\ufefd-\\uffff\";goog.i18n.bidi.rtlChars_=\"\\u0591-\\u06ef\\u06fa-\\u08ff\\u200f\\ud802-\\ud803\\ud83a-\\ud83b\\ufb1d-\\ufdff\\ufe70-\\ufefc\";\ngoog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g;goog.i18n.bidi.stripHtmlIfNeeded_=function(a,b){return b?a.replace(goog.i18n.bidi.htmlSkipReg_,\"\"):a};goog.i18n.bidi.rtlCharReg_=new RegExp(\"[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.ltrCharReg_=new RegExp(\"[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.hasAnyRtl=function(a,b){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl;\ngoog.i18n.bidi.hasAnyLtr=function(a,b){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.ltrRe_=new RegExp(\"^[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.rtlRe_=new RegExp(\"^[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.isRtlChar=function(a){return goog.i18n.bidi.rtlRe_.test(a)};goog.i18n.bidi.isLtrChar=function(a){return goog.i18n.bidi.ltrRe_.test(a)};goog.i18n.bidi.isNeutralChar=function(a){return!goog.i18n.bidi.isLtrChar(a)&&!goog.i18n.bidi.isRtlChar(a)};\ngoog.i18n.bidi.ltrDirCheckRe_=new RegExp(\"^[^\"+goog.i18n.bidi.rtlChars_+\"]*[\"+goog.i18n.bidi.ltrChars_+\"]\");goog.i18n.bidi.rtlDirCheckRe_=new RegExp(\"^[^\"+goog.i18n.bidi.ltrChars_+\"]*[\"+goog.i18n.bidi.rtlChars_+\"]\");goog.i18n.bidi.startsWithRtl=function(a,b){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl;\ngoog.i18n.bidi.startsWithLtr=function(a,b){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr;goog.i18n.bidi.isRequiredLtrRe_=/^http:\\/\\/.*/;goog.i18n.bidi.isNeutralText=function(a,b){a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b);return goog.i18n.bidi.isRequiredLtrRe_.test(a)||!goog.i18n.bidi.hasAnyLtr(a)&&!goog.i18n.bidi.hasAnyRtl(a)};\ngoog.i18n.bidi.ltrExitDirCheckRe_=new RegExp(\"[\"+goog.i18n.bidi.ltrChars_+\"][^\"+goog.i18n.bidi.rtlChars_+\"]*$\");goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp(\"[\"+goog.i18n.bidi.rtlChars_+\"][^\"+goog.i18n.bidi.ltrChars_+\"]*$\");goog.i18n.bidi.endsWithLtr=function(a,b){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr;\ngoog.i18n.bidi.endsWithRtl=function(a,b){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a,b))};goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl;goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;goog.i18n.bidi.isRtlLanguage=function(a){return goog.i18n.bidi.rtlLocalesRe_.test(a)};goog.i18n.bidi.bracketGuardTextRe_=/(\\(.*?\\)+)|(\\[.*?\\]+)|(\\{.*?\\}+)|(<.*?>+)/g;\ngoog.i18n.bidi.guardBracketInText=function(a,b){b=(void 0===b?goog.i18n.bidi.hasAnyRtl(a):b)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM;return a.replace(goog.i18n.bidi.bracketGuardTextRe_,b+\"$&\"+b)};goog.i18n.bidi.enforceRtlInHtml=function(a){return\"<\"==a.charAt(0)?a.replace(/<\\w+/,\"$& dir=rtl\"):\"\\n<span dir=rtl>\"+a+\"</span>\"};goog.i18n.bidi.enforceRtlInText=function(a){return goog.i18n.bidi.Format.RLE+a+goog.i18n.bidi.Format.PDF};\ngoog.i18n.bidi.enforceLtrInHtml=function(a){return\"<\"==a.charAt(0)?a.replace(/<\\w+/,\"$& dir=ltr\"):\"\\n<span dir=ltr>\"+a+\"</span>\"};goog.i18n.bidi.enforceLtrInText=function(a){return goog.i18n.bidi.Format.LRE+a+goog.i18n.bidi.Format.PDF};goog.i18n.bidi.dimensionsRe_=/:\\s*([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)\\s+([.\\d][.\\w]*)/g;goog.i18n.bidi.leftRe_=/left/gi;goog.i18n.bidi.rightRe_=/right/gi;goog.i18n.bidi.tempRe_=/%%%%/g;\ngoog.i18n.bidi.mirrorCSS=function(a){return a.replace(goog.i18n.bidi.dimensionsRe_,\":$1 $4 $3 $2\").replace(goog.i18n.bidi.leftRe_,\"%%%%\").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)};goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\\u0591-\\u05f2])\"/g;goog.i18n.bidi.singleQuoteSubstituteRe_=/([\\u0591-\\u05f2])'/g;\ngoog.i18n.bidi.normalizeHebrewQuote=function(a){return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,\"$1\\u05f4\").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,\"$1\\u05f3\")};goog.i18n.bidi.wordSeparatorRe_=/\\s+/;goog.i18n.bidi.hasNumeralsRe_=/[\\d\\u06f0-\\u06f9]/;goog.i18n.bidi.rtlDetectionThreshold_=.4;\ngoog.i18n.bidi.estimateDirection=function(a,b){var c=0,d=0,e=!1;a=goog.i18n.bidi.stripHtmlIfNeeded_(a,b).split(goog.i18n.bidi.wordSeparatorRe_);for(b=0;b<a.length;b++){var f=a[b];goog.i18n.bidi.startsWithRtl(f)?(c++,d++):goog.i18n.bidi.isRequiredLtrRe_.test(f)?e=!0:goog.i18n.bidi.hasAnyLtr(f)?d++:goog.i18n.bidi.hasNumeralsRe_.test(f)&&(e=!0)}return 0==d?e?goog.i18n.bidi.Dir.LTR:goog.i18n.bidi.Dir.NEUTRAL:c/d>goog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR};\ngoog.i18n.bidi.detectRtlDirectionality=function(a,b){return goog.i18n.bidi.estimateDirection(a,b)==goog.i18n.bidi.Dir.RTL};goog.i18n.bidi.setElementDirAndAlign=function(a,b){a&&(b=goog.i18n.bidi.toDir(b))&&(a.style.textAlign=b==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,a.dir=b==goog.i18n.bidi.Dir.RTL?\"rtl\":\"ltr\")};\ngoog.i18n.bidi.setElementDirByTextDirectionality=function(a,b){switch(goog.i18n.bidi.estimateDirection(b)){case goog.i18n.bidi.Dir.LTR:a.dir=\"ltr\";break;case goog.i18n.bidi.Dir.RTL:a.dir=\"rtl\";break;default:a.removeAttribute(\"dir\")}};goog.i18n.bidi.DirectionalString=function(){};goog.html.TrustedResourceUrl=function(){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=\"\";this.trustedURL_=null;this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||\"\";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_(\"?\",c[2]||\"\",a)+goog.html.TrustedResourceUrl.stringifyParams_(\"#\",d,b))};\ngoog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return\"TrustedResourceUrl{\"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+\"}\"});goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl&&a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail(\"expected object of type TrustedResourceUrl, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:TrustedResourceUrl\"};\ngoog.html.TrustedResourceUrl.unwrapTrustedURL=function(a){return a.trustedURL_?a.trustedURL_:goog.html.TrustedResourceUrl.unwrap(a)};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error(\"Invalid TrustedResourceUrl format: \"+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(a,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, \"'+e+'\", in format string, \"'+c+'\", but no valid label mapping found in args: '+JSON.stringify(b));a=b[e];return a instanceof goog.string.Const?goog.string.Const.unwrap(a):\nencodeURIComponent(String(a))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\\/\\/[0-9a-z.:[\\]-]+\\/|\\/[^/\\\\]|[^:/\\\\%]+\\/|[^:/\\\\%]*[?#]|about:blank#)/i;goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b=\"\",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.TrustedResourceUrl;b.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a):a;goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY&&(b.trustedURL_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(a));return b};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if(goog.isString(c))return c?a+encodeURIComponent(c):\"\";for(var d in c){var e=c[d];e=goog.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?\"&\":\"\")+encodeURIComponent(d)+\"=\"+encodeURIComponent(String(g)))}}return b};goog.html.SafeUrl=function(){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=\"\";this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeUrl.INNOCUOUS_STRING=\"about:invalid#zClosurez\";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR};goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return\"SafeUrl{\"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+\"}\"});goog.html.SafeUrl.unwrap=function(a){return goog.html.SafeUrl.unwrapTrustedURL(a).toString()};\ngoog.html.SafeUrl.unwrapTrustedURL=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl&&a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail(\"expected object of type SafeUrl, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeUrl\"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-wav|wav|webm)|image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\\/csv|video\\/(?:mpeg|mp4|ogg|webm|quicktime))(?:;\\w+=(?:\\w+|\"[\\w;=]+\"))*$/i;goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SAFE_MIME_TYPE_PATTERN_.test(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.DATA_URL_PATTERN_=/^data:([^,]*);base64,[a-z0-9+\\/]+=*$/i;goog.html.SafeUrl.fromDataUrl=function(a){a=a.replace(/(%0A|%0D)/g,\"\");var b=a.match(goog.html.DATA_URL_PATTERN_);b=b&&goog.html.SAFE_MIME_TYPE_PATTERN_.test(b[1]);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b?a:goog.html.SafeUrl.INNOCUOUS_STRING)};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"tel:\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$/i;goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"fb-messenger://share\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"whatsapp://send\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"sms:\")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf(\"#\");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\"ssh://\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(a){return goog.string.Const.unwrap(a)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.sanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=\"object\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);goog.html.SAFE_URL_PATTERN_.test(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a=\"object\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),\"%s does not match the safe URL pattern\",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){var b=new goog.html.SafeUrl;b.privateDoNotAccessOrElseSafeUrlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createURL(a):a;return b};goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\"about:blank\");goog.html.SafeStyle=function(){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=\"\";this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyle.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyle.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyle.EMPTY;goog.asserts.assert(goog.string.internal.endsWith(a,\";\"),\"Last character of style string is not ';': \"+a);goog.asserts.assert(goog.string.internal.contains(a,\":\"),\"Style string must contain at least one ':', to specify a \\\"name: value\\\" pair: \"+a);return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeStyle.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_};goog.DEBUG&&(goog.html.SafeStyle.prototype.toString=function(){return\"SafeStyle{\"+this.privateDoNotAccessOrElseSafeStyleWrappedValue_+\"}\"});\ngoog.html.SafeStyle.unwrap=function(a){if(a instanceof goog.html.SafeStyle&&a.constructor===goog.html.SafeStyle&&a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;goog.asserts.fail(\"expected object of type SafeStyle, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeStyle\"};goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=a;return this};goog.html.SafeStyle.EMPTY=goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\"\");goog.html.SafeStyle.INNOCUOUS_STRING=\"zClosurez\";\ngoog.html.SafeStyle.create=function(a){var b=\"\",c;for(c in a){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(\"Name allows only [-_a-zA-Z0-9], got: \"+c);var d=a[c];null!=d&&(d=goog.isArray(d)?goog.array.map(d,goog.html.SafeStyle.sanitizePropertyValue_).join(\" \"):goog.html.SafeStyle.sanitizePropertyValue_(d),b+=c+\":\"+d+\";\")}return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};\ngoog.html.SafeStyle.sanitizePropertyValue_=function(a){if(a instanceof goog.html.SafeUrl)return'url(\"'+goog.html.SafeUrl.unwrap(a).replace(/</g,\"%3c\").replace(/[\\\\\"]/g,\"\\\\$&\")+'\")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):goog.html.SafeStyle.sanitizePropertyValueString_(String(a));if(/[{;}]/.test(a))throw new goog.asserts.AssertionError(\"Value does not allow [{;}], got: %s.\",[a]);return a};\ngoog.html.SafeStyle.sanitizePropertyValueString_=function(a){var b=a.replace(goog.html.SafeStyle.FUNCTIONS_RE_,\"$1\").replace(goog.html.SafeStyle.FUNCTIONS_RE_,\"$1\").replace(goog.html.SafeStyle.URL_RE_,\"url\");if(goog.html.SafeStyle.VALUE_RE_.test(b)){if(goog.html.SafeStyle.COMMENT_RE_.test(a))return goog.asserts.fail(\"String value disallows comments, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING;if(!goog.html.SafeStyle.hasBalancedQuotes_(a))return goog.asserts.fail(\"String value requires balanced quotes, got: \"+\na),goog.html.SafeStyle.INNOCUOUS_STRING;if(!goog.html.SafeStyle.hasBalancedSquareBrackets_(a))return goog.asserts.fail(\"String value requires balanced square brackets and one identifier per pair of brackets, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING}else return goog.asserts.fail(\"String value allows only \"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+\" and simple functions, got: \"+a),goog.html.SafeStyle.INNOCUOUS_STRING;return goog.html.SafeStyle.sanitizeUrl_(a)};\ngoog.html.SafeStyle.hasBalancedQuotes_=function(a){for(var b=!0,c=!0,d=0;d<a.length;d++){var e=a.charAt(d);\"'\"==e&&c?b=!b:'\"'==e&&b&&(c=!c)}return b&&c};goog.html.SafeStyle.hasBalancedSquareBrackets_=function(a){for(var b=!0,c=/^[-_a-zA-Z0-9]$/,d=0;d<a.length;d++){var e=a.charAt(d);if(\"]\"==e){if(b)return!1;b=!0}else if(\"[\"==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b};goog.html.SafeStyle.VALUE_ALLOWED_CHARS_=\"[-,.\\\"'%_!# a-zA-Z0-9\\\\[\\\\]]\";\ngoog.html.SafeStyle.VALUE_RE_=new RegExp(\"^\"+goog.html.SafeStyle.VALUE_ALLOWED_CHARS_+\"+$\");goog.html.SafeStyle.URL_RE_=/\\b(url\\([ \\t\\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \\t\\n]*\\))/g;goog.html.SafeStyle.FUNCTIONS_RE_=/\\b(hsl|hsla|rgb|rgba|matrix|calc|minmax|fit-content|repeat|(rotate|scale|translate)(X|Y|Z|3d)?)\\([-+*/0-9a-z.%\\[\\], ]+\\)/g;goog.html.SafeStyle.COMMENT_RE_=/\\/\\*/;\ngoog.html.SafeStyle.sanitizeUrl_=function(a){return a.replace(goog.html.SafeStyle.URL_RE_,function(a,c,d,e){var b=\"\";d=d.replace(/^(['\"])(.*)\\1$/,function(a,c,d){b=c;return d});a=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+b+a+b+e})};goog.html.SafeStyle.concat=function(a){var b=\"\",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyle.unwrap(a)};goog.array.forEach(arguments,c);return b?goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):goog.html.SafeStyle.EMPTY};goog.html.SafeScript=function(){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=\"\";this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeScript.prototype.implementsGoogStringTypedString=!0;goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeScript.fromConstant=function(a){a=goog.string.Const.unwrap(a);return 0===a.length?goog.html.SafeScript.EMPTY:goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeScript.fromConstantAndArgs=function(a,b){for(var c=[],d=1;d<arguments.length;d++)c.push(goog.html.SafeScript.stringify_(arguments[d]));return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\"(\"+goog.string.Const.unwrap(a)+\")(\"+c.join(\", \")+\");\")};goog.html.SafeScript.fromJson=function(a){return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a))};goog.html.SafeScript.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()};\ngoog.DEBUG&&(goog.html.SafeScript.prototype.toString=function(){return\"SafeScript{\"+this.privateDoNotAccessOrElseSafeScriptWrappedValue_+\"}\"});goog.html.SafeScript.unwrap=function(a){return goog.html.SafeScript.unwrapTrustedScript(a).toString()};\ngoog.html.SafeScript.unwrapTrustedScript=function(a){if(a instanceof goog.html.SafeScript&&a.constructor===goog.html.SafeScript&&a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;goog.asserts.fail(\"expected object of type SafeScript, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeScript\"};\ngoog.html.SafeScript.stringify_=function(a){return JSON.stringify(a).replace(/</g,\"\\\\x3c\")};goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a)};\ngoog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a):a;return this};goog.html.SafeScript.EMPTY=goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\"\");goog.object={};goog.object.is=function(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};\ngoog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};\ngoog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};goog.object.getValueByKeys=function(a,b){var c=goog.isArrayLike(b),d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a};goog.object.containsKey=function(a,b){return null!==a&&b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};\ngoog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(null!==a&&b in a)throw Error('The object already contains the key \"'+b+'\"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return null!==a&&b in a?a[b]:c};\ngoog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};goog.object.setWithReturnValueIfNotSet=function(a,b,c){if(b in a)return a[b];c=c();return a[b]=c};goog.object.equals=function(a,b){for(var c in a)if(!(c in b)||a[c]!==b[c])return!1;for(var d in b)if(!(d in a))return!1;return!0};goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};\ngoog.object.unsafeClone=function(a){var b=goog.typeOf(a);if(\"object\"==b||\"array\"==b){if(goog.isFunction(a.clone))return a.clone();b=\"array\"==b?[]:{};for(var c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");\ngoog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};\ngoog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error(\"Uneven number of arguments\");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};\ngoog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};\ngoog.object.getAllPropertyNames=function(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return goog.object.getKeys(a);for(var d={};a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){for(var e=Object.getOwnPropertyNames(a),f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return goog.object.getKeys(d)};goog.object.getSuperClass=function(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor};goog.html.SafeStyleSheet=function(){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=\"\";this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_};goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString=!0;goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};\ngoog.html.SafeStyleSheet.createRule=function(a,b){if(goog.string.internal.contains(a,\"<\"))throw Error(\"Selector does not allow '<', got: \"+a);var c=a.replace(/('|\")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\"\");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error(\"Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: \"+a);if(!goog.html.SafeStyleSheet.hasBalancedBrackets_(c))throw Error(\"() and [] in selector must be balanced, got: \"+a);b instanceof goog.html.SafeStyle||(b=goog.html.SafeStyle.create(b));\na=a+\"{\"+goog.html.SafeStyle.unwrap(b).replace(/</g,\"\\\\3C \")+\"}\";return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.hasBalancedBrackets_=function(a){for(var b={\"(\":\")\",\"[\":\"]\"},c=[],d=0;d<a.length;d++){var e=a[d];if(b[e])c.push(b[e]);else if(goog.object.contains(b,e)&&c.pop()!=e)return!1}return 0==c.length};\ngoog.html.SafeStyleSheet.concat=function(a){var b=\"\",c=function(a){goog.isArray(a)?goog.array.forEach(a,c):b+=goog.html.SafeStyleSheet.unwrap(a)};goog.array.forEach(arguments,c);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.SafeStyleSheet.fromConstant=function(a){a=goog.string.Const.unwrap(a);if(0===a.length)return goog.html.SafeStyleSheet.EMPTY;goog.asserts.assert(!goog.string.internal.contains(a,\"<\"),\"Forbidden '<' character in style sheet string: \"+a);return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeStyleSheet.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_};\ngoog.DEBUG&&(goog.html.SafeStyleSheet.prototype.toString=function(){return\"SafeStyleSheet{\"+this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_+\"}\"});\ngoog.html.SafeStyleSheet.unwrap=function(a){if(a instanceof goog.html.SafeStyleSheet&&a.constructor===goog.html.SafeStyleSheet&&a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;goog.asserts.fail(\"expected object of type SafeStyleSheet, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeStyleSheet\"};\ngoog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse=function(a){return(new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a)};goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=a;return this};goog.html.SafeStyleSheet.EMPTY=goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\"\");goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};goog.dom.HtmlElement=function(){};goog.dom.TagName=function(a){this.tagName_=a};goog.dom.TagName.prototype.toString=function(){return this.tagName_};goog.dom.TagName.A=new goog.dom.TagName(\"A\");goog.dom.TagName.ABBR=new goog.dom.TagName(\"ABBR\");goog.dom.TagName.ACRONYM=new goog.dom.TagName(\"ACRONYM\");goog.dom.TagName.ADDRESS=new goog.dom.TagName(\"ADDRESS\");goog.dom.TagName.APPLET=new goog.dom.TagName(\"APPLET\");goog.dom.TagName.AREA=new goog.dom.TagName(\"AREA\");goog.dom.TagName.ARTICLE=new goog.dom.TagName(\"ARTICLE\");\ngoog.dom.TagName.ASIDE=new goog.dom.TagName(\"ASIDE\");goog.dom.TagName.AUDIO=new goog.dom.TagName(\"AUDIO\");goog.dom.TagName.B=new goog.dom.TagName(\"B\");goog.dom.TagName.BASE=new goog.dom.TagName(\"BASE\");goog.dom.TagName.BASEFONT=new goog.dom.TagName(\"BASEFONT\");goog.dom.TagName.BDI=new goog.dom.TagName(\"BDI\");goog.dom.TagName.BDO=new goog.dom.TagName(\"BDO\");goog.dom.TagName.BIG=new goog.dom.TagName(\"BIG\");goog.dom.TagName.BLOCKQUOTE=new goog.dom.TagName(\"BLOCKQUOTE\");goog.dom.TagName.BODY=new goog.dom.TagName(\"BODY\");\ngoog.dom.TagName.BR=new goog.dom.TagName(\"BR\");goog.dom.TagName.BUTTON=new goog.dom.TagName(\"BUTTON\");goog.dom.TagName.CANVAS=new goog.dom.TagName(\"CANVAS\");goog.dom.TagName.CAPTION=new goog.dom.TagName(\"CAPTION\");goog.dom.TagName.CENTER=new goog.dom.TagName(\"CENTER\");goog.dom.TagName.CITE=new goog.dom.TagName(\"CITE\");goog.dom.TagName.CODE=new goog.dom.TagName(\"CODE\");goog.dom.TagName.COL=new goog.dom.TagName(\"COL\");goog.dom.TagName.COLGROUP=new goog.dom.TagName(\"COLGROUP\");\ngoog.dom.TagName.COMMAND=new goog.dom.TagName(\"COMMAND\");goog.dom.TagName.DATA=new goog.dom.TagName(\"DATA\");goog.dom.TagName.DATALIST=new goog.dom.TagName(\"DATALIST\");goog.dom.TagName.DD=new goog.dom.TagName(\"DD\");goog.dom.TagName.DEL=new goog.dom.TagName(\"DEL\");goog.dom.TagName.DETAILS=new goog.dom.TagName(\"DETAILS\");goog.dom.TagName.DFN=new goog.dom.TagName(\"DFN\");goog.dom.TagName.DIALOG=new goog.dom.TagName(\"DIALOG\");goog.dom.TagName.DIR=new goog.dom.TagName(\"DIR\");goog.dom.TagName.DIV=new goog.dom.TagName(\"DIV\");\ngoog.dom.TagName.DL=new goog.dom.TagName(\"DL\");goog.dom.TagName.DT=new goog.dom.TagName(\"DT\");goog.dom.TagName.EM=new goog.dom.TagName(\"EM\");goog.dom.TagName.EMBED=new goog.dom.TagName(\"EMBED\");goog.dom.TagName.FIELDSET=new goog.dom.TagName(\"FIELDSET\");goog.dom.TagName.FIGCAPTION=new goog.dom.TagName(\"FIGCAPTION\");goog.dom.TagName.FIGURE=new goog.dom.TagName(\"FIGURE\");goog.dom.TagName.FONT=new goog.dom.TagName(\"FONT\");goog.dom.TagName.FOOTER=new goog.dom.TagName(\"FOOTER\");goog.dom.TagName.FORM=new goog.dom.TagName(\"FORM\");\ngoog.dom.TagName.FRAME=new goog.dom.TagName(\"FRAME\");goog.dom.TagName.FRAMESET=new goog.dom.TagName(\"FRAMESET\");goog.dom.TagName.H1=new goog.dom.TagName(\"H1\");goog.dom.TagName.H2=new goog.dom.TagName(\"H2\");goog.dom.TagName.H3=new goog.dom.TagName(\"H3\");goog.dom.TagName.H4=new goog.dom.TagName(\"H4\");goog.dom.TagName.H5=new goog.dom.TagName(\"H5\");goog.dom.TagName.H6=new goog.dom.TagName(\"H6\");goog.dom.TagName.HEAD=new goog.dom.TagName(\"HEAD\");goog.dom.TagName.HEADER=new goog.dom.TagName(\"HEADER\");\ngoog.dom.TagName.HGROUP=new goog.dom.TagName(\"HGROUP\");goog.dom.TagName.HR=new goog.dom.TagName(\"HR\");goog.dom.TagName.HTML=new goog.dom.TagName(\"HTML\");goog.dom.TagName.I=new goog.dom.TagName(\"I\");goog.dom.TagName.IFRAME=new goog.dom.TagName(\"IFRAME\");goog.dom.TagName.IMG=new goog.dom.TagName(\"IMG\");goog.dom.TagName.INPUT=new goog.dom.TagName(\"INPUT\");goog.dom.TagName.INS=new goog.dom.TagName(\"INS\");goog.dom.TagName.ISINDEX=new goog.dom.TagName(\"ISINDEX\");goog.dom.TagName.KBD=new goog.dom.TagName(\"KBD\");\ngoog.dom.TagName.KEYGEN=new goog.dom.TagName(\"KEYGEN\");goog.dom.TagName.LABEL=new goog.dom.TagName(\"LABEL\");goog.dom.TagName.LEGEND=new goog.dom.TagName(\"LEGEND\");goog.dom.TagName.LI=new goog.dom.TagName(\"LI\");goog.dom.TagName.LINK=new goog.dom.TagName(\"LINK\");goog.dom.TagName.MAIN=new goog.dom.TagName(\"MAIN\");goog.dom.TagName.MAP=new goog.dom.TagName(\"MAP\");goog.dom.TagName.MARK=new goog.dom.TagName(\"MARK\");goog.dom.TagName.MATH=new goog.dom.TagName(\"MATH\");goog.dom.TagName.MENU=new goog.dom.TagName(\"MENU\");\ngoog.dom.TagName.MENUITEM=new goog.dom.TagName(\"MENUITEM\");goog.dom.TagName.META=new goog.dom.TagName(\"META\");goog.dom.TagName.METER=new goog.dom.TagName(\"METER\");goog.dom.TagName.NAV=new goog.dom.TagName(\"NAV\");goog.dom.TagName.NOFRAMES=new goog.dom.TagName(\"NOFRAMES\");goog.dom.TagName.NOSCRIPT=new goog.dom.TagName(\"NOSCRIPT\");goog.dom.TagName.OBJECT=new goog.dom.TagName(\"OBJECT\");goog.dom.TagName.OL=new goog.dom.TagName(\"OL\");goog.dom.TagName.OPTGROUP=new goog.dom.TagName(\"OPTGROUP\");\ngoog.dom.TagName.OPTION=new goog.dom.TagName(\"OPTION\");goog.dom.TagName.OUTPUT=new goog.dom.TagName(\"OUTPUT\");goog.dom.TagName.P=new goog.dom.TagName(\"P\");goog.dom.TagName.PARAM=new goog.dom.TagName(\"PARAM\");goog.dom.TagName.PICTURE=new goog.dom.TagName(\"PICTURE\");goog.dom.TagName.PRE=new goog.dom.TagName(\"PRE\");goog.dom.TagName.PROGRESS=new goog.dom.TagName(\"PROGRESS\");goog.dom.TagName.Q=new goog.dom.TagName(\"Q\");goog.dom.TagName.RP=new goog.dom.TagName(\"RP\");goog.dom.TagName.RT=new goog.dom.TagName(\"RT\");\ngoog.dom.TagName.RTC=new goog.dom.TagName(\"RTC\");goog.dom.TagName.RUBY=new goog.dom.TagName(\"RUBY\");goog.dom.TagName.S=new goog.dom.TagName(\"S\");goog.dom.TagName.SAMP=new goog.dom.TagName(\"SAMP\");goog.dom.TagName.SCRIPT=new goog.dom.TagName(\"SCRIPT\");goog.dom.TagName.SECTION=new goog.dom.TagName(\"SECTION\");goog.dom.TagName.SELECT=new goog.dom.TagName(\"SELECT\");goog.dom.TagName.SMALL=new goog.dom.TagName(\"SMALL\");goog.dom.TagName.SOURCE=new goog.dom.TagName(\"SOURCE\");goog.dom.TagName.SPAN=new goog.dom.TagName(\"SPAN\");\ngoog.dom.TagName.STRIKE=new goog.dom.TagName(\"STRIKE\");goog.dom.TagName.STRONG=new goog.dom.TagName(\"STRONG\");goog.dom.TagName.STYLE=new goog.dom.TagName(\"STYLE\");goog.dom.TagName.SUB=new goog.dom.TagName(\"SUB\");goog.dom.TagName.SUMMARY=new goog.dom.TagName(\"SUMMARY\");goog.dom.TagName.SUP=new goog.dom.TagName(\"SUP\");goog.dom.TagName.SVG=new goog.dom.TagName(\"SVG\");goog.dom.TagName.TABLE=new goog.dom.TagName(\"TABLE\");goog.dom.TagName.TBODY=new goog.dom.TagName(\"TBODY\");goog.dom.TagName.TD=new goog.dom.TagName(\"TD\");\ngoog.dom.TagName.TEMPLATE=new goog.dom.TagName(\"TEMPLATE\");goog.dom.TagName.TEXTAREA=new goog.dom.TagName(\"TEXTAREA\");goog.dom.TagName.TFOOT=new goog.dom.TagName(\"TFOOT\");goog.dom.TagName.TH=new goog.dom.TagName(\"TH\");goog.dom.TagName.THEAD=new goog.dom.TagName(\"THEAD\");goog.dom.TagName.TIME=new goog.dom.TagName(\"TIME\");goog.dom.TagName.TITLE=new goog.dom.TagName(\"TITLE\");goog.dom.TagName.TR=new goog.dom.TagName(\"TR\");goog.dom.TagName.TRACK=new goog.dom.TagName(\"TRACK\");goog.dom.TagName.TT=new goog.dom.TagName(\"TT\");\ngoog.dom.TagName.U=new goog.dom.TagName(\"U\");goog.dom.TagName.UL=new goog.dom.TagName(\"UL\");goog.dom.TagName.VAR=new goog.dom.TagName(\"VAR\");goog.dom.TagName.VIDEO=new goog.dom.TagName(\"VIDEO\");goog.dom.TagName.WBR=new goog.dom.TagName(\"WBR\");goog.labs={};goog.labs.userAgent={};goog.labs.userAgent.util={};goog.labs.userAgent.util.getNativeUserAgentString_=function(){var a=goog.labs.userAgent.util.getNavigator_();return a&&(a=a.userAgent)?a:\"\"};goog.labs.userAgent.util.getNavigator_=function(){return goog.global.navigator};goog.labs.userAgent.util.userAgent_=goog.labs.userAgent.util.getNativeUserAgentString_();goog.labs.userAgent.util.setUserAgent=function(a){goog.labs.userAgent.util.userAgent_=a||goog.labs.userAgent.util.getNativeUserAgentString_()};\ngoog.labs.userAgent.util.getUserAgent=function(){return goog.labs.userAgent.util.userAgent_};goog.labs.userAgent.util.matchUserAgent=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.contains(b,a)};goog.labs.userAgent.util.matchUserAgentIgnoreCase=function(a){var b=goog.labs.userAgent.util.getUserAgent();return goog.string.internal.caseInsensitiveContains(b,a)};\ngoog.labs.userAgent.util.extractVersionTuples=function(a){for(var b=/(\\w[\\w ]+)\\/([^\\s]+)\\s*(?:\\((.*?)\\))?/g,c=[],d;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c};goog.labs.userAgent.browser={};goog.labs.userAgent.browser.matchOpera_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Opera\")};goog.labs.userAgent.browser.matchIE_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Trident\")||goog.labs.userAgent.util.matchUserAgent(\"MSIE\")};goog.labs.userAgent.browser.matchEdgeHtml_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edge\")};goog.labs.userAgent.browser.matchEdgeChromium_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edg/\")};\ngoog.labs.userAgent.browser.matchOperaChromium_=function(){return goog.labs.userAgent.util.matchUserAgent(\"OPR\")};goog.labs.userAgent.browser.matchFirefox_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Firefox\")||goog.labs.userAgent.util.matchUserAgent(\"FxiOS\")};\ngoog.labs.userAgent.browser.matchSafari_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Safari\")&&!(goog.labs.userAgent.browser.matchChrome_()||goog.labs.userAgent.browser.matchCoast_()||goog.labs.userAgent.browser.matchOpera_()||goog.labs.userAgent.browser.matchEdgeHtml_()||goog.labs.userAgent.browser.matchEdgeChromium_()||goog.labs.userAgent.browser.matchOperaChromium_()||goog.labs.userAgent.browser.matchFirefox_()||goog.labs.userAgent.browser.isSilk()||goog.labs.userAgent.util.matchUserAgent(\"Android\"))};\ngoog.labs.userAgent.browser.matchCoast_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Coast\")};goog.labs.userAgent.browser.matchIosWebview_=function(){return(goog.labs.userAgent.util.matchUserAgent(\"iPad\")||goog.labs.userAgent.util.matchUserAgent(\"iPhone\"))&&!goog.labs.userAgent.browser.matchSafari_()&&!goog.labs.userAgent.browser.matchChrome_()&&!goog.labs.userAgent.browser.matchCoast_()&&!goog.labs.userAgent.browser.matchFirefox_()&&goog.labs.userAgent.util.matchUserAgent(\"AppleWebKit\")};\ngoog.labs.userAgent.browser.matchChrome_=function(){return(goog.labs.userAgent.util.matchUserAgent(\"Chrome\")||goog.labs.userAgent.util.matchUserAgent(\"CriOS\"))&&!goog.labs.userAgent.browser.matchEdgeHtml_()};goog.labs.userAgent.browser.matchAndroidBrowser_=function(){return goog.labs.userAgent.util.matchUserAgent(\"Android\")&&!(goog.labs.userAgent.browser.isChrome()||goog.labs.userAgent.browser.isFirefox()||goog.labs.userAgent.browser.isOpera()||goog.labs.userAgent.browser.isSilk())};\ngoog.labs.userAgent.browser.isOpera=goog.labs.userAgent.browser.matchOpera_;goog.labs.userAgent.browser.isIE=goog.labs.userAgent.browser.matchIE_;goog.labs.userAgent.browser.isEdge=goog.labs.userAgent.browser.matchEdgeHtml_;goog.labs.userAgent.browser.isEdgeChromium=goog.labs.userAgent.browser.matchEdgeChromium_;goog.labs.userAgent.browser.isOperaChromium=goog.labs.userAgent.browser.matchOperaChromium_;goog.labs.userAgent.browser.isFirefox=goog.labs.userAgent.browser.matchFirefox_;\ngoog.labs.userAgent.browser.isSafari=goog.labs.userAgent.browser.matchSafari_;goog.labs.userAgent.browser.isCoast=goog.labs.userAgent.browser.matchCoast_;goog.labs.userAgent.browser.isIosWebview=goog.labs.userAgent.browser.matchIosWebview_;goog.labs.userAgent.browser.isChrome=goog.labs.userAgent.browser.matchChrome_;goog.labs.userAgent.browser.isAndroidBrowser=goog.labs.userAgent.browser.matchAndroidBrowser_;goog.labs.userAgent.browser.isSilk=function(){return goog.labs.userAgent.util.matchUserAgent(\"Silk\")};\ngoog.labs.userAgent.browser.getVersion=function(){function a(a){a=goog.array.find(a,d);return c[a]||\"\"}var b=goog.labs.userAgent.util.getUserAgent();if(goog.labs.userAgent.browser.isIE())return goog.labs.userAgent.browser.getIEVersion_(b);b=goog.labs.userAgent.util.extractVersionTuples(b);var c={};goog.array.forEach(b,function(a){c[a[0]]=a[1]});var d=goog.partial(goog.object.containsKey,c);return goog.labs.userAgent.browser.isOpera()?a([\"Version\",\"Opera\"]):goog.labs.userAgent.browser.isEdge()?a([\"Edge\"]):\ngoog.labs.userAgent.browser.isEdgeChromium()?a([\"Edg\"]):goog.labs.userAgent.browser.isChrome()?a([\"Chrome\",\"CriOS\"]):(b=b[2])&&b[1]||\"\"};goog.labs.userAgent.browser.isVersionOrHigher=function(a){return 0<=goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(),a)};\ngoog.labs.userAgent.browser.getIEVersion_=function(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b=\"\";var c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),\"7.0\"==c[1])if(a&&a[1])switch(a[1]){case \"4.0\":b=\"8.0\";break;case \"5.0\":b=\"9.0\";break;case \"6.0\":b=\"10.0\";break;case \"7.0\":b=\"11.0\"}else b=\"7.0\";else b=c[1];return b};goog.html.SafeHtml=function(){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=\"\";this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_=goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;this.dir_=null};goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString=!0;goog.html.SafeHtml.prototype.getDirection=function(){return this.dir_};goog.html.SafeHtml.prototype.implementsGoogStringTypedString=!0;goog.html.SafeHtml.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()};\ngoog.DEBUG&&(goog.html.SafeHtml.prototype.toString=function(){return\"SafeHtml{\"+this.privateDoNotAccessOrElseSafeHtmlWrappedValue_+\"}\"});goog.html.SafeHtml.unwrap=function(a){return goog.html.SafeHtml.unwrapTrustedHTML(a).toString()};\ngoog.html.SafeHtml.unwrapTrustedHTML=function(a){if(a instanceof goog.html.SafeHtml&&a.constructor===goog.html.SafeHtml&&a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_===goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(\"expected object of type SafeHtml, got '\"+a+\"' of type \"+goog.typeOf(a));return\"type_error:SafeHtml\"};\ngoog.html.SafeHtml.htmlEscape=function(a){if(a instanceof goog.html.SafeHtml)return a;var b=\"object\"==typeof a,c=null;b&&a.implementsGoogI18nBidiDirectionalString&&(c=a.getDirection());a=b&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a),c)};\ngoog.html.SafeHtml.htmlEscapePreservingNewlines=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)),a.getDirection())};\ngoog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces=function(a){if(a instanceof goog.html.SafeHtml)return a;a=goog.html.SafeHtml.htmlEscape(a);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)),a.getDirection())};goog.html.SafeHtml.from=goog.html.SafeHtml.htmlEscape;goog.html.SafeHtml.VALID_NAMES_IN_TAG_=/^[a-zA-Z0-9-]+$/;\ngoog.html.SafeHtml.URL_ATTRIBUTES_={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0};goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_={APPLET:!0,BASE:!0,EMBED:!0,IFRAME:!0,LINK:!0,MATH:!0,META:!0,OBJECT:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};goog.html.SafeHtml.create=function(a,b,c){goog.html.SafeHtml.verifyTagName(String(a));return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)};\ngoog.html.SafeHtml.verifyTagName=function(a){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a))throw Error(\"Invalid tag name <\"+a+\">.\");if(a.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error(\"Tag name <\"+a+\"> is not allowed for SafeHtml.\");};\ngoog.html.SafeHtml.createIframe=function(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);var e={};e.src=a||null;e.srcdoc=b&&goog.html.SafeHtml.unwrap(b);a=goog.html.SafeHtml.combineAttributes(e,{sandbox:\"\"},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"iframe\",a,d)};\ngoog.html.SafeHtml.createSandboxIframe=function(a,b,c,d){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error(\"The browser does not support sandboxed iframes.\");var e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox=\"\";a=goog.html.SafeHtml.combineAttributes(e,{},c);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"iframe\",a,d)};\ngoog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&\"sandbox\"in goog.global.HTMLIFrameElement.prototype};goog.html.SafeHtml.createScriptSrc=function(a,b){goog.html.TrustedResourceUrl.unwrap(a);a=goog.html.SafeHtml.combineAttributes({src:a},{},b);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"script\",a)};\ngoog.html.SafeHtml.createScript=function(a,b){for(var c in b){var d=c.toLowerCase();if(\"language\"==d||\"src\"==d||\"text\"==d||\"type\"==d)throw Error('Cannot set \"'+d+'\" attribute');}c=\"\";a=goog.array.concat(a);for(d=0;d<a.length;d++)c+=goog.html.SafeScript.unwrap(a[d]);a=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"script\",b,a)};\ngoog.html.SafeHtml.createStyle=function(a,b){b=goog.html.SafeHtml.combineAttributes({type:\"text/css\"},{},b);var c=\"\";a=goog.array.concat(a);for(var d=0;d<a.length;d++)c+=goog.html.SafeStyleSheet.unwrap(a[d]);a=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c,goog.i18n.bidi.Dir.NEUTRAL);return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"style\",b,a)};\ngoog.html.SafeHtml.createMetaRefresh=function(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(goog.labs.userAgent.browser.isIE()||goog.labs.userAgent.browser.isEdge())&&goog.string.internal.contains(a,\";\")&&(a=\"'\"+a.replace(/'/g,\"%27\")+\"'\");return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\"meta\",{\"http-equiv\":\"refresh\",content:(b||0)+\"; url=\"+a})};\ngoog.html.SafeHtml.getAttrNameAndValue_=function(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if(\"style\"==b.toLowerCase())c=goog.html.SafeHtml.getStyleValue_(c);else{if(/^on/i.test(b))throw Error('Attribute \"'+b+'\" requires goog.string.Const value, \"'+c+'\" given.');if(b.toLowerCase()in goog.html.SafeHtml.URL_ATTRIBUTES_)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);\nelse if(goog.isString(c))c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error('Attribute \"'+b+'\" on tag \"'+a+'\" requires goog.html.SafeUrl, goog.string.Const, or string, value \"'+c+'\" given.');}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert(goog.isString(c)||goog.isNumber(c),\"String or number value expected, got \"+typeof c+\" with value: \"+c);return b+'=\"'+goog.string.internal.htmlEscape(String(c))+'\"'};\ngoog.html.SafeHtml.getStyleValue_=function(a){if(!goog.isObject(a))throw Error('The \"style\" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+\" given: \"+a);a instanceof goog.html.SafeStyle||(a=goog.html.SafeStyle.create(a));return goog.html.SafeStyle.unwrap(a)};goog.html.SafeHtml.createWithDir=function(a,b,c,d){b=goog.html.SafeHtml.create(b,c,d);b.dir_=a;return b};\ngoog.html.SafeHtml.join=function(a,b){a=goog.html.SafeHtml.htmlEscape(a);var c=a.getDirection(),d=[],e=function(a){goog.isArray(a)?goog.array.forEach(a,e):(a=goog.html.SafeHtml.htmlEscape(a),d.push(goog.html.SafeHtml.unwrap(a)),a=a.getDirection(),c==goog.i18n.bidi.Dir.NEUTRAL?c=a:a!=goog.i18n.bidi.Dir.NEUTRAL&&c!=a&&(c=null))};goog.array.forEach(b,e);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d.join(goog.html.SafeHtml.unwrap(a)),c)};\ngoog.html.SafeHtml.concat=function(a){return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY,Array.prototype.slice.call(arguments))};goog.html.SafeHtml.concatWithDir=function(a,b){var c=goog.html.SafeHtml.concat(goog.array.slice(arguments,1));c.dir_=a;return c};goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_={};goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse=function(a,b){return(new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a,b)};\ngoog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_=function(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY?goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a):a;this.dir_=b;return this};\ngoog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse=function(a,b,c){var d=null;var e=\"<\"+a+goog.html.SafeHtml.stringifyAttributes(a,b);goog.isDefAndNotNull(c)?goog.isArray(c)||(c=[c]):c=[];goog.dom.tags.isVoidTag(a.toLowerCase())?(goog.asserts.assert(!c.length,\"Void tag <\"+a+\"> does not allow content.\"),e+=\">\"):(d=goog.html.SafeHtml.concat(c),e+=\">\"+goog.html.SafeHtml.unwrap(d)+\"</\"+a+\">\",d=d.getDirection());(a=b&&b.dir)&&(d=/^(ltr|rtl|auto)$/i.test(a)?goog.i18n.bidi.Dir.NEUTRAL:\nnull);return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e,d)};goog.html.SafeHtml.stringifyAttributes=function(a,b){var c=\"\";if(b)for(var d in b){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d))throw Error('Invalid attribute name \"'+d+'\".');var e=b[d];goog.isDefAndNotNull(e)&&(c+=\" \"+goog.html.SafeHtml.getAttrNameAndValue_(a,d,e))}return c};\ngoog.html.SafeHtml.combineAttributes=function(a,b,c){var d={},e;for(e in a)goog.asserts.assert(e.toLowerCase()==e,\"Must be lower case\"),d[e]=a[e];for(e in b)goog.asserts.assert(e.toLowerCase()==e,\"Must be lower case\"),d[e]=b[e];for(e in c){var f=e.toLowerCase();if(f in a)throw Error('Cannot override \"'+f+'\" attribute, got \"'+e+'\" with value \"'+c[e]+'\"');f in b&&delete d[f];d[e]=c[e]}return d};\ngoog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"<!DOCTYPE html>\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.EMPTY=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\"<br>\",goog.i18n.bidi.Dir.NEUTRAL);goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b,c){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b,c||null)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\"must provide justification\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\"must provide non-empty justification\");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail(\"Argument is not a Location (or a non-Element mock); got: %s\",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&\"undefined\"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail(\"Argument is not a %s (or a non-Element, non-Location mock); got: %s\",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLAnchorElement\")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLButtonElement\")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLLinkElement\")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLImageElement\")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLAudioElement\")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLVideoElement\")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLInputElement\")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLTextAreaElement\")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLCanvasElement\")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLEmbedElement\")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLFormElement\")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLFrameElement\")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLIFrameElement\")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLObjectElement\")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\"HTMLScriptElement\")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return\"<object could not be stringified>\"}else return void 0===a?\"undefined\":null===a?\"null\":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=Array.prototype.slice.call(arguments);b.push.apply(b,c);return a.apply(this,b)}};goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};\ngoog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){var c=arguments,d=c.length;return function(){var a;d&&(a=c[d-1].apply(this,arguments));for(var b=d-2;0<=b;b--)a=c[b].call(this,a);return a}};goog.functions.sequence=function(a){var b=arguments,c=b.length;return function(){for(var a,e=0;e<c;e++)a=b[e].apply(this,arguments);return a}};\ngoog.functions.and=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(!b[a].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){var b=arguments,c=b.length;return function(){for(var a=0;a<c;a++)if(b[a].apply(this,arguments))return!0;return!1}};goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};\ngoog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){var b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){var b=a;return function(){if(b){var a=b;b=null;a()}}};\ngoog.functions.debounce=function(a,b,c){var d=0;return function(e){goog.global.clearTimeout(d);var f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){var d=0,e=!1,f=[],g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);a.apply(c,f)};return function(a){f=arguments;d?e=!0:h()}};goog.functions.rateLimit=function(a,b,c){var d=0,e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:\"afterbegin\",AFTEREND:\"afterend\",BEFOREBEGIN:\"beforebegin\",BEFOREEND:\"beforeend\"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,goog.html.SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&\"undefined\"===typeof document)return!1;var a=document.createElement(\"div\"),b=document.createElement(\"div\");b.appendChild(document.createElement(\"div\"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error(\"goog.dom.safe.setInnerHtml cannot be used to set content of \"+a.tagName+\".\");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=goog.html.SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(goog.html.SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setImageSrc=function(a,b){goog.dom.asserts.assertIsHTMLImageElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:image\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)};goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,\"stylesheet\")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because \"rel\" contains \"stylesheet\"'),a.href=goog.html.TrustedResourceUrl.unwrapTrustedURL(b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrapTrustedURL(b):b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrapTrustedURL(b):\ngoog.html.SafeUrl.unwrapTrustedURL(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b);(b=goog.getScriptNonce())&&a.setAttribute(\"nonce\",b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);a.text=goog.html.SafeScript.unwrapTrustedScript(b);(b=goog.getScriptNonce())&&a.setAttribute(\"nonce\",b)};goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrapTrustedURL(b)};\ngoog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrapTrustedURL(b))};goog.dom.safe.replaceLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrapTrustedURL(b))};\ngoog.dom.safe.openInWindow=function(a,b,c,d,e){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);return(b||goog.global).open(goog.html.SafeUrl.unwrapTrustedURL(a),c?goog.string.Const.unwrap(c):\"\",d,e)};goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,\"text/html\")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error(\"goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.\");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};goog.dom.safe.setImageSrc(a,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\"Image blob URL.\"),b));return a};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:\"\\u00a0\"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){for(var c=a.split(\"%s\"),d=\"\",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join(\"%s\")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g,\" \").replace(/^\\s+|\\s+$/g,\"\")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};\ngoog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return\" \"==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&\" \"<=a&&\"~\">=a||\"\\u0080\"<=a&&\"\\ufffd\">=a};\ngoog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g,\" \")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,\"\\n\")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g,\" \")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g,\" \")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g,\" \").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,\"\")};goog.string.trim=goog.string.internal.trim;\ngoog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,\"\")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,\"\")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length),g=0;g<f;g++){c=d[g];var h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g,\" \"))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,\"e\"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,\"&\")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&\"document\"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,\"&\")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){var c={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"'};var d=b?b.createElement(\"div\"):goog.global.document.createElement(\"div\");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var e=c[a];if(e)return e;\"#\"==b.charAt(0)&&(b=Number(\"0\"+b.substr(1)),isNaN(b)||(e=String.fromCharCode(b)));e||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\"Single HTML entity.\"),\na+\" \")),e=d.firstChild.nodeValue.slice(0,-1));return c[a]=e})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case \"amp\":return\"&\";case \"lt\":return\"<\";case \"gt\":return\">\";case \"quot\":return'\"';default:return\"#\"!=c.charAt(0)||(c=Number(\"0\"+c.substr(1)),isNaN(c))?a:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,\"  \"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,\"$1\"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+\"...\");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+\"...\"+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+\"...\"+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={\"\\x00\":\"\\\\0\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\\t\":\"\\\\t\",\"\\x0B\":\"\\\\x0B\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"<\":\"\\\\u003C\"};goog.string.jsEscapeCache_={\"'\":\"\\\\'\"};\ngoog.string.quote=function(a){a=String(a);for(var b=['\"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('\"');return b.join(\"\")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join(\"\")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a.charCodeAt(0);if(31<b&&127>b)var c=a;else{if(256>b){if(c=\"\\\\x\",16>b||256<b)c+=\"0\"}else c=\"\\\\u\",4096>b&&(c+=\"0\");c+=b.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=c};goog.string.contains=goog.string.internal.contains;goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;\ngoog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){return a.replace(b,\"\")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),\"g\");return a.replace(b,\"\")};goog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),\"g\");return a.replace(b,c.replace(/\\$/g,\"$$$$\"))};\ngoog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,\"\\\\$1\").replace(/\\x08/g,\"\\\\x08\")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(\".\");-1==c&&(c=a.length);return goog.string.repeat(\"0\",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?\"\":String(a)};\ngoog.string.buildString=function(a){return Array.prototype.join.call(arguments,\"\")};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};goog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;\ngoog.string.createUniqueString=function(){return\"goog_\"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(a,c){return c.toUpperCase()})};\ngoog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,\"-$1\").toLowerCase()};goog.string.toTitleCase=function(a,b){b=goog.isString(b)?goog.string.regExpEscape(b):\"\\\\s\";return a.replace(new RegExp(\"(^\"+(b?\"|[\"+b+\"]+\":\"\")+\")([a-z])\",\"g\"),function(a,b,e){return b+e.toUpperCase()})};goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.substr(1)).toLowerCase()};\ngoog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.string.lastComponent=function(a,b){if(b)\"string\"==typeof b&&(b=[b]);else return a;for(var c=-1,d=0;d<b.length;d++)if(\"\"!=b[d]){var e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){var c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.labs.userAgent.platform={};goog.labs.userAgent.platform.isAndroid=function(){return goog.labs.userAgent.util.matchUserAgent(\"Android\")};goog.labs.userAgent.platform.isIpod=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPod\")};goog.labs.userAgent.platform.isIphone=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPhone\")&&!goog.labs.userAgent.util.matchUserAgent(\"iPod\")&&!goog.labs.userAgent.util.matchUserAgent(\"iPad\")};goog.labs.userAgent.platform.isIpad=function(){return goog.labs.userAgent.util.matchUserAgent(\"iPad\")};\ngoog.labs.userAgent.platform.isIos=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpad()||goog.labs.userAgent.platform.isIpod()};goog.labs.userAgent.platform.isMacintosh=function(){return goog.labs.userAgent.util.matchUserAgent(\"Macintosh\")};goog.labs.userAgent.platform.isLinux=function(){return goog.labs.userAgent.util.matchUserAgent(\"Linux\")};goog.labs.userAgent.platform.isWindows=function(){return goog.labs.userAgent.util.matchUserAgent(\"Windows\")};\ngoog.labs.userAgent.platform.isChromeOS=function(){return goog.labs.userAgent.util.matchUserAgent(\"CrOS\")};goog.labs.userAgent.platform.isChromecast=function(){return goog.labs.userAgent.util.matchUserAgent(\"CrKey\")};goog.labs.userAgent.platform.isKaiOS=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"KaiOS\")};goog.labs.userAgent.platform.isGo2Phone=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"GAFP\")};\ngoog.labs.userAgent.platform.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent(),b=\"\";goog.labs.userAgent.platform.isWindows()?(b=/Windows (?:NT|Phone) ([0-9.]+)/,b=(a=b.exec(a))?a[1]:\"0.0\"):goog.labs.userAgent.platform.isIos()?(b=/(?:iPhone|iPod|iPad|CPU)\\s+OS\\s+(\\S+)/,b=(a=b.exec(a))&&a[1].replace(/_/g,\".\")):goog.labs.userAgent.platform.isMacintosh()?(b=/Mac OS X ([0-9_.]+)/,b=(a=b.exec(a))?a[1].replace(/_/g,\".\"):\"10\"):goog.labs.userAgent.platform.isKaiOS()?(b=/(?:KaiOS)\\/(\\S+)/i,\nb=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isAndroid()?(b=/Android\\s+([^\\);]+)(\\)|;)/,b=(a=b.exec(a))&&a[1]):goog.labs.userAgent.platform.isChromeOS()&&(b=/(?:CrOS\\s+(?:i686|x86_64)\\s+([0-9.]+))/,b=(a=b.exec(a))&&a[1]);return b||\"\"};goog.labs.userAgent.platform.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(),a)};goog.reflect={};goog.reflect.object=function(a,b){return b};goog.reflect.objectProperty=function(a,b){return a};goog.reflect.sinkValue=function(a){goog.reflect.sinkValue[\" \"](a);return a};goog.reflect.sinkValue[\" \"]=goog.nullFunction;goog.reflect.canAccessProperty=function(a,b){try{return goog.reflect.sinkValue(a[b]),!0}catch(c){}return!1};goog.reflect.cache=function(a,b,c,d){d=d?d(b):b;return Object.prototype.hasOwnProperty.call(a,d)?a[d]:a[d]=c(b)};goog.labs.userAgent.engine={};goog.labs.userAgent.engine.isPresto=function(){return goog.labs.userAgent.util.matchUserAgent(\"Presto\")};goog.labs.userAgent.engine.isTrident=function(){return goog.labs.userAgent.util.matchUserAgent(\"Trident\")||goog.labs.userAgent.util.matchUserAgent(\"MSIE\")};goog.labs.userAgent.engine.isEdge=function(){return goog.labs.userAgent.util.matchUserAgent(\"Edge\")};\ngoog.labs.userAgent.engine.isWebKit=function(){return goog.labs.userAgent.util.matchUserAgentIgnoreCase(\"WebKit\")&&!goog.labs.userAgent.engine.isEdge()};goog.labs.userAgent.engine.isGecko=function(){return goog.labs.userAgent.util.matchUserAgent(\"Gecko\")&&!goog.labs.userAgent.engine.isWebKit()&&!goog.labs.userAgent.engine.isTrident()&&!goog.labs.userAgent.engine.isEdge()};\ngoog.labs.userAgent.engine.getVersion=function(){var a=goog.labs.userAgent.util.getUserAgent();if(a){a=goog.labs.userAgent.util.extractVersionTuples(a);var b=goog.labs.userAgent.engine.getEngineTuple_(a);if(b)return\"Gecko\"==b[0]?goog.labs.userAgent.engine.getVersionForKey_(a,\"Firefox\"):b[1];a=a[0];var c;if(a&&(c=a[2])&&(c=/Trident\\/([^\\s;]+)/.exec(c)))return c[1]}return\"\"};\ngoog.labs.userAgent.engine.getEngineTuple_=function(a){if(!goog.labs.userAgent.engine.isEdge())return a[1];for(var b=0;b<a.length;b++){var c=a[b];if(\"Edge\"==c[0])return c}};goog.labs.userAgent.engine.isVersionOrHigher=function(a){return 0<=goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(),a)};goog.labs.userAgent.engine.getVersionForKey_=function(a,b){return(a=goog.array.find(a,function(a){return b==a[0]}))&&a[1]||\"\"};goog.userAgent={};goog.userAgent.ASSUME_IE=!1;goog.userAgent.ASSUME_EDGE=!1;goog.userAgent.ASSUME_GECKO=!1;goog.userAgent.ASSUME_WEBKIT=!1;goog.userAgent.ASSUME_MOBILE_WEBKIT=!1;goog.userAgent.ASSUME_OPERA=!1;goog.userAgent.ASSUME_ANY_VERSION=!1;goog.userAgent.BROWSER_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_GECKO||goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_OPERA;goog.userAgent.getUserAgentString=function(){return goog.labs.userAgent.util.getUserAgent()};\ngoog.userAgent.getNavigatorTyped=function(){return goog.global.navigator||null};goog.userAgent.getNavigator=function(){return goog.userAgent.getNavigatorTyped()};goog.userAgent.OPERA=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_OPERA:goog.labs.userAgent.browser.isOpera();goog.userAgent.IE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_IE:goog.labs.userAgent.browser.isIE();goog.userAgent.EDGE=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_EDGE:goog.labs.userAgent.engine.isEdge();\ngoog.userAgent.EDGE_OR_IE=goog.userAgent.EDGE||goog.userAgent.IE;goog.userAgent.GECKO=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_GECKO:goog.labs.userAgent.engine.isGecko();goog.userAgent.WEBKIT=goog.userAgent.BROWSER_KNOWN_?goog.userAgent.ASSUME_WEBKIT||goog.userAgent.ASSUME_MOBILE_WEBKIT:goog.labs.userAgent.engine.isWebKit();goog.userAgent.isMobile_=function(){return goog.userAgent.WEBKIT&&goog.labs.userAgent.util.matchUserAgent(\"Mobile\")};\ngoog.userAgent.MOBILE=goog.userAgent.ASSUME_MOBILE_WEBKIT||goog.userAgent.isMobile_();goog.userAgent.SAFARI=goog.userAgent.WEBKIT;goog.userAgent.determinePlatform_=function(){var a=goog.userAgent.getNavigatorTyped();return a&&a.platform||\"\"};goog.userAgent.PLATFORM=goog.userAgent.determinePlatform_();goog.userAgent.ASSUME_MAC=!1;goog.userAgent.ASSUME_WINDOWS=!1;goog.userAgent.ASSUME_LINUX=!1;goog.userAgent.ASSUME_X11=!1;goog.userAgent.ASSUME_ANDROID=!1;goog.userAgent.ASSUME_IPHONE=!1;\ngoog.userAgent.ASSUME_IPAD=!1;goog.userAgent.ASSUME_IPOD=!1;goog.userAgent.ASSUME_KAIOS=!1;goog.userAgent.ASSUME_GO2PHONE=!1;goog.userAgent.PLATFORM_KNOWN_=goog.userAgent.ASSUME_MAC||goog.userAgent.ASSUME_WINDOWS||goog.userAgent.ASSUME_LINUX||goog.userAgent.ASSUME_X11||goog.userAgent.ASSUME_ANDROID||goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD;goog.userAgent.MAC=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_MAC:goog.labs.userAgent.platform.isMacintosh();\ngoog.userAgent.WINDOWS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_WINDOWS:goog.labs.userAgent.platform.isWindows();goog.userAgent.isLegacyLinux_=function(){return goog.labs.userAgent.platform.isLinux()||goog.labs.userAgent.platform.isChromeOS()};goog.userAgent.LINUX=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_LINUX:goog.userAgent.isLegacyLinux_();goog.userAgent.isX11_=function(){var a=goog.userAgent.getNavigatorTyped();return!!a&&goog.string.contains(a.appVersion||\"\",\"X11\")};\ngoog.userAgent.X11=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_X11:goog.userAgent.isX11_();goog.userAgent.ANDROID=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_ANDROID:goog.labs.userAgent.platform.isAndroid();goog.userAgent.IPHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE:goog.labs.userAgent.platform.isIphone();goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();\ngoog.userAgent.IPOD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIpod();goog.userAgent.IOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPHONE||goog.userAgent.ASSUME_IPAD||goog.userAgent.ASSUME_IPOD:goog.labs.userAgent.platform.isIos();goog.userAgent.KAIOS=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_KAIOS:goog.labs.userAgent.platform.isKaiOS();goog.userAgent.GO2PHONE=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_GO2PHONE:goog.labs.userAgent.platform.isGo2Phone();\ngoog.userAgent.determineVersion_=function(){var a=\"\",b=goog.userAgent.getVersionRegexResult_();b&&(a=b?b[1]:\"\");return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),null!=b&&b>parseFloat(a))?String(b):a};\ngoog.userAgent.getVersionRegexResult_=function(){var a=goog.userAgent.getUserAgentString();if(goog.userAgent.GECKO)return/rv:([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.EDGE)return/Edge\\/([\\d\\.]+)/.exec(a);if(goog.userAgent.IE)return/\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(goog.userAgent.WEBKIT)return/WebKit\\/(\\S+)/.exec(a);if(goog.userAgent.OPERA)return/(?:Version)[ \\/]?(\\S+)/.exec(a)};goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};\ngoog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={};goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_,a,function(){return 0<=goog.string.compareVersions(goog.userAgent.VERSION,a)})};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;\ngoog.userAgent.isDocumentModeOrHigher=function(a){return Number(goog.userAgent.DOCUMENT_MODE)>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher;goog.userAgent.DOCUMENT_MODE=function(){if(goog.global.document&&goog.userAgent.IE)return goog.userAgent.getDocumentMode_()}();goog.userAgent.product={};goog.userAgent.product.ASSUME_FIREFOX=!1;goog.userAgent.product.ASSUME_IPHONE=!1;goog.userAgent.product.ASSUME_IPAD=!1;goog.userAgent.product.ASSUME_ANDROID=!1;goog.userAgent.product.ASSUME_CHROME=!1;goog.userAgent.product.ASSUME_SAFARI=!1;\ngoog.userAgent.product.PRODUCT_KNOWN_=goog.userAgent.ASSUME_IE||goog.userAgent.ASSUME_EDGE||goog.userAgent.ASSUME_OPERA||goog.userAgent.product.ASSUME_FIREFOX||goog.userAgent.product.ASSUME_IPHONE||goog.userAgent.product.ASSUME_IPAD||goog.userAgent.product.ASSUME_ANDROID||goog.userAgent.product.ASSUME_CHROME||goog.userAgent.product.ASSUME_SAFARI;goog.userAgent.product.OPERA=goog.userAgent.OPERA;goog.userAgent.product.IE=goog.userAgent.IE;goog.userAgent.product.EDGE=goog.userAgent.EDGE;\ngoog.userAgent.product.FIREFOX=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_FIREFOX:goog.labs.userAgent.browser.isFirefox();goog.userAgent.product.isIphoneOrIpod_=function(){return goog.labs.userAgent.platform.isIphone()||goog.labs.userAgent.platform.isIpod()};goog.userAgent.product.IPHONE=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPHONE:goog.userAgent.product.isIphoneOrIpod_();\ngoog.userAgent.product.IPAD=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_IPAD:goog.labs.userAgent.platform.isIpad();goog.userAgent.product.ANDROID=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_ANDROID:goog.labs.userAgent.browser.isAndroidBrowser();goog.userAgent.product.CHROME=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_CHROME:goog.labs.userAgent.browser.isChrome();\ngoog.userAgent.product.isSafariDesktop_=function(){return goog.labs.userAgent.browser.isSafari()&&!goog.labs.userAgent.platform.isIos()};goog.userAgent.product.SAFARI=goog.userAgent.product.PRODUCT_KNOWN_?goog.userAgent.product.ASSUME_SAFARI:goog.userAgent.product.isSafariDesktop_();goog.crypt.base64={};goog.crypt.base64.DEFAULT_ALPHABET_COMMON_=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";goog.crypt.base64.ENCODED_VALS=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+\"+/=\";goog.crypt.base64.ENCODED_VALS_WEBSAFE=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_+\"-_.\";goog.crypt.base64.Alphabet={DEFAULT:0,NO_PADDING:1,WEBSAFE:2,WEBSAFE_DOT_PADDING:3,WEBSAFE_NO_PADDING:4};goog.crypt.base64.paddingChars_=\"=.\";\ngoog.crypt.base64.isPadding_=function(a){return goog.string.contains(goog.crypt.base64.paddingChars_,a)};goog.crypt.base64.byteToCharMaps_={};goog.crypt.base64.charToByteMap_=null;goog.crypt.base64.ASSUME_NATIVE_SUPPORT_=goog.userAgent.GECKO||goog.userAgent.WEBKIT&&!goog.userAgent.product.SAFARI||goog.userAgent.OPERA;goog.crypt.base64.HAS_NATIVE_ENCODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||\"function\"==typeof goog.global.btoa;\ngoog.crypt.base64.HAS_NATIVE_DECODE_=goog.crypt.base64.ASSUME_NATIVE_SUPPORT_||!goog.userAgent.product.SAFARI&&!goog.userAgent.IE&&\"function\"==typeof goog.global.atob;\ngoog.crypt.base64.encodeByteArray=function(a,b){goog.asserts.assert(goog.isArrayLike(a),\"encodeByteArray takes an array as a parameter\");void 0===b&&(b=goog.crypt.base64.Alphabet.DEFAULT);goog.crypt.base64.init_();b=goog.crypt.base64.byteToCharMaps_[b];for(var c=[],d=0;d<a.length;d+=3){var e=a[d],f=d+1<a.length,g=f?a[d+1]:0,h=d+2<a.length,k=h?a[d+2]:0,l=e>>2;e=(e&3)<<4|g>>4;g=(g&15)<<2|k>>6;k&=63;h||(k=64,f||(g=64));c.push(b[l],b[e],b[g]||\"\",b[k]||\"\")}return c.join(\"\")};\ngoog.crypt.base64.encodeString=function(a,b){return goog.crypt.base64.HAS_NATIVE_ENCODE_&&!b?goog.global.btoa(a):goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(a),b)};goog.crypt.base64.decodeString=function(a,b){if(goog.crypt.base64.HAS_NATIVE_DECODE_&&!b)return goog.global.atob(a);var c=\"\";goog.crypt.base64.decodeStringInternal_(a,function(a){c+=String.fromCharCode(a)});return c};\ngoog.crypt.base64.decodeStringToByteArray=function(a,b){var c=[];goog.crypt.base64.decodeStringInternal_(a,function(a){c.push(a)});return c};\ngoog.crypt.base64.decodeStringToUint8Array=function(a){goog.asserts.assert(!goog.userAgent.IE||goog.userAgent.isVersionOrHigher(\"10\"),\"Browser does not support typed arrays\");var b=a.length,c=3*b/4;c%3?c=Math.floor(c):goog.crypt.base64.isPadding_(a[b-1])&&(c=goog.crypt.base64.isPadding_(a[b-2])?c-2:c-1);var d=new Uint8Array(c),e=0;goog.crypt.base64.decodeStringInternal_(a,function(a){d[e++]=a});return d.subarray(0,e)};\ngoog.crypt.base64.decodeStringInternal_=function(a,b){function c(b){for(;d<a.length;){var c=a.charAt(d++),e=goog.crypt.base64.charToByteMap_[c];if(null!=e)return e;if(!goog.string.isEmptyOrWhitespace(c))throw Error(\"Unknown base64 encoding at char: \"+c);}return b}goog.crypt.base64.init_();for(var d=0;;){var e=c(-1),f=c(0),g=c(64),h=c(64);if(64===h&&-1===e)break;b(e<<2|f>>4);64!=g&&(b(f<<4&240|g>>2),64!=h&&b(g<<6&192|h))}};\ngoog.crypt.base64.init_=function(){if(!goog.crypt.base64.charToByteMap_){goog.crypt.base64.charToByteMap_={};for(var a=goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(\"\"),b=[\"+/=\",\"+/\",\"-_=\",\"-_.\",\"-_\"],c=0;5>c;c++){var d=a.concat(b[c].split(\"\"));goog.crypt.base64.byteToCharMaps_[c]=d;for(var e=0;e<d.length;e++){var f=d[e],g=goog.crypt.base64.charToByteMap_[f];void 0===g?goog.crypt.base64.charToByteMap_[f]=e:goog.asserts.assert(g===e)}}}};jspb.utils={};jspb.utils.split64Low=0;jspb.utils.split64High=0;jspb.utils.splitUint64=function(a){var b=a>>>0;a=Math.floor((a-b)/jspb.BinaryConstants.TWO_TO_32)>>>0;jspb.utils.split64Low=b;jspb.utils.split64High=a};jspb.utils.splitInt64=function(a){var b=0>a;a=Math.abs(a);var c=a>>>0;a=Math.floor((a-c)/jspb.BinaryConstants.TWO_TO_32);a>>>=0;b&&(a=~a>>>0,c=(~c>>>0)+1,4294967295<c&&(c=0,a++,4294967295<a&&(a=0)));jspb.utils.split64Low=c;jspb.utils.split64High=a};\njspb.utils.splitZigzag64=function(a){var b=0>a;a=2*Math.abs(a);jspb.utils.splitUint64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;b&&(0==a?0==c?c=a=4294967295:(c--,a=4294967295):a--);jspb.utils.split64Low=a;jspb.utils.split64High=c};\njspb.utils.splitFloat32=function(a){var b=0>a?1:0;a=b?-a:a;if(0===a)0<1/a?(jspb.utils.split64High=0,jspb.utils.split64Low=0):(jspb.utils.split64High=0,jspb.utils.split64Low=2147483648);else if(isNaN(a))jspb.utils.split64High=0,jspb.utils.split64Low=2147483647;else if(a>jspb.BinaryConstants.FLOAT32_MAX)jspb.utils.split64High=0,jspb.utils.split64Low=(b<<31|2139095040)>>>0;else if(a<jspb.BinaryConstants.FLOAT32_MIN)a=Math.round(a/Math.pow(2,-149)),jspb.utils.split64High=0,jspb.utils.split64Low=(b<<31|\na)>>>0;else{var c=Math.floor(Math.log(a)/Math.LN2);a*=Math.pow(2,-c);a=Math.round(a*jspb.BinaryConstants.TWO_TO_23)&8388607;jspb.utils.split64High=0;jspb.utils.split64Low=(b<<31|c+127<<23|a)>>>0}};\njspb.utils.splitFloat64=function(a){var b=0>a?1:0;a=b?-a:a;if(0===a)jspb.utils.split64High=0<1/a?0:2147483648,jspb.utils.split64Low=0;else if(isNaN(a))jspb.utils.split64High=2147483647,jspb.utils.split64Low=4294967295;else if(a>jspb.BinaryConstants.FLOAT64_MAX)jspb.utils.split64High=(b<<31|2146435072)>>>0,jspb.utils.split64Low=0;else if(a<jspb.BinaryConstants.FLOAT64_MIN){var c=a/Math.pow(2,-1074);a=c/jspb.BinaryConstants.TWO_TO_32;jspb.utils.split64High=(b<<31|a)>>>0;jspb.utils.split64Low=c>>>0}else{c=\na;var d=0;if(2<=c)for(;2<=c&&1023>d;)d++,c/=2;else for(;1>c&&-1022<d;)c*=2,d--;c=a*Math.pow(2,-d);a=c*jspb.BinaryConstants.TWO_TO_20&1048575;c=c*jspb.BinaryConstants.TWO_TO_52>>>0;jspb.utils.split64High=(b<<31|d+1023<<20|a)>>>0;jspb.utils.split64Low=c}};\njspb.utils.splitHash64=function(a){var b=a.charCodeAt(0),c=a.charCodeAt(1),d=a.charCodeAt(2),e=a.charCodeAt(3),f=a.charCodeAt(4),g=a.charCodeAt(5),h=a.charCodeAt(6);a=a.charCodeAt(7);jspb.utils.split64Low=b+(c<<8)+(d<<16)+(e<<24)>>>0;jspb.utils.split64High=f+(g<<8)+(h<<16)+(a<<24)>>>0};jspb.utils.joinUint64=function(a,b){return b*jspb.BinaryConstants.TWO_TO_32+(a>>>0)};\njspb.utils.joinInt64=function(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b>>>0,0==a&&(b=b+1>>>0));a=jspb.utils.joinUint64(a,b);return c?-a:a};jspb.utils.toZigzag64=function(a,b,c){var d=b>>31;return c(a<<1^d,(b<<1|a>>>31)^d)};jspb.utils.joinZigzag64=function(a,b){return jspb.utils.fromZigzag64(a,b,jspb.utils.joinInt64)};jspb.utils.fromZigzag64=function(a,b,c){var d=-(a&1);return c((a>>>1|b<<31)^d,b>>>1^d)};\njspb.utils.joinFloat32=function(a,b){b=2*(a>>31)+1;var c=a>>>23&255;a&=8388607;return 255==c?a?NaN:Infinity*b:0==c?b*Math.pow(2,-149)*a:b*Math.pow(2,c-150)*(a+Math.pow(2,23))};jspb.utils.joinFloat64=function(a,b){var c=2*(b>>31)+1,d=b>>>20&2047;a=jspb.BinaryConstants.TWO_TO_32*(b&1048575)+a;return 2047==d?a?NaN:Infinity*c:0==d?c*Math.pow(2,-1074)*a:c*Math.pow(2,d-1075)*(a+jspb.BinaryConstants.TWO_TO_52)};\njspb.utils.joinHash64=function(a,b){return String.fromCharCode(a>>>0&255,a>>>8&255,a>>>16&255,a>>>24&255,b>>>0&255,b>>>8&255,b>>>16&255,b>>>24&255)};jspb.utils.DIGITS=\"0123456789abcdef\".split(\"\");jspb.utils.ZERO_CHAR_CODE_=48;jspb.utils.A_CHAR_CODE_=97;\njspb.utils.joinUnsignedDecimalString=function(a,b){function c(a,b){a=a?String(a):\"\";return b?\"0000000\".slice(a.length)+a:a}if(2097151>=b)return\"\"+(jspb.BinaryConstants.TWO_TO_32*b+a);var d=(a>>>24|b<<8)>>>0&16777215;b=b>>16&65535;a=(a&16777215)+6777216*d+6710656*b;d+=8147497*b;b*=2;1E7<=a&&(d+=Math.floor(a/1E7),a%=1E7);1E7<=d&&(b+=Math.floor(d/1E7),d%=1E7);return c(b,0)+c(d,b)+c(a,1)};\njspb.utils.joinSignedDecimalString=function(a,b){var c=b&2147483648;c&&(a=~a+1>>>0,b=~b+(0==a?1:0)>>>0);a=jspb.utils.joinUnsignedDecimalString(a,b);return c?\"-\"+a:a};jspb.utils.hash64ToDecimalString=function(a,b){jspb.utils.splitHash64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;return b?jspb.utils.joinSignedDecimalString(a,c):jspb.utils.joinUnsignedDecimalString(a,c)};\njspb.utils.hash64ArrayToDecimalStrings=function(a,b){for(var c=Array(a.length),d=0;d<a.length;d++)c[d]=jspb.utils.hash64ToDecimalString(a[d],b);return c};\njspb.utils.decimalStringToHash64=function(a){function b(a,b){for(var c=0;8>c&&(1!==a||0<b);c++)b=a*e[c]+b,e[c]=b&255,b>>>=8}function c(){for(var a=0;8>a;a++)e[a]=~e[a]&255}goog.asserts.assert(0<a.length);var d=!1;\"-\"===a[0]&&(d=!0,a=a.slice(1));for(var e=[0,0,0,0,0,0,0,0],f=0;f<a.length;f++)b(10,a.charCodeAt(f)-jspb.utils.ZERO_CHAR_CODE_);d&&(c(),b(1,1));return goog.crypt.byteArrayToString(e)};jspb.utils.splitDecimalString=function(a){jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a))};\njspb.utils.toHexDigit_=function(a){return String.fromCharCode(10>a?jspb.utils.ZERO_CHAR_CODE_+a:jspb.utils.A_CHAR_CODE_-10+a)};jspb.utils.fromHexCharCode_=function(a){return a>=jspb.utils.A_CHAR_CODE_?a-jspb.utils.A_CHAR_CODE_+10:a-jspb.utils.ZERO_CHAR_CODE_};jspb.utils.hash64ToHexString=function(a){var b=Array(18);b[0]=\"0\";b[1]=\"x\";for(var c=0;8>c;c++){var d=a.charCodeAt(7-c);b[2*c+2]=jspb.utils.toHexDigit_(d>>4);b[2*c+3]=jspb.utils.toHexDigit_(d&15)}return b.join(\"\")};\njspb.utils.hexStringToHash64=function(a){a=a.toLowerCase();goog.asserts.assert(18==a.length);goog.asserts.assert(\"0\"==a[0]);goog.asserts.assert(\"x\"==a[1]);for(var b=\"\",c=0;8>c;c++){var d=jspb.utils.fromHexCharCode_(a.charCodeAt(2*c+2)),e=jspb.utils.fromHexCharCode_(a.charCodeAt(2*c+3));b=String.fromCharCode(16*d+e)+b}return b};\njspb.utils.hash64ToNumber=function(a,b){jspb.utils.splitHash64(a);a=jspb.utils.split64Low;var c=jspb.utils.split64High;return b?jspb.utils.joinInt64(a,c):jspb.utils.joinUint64(a,c)};jspb.utils.numberToHash64=function(a){jspb.utils.splitInt64(a);return jspb.utils.joinHash64(jspb.utils.split64Low,jspb.utils.split64High)};jspb.utils.countVarints=function(a,b,c){for(var d=0,e=b;e<c;e++)d+=a[e]>>7;return c-b-d};\njspb.utils.countVarintFields=function(a,b,c,d){var e=0;d=8*d+jspb.BinaryConstants.WireType.VARINT;if(128>d)for(;b<c&&a[b++]==d;)for(e++;;){var f=a[b++];if(0==(f&128))break}else for(;b<c;){for(f=d;128<f;){if(a[b]!=(f&127|128))return e;b++;f>>=7}if(a[b++]!=f)break;for(e++;f=a[b++],0!=(f&128););}return e};jspb.utils.countFixedFields_=function(a,b,c,d,e){var f=0;if(128>d)for(;b<c&&a[b++]==d;)f++,b+=e;else for(;b<c;){for(var g=d;128<g;){if(a[b++]!=(g&127|128))return f;g>>=7}if(a[b++]!=g)break;f++;b+=e}return f};\njspb.utils.countFixed32Fields=function(a,b,c,d){return jspb.utils.countFixedFields_(a,b,c,8*d+jspb.BinaryConstants.WireType.FIXED32,4)};jspb.utils.countFixed64Fields=function(a,b,c,d){return jspb.utils.countFixedFields_(a,b,c,8*d+jspb.BinaryConstants.WireType.FIXED64,8)};\njspb.utils.countDelimitedFields=function(a,b,c,d){var e=0;for(d=8*d+jspb.BinaryConstants.WireType.DELIMITED;b<c;){for(var f=d;128<f;){if(a[b++]!=(f&127|128))return e;f>>=7}if(a[b++]!=f)break;e++;for(var g=0,h=1;f=a[b++],g+=(f&127)*h,h*=128,0!=(f&128););b+=g}return e};jspb.utils.debugBytesToTextFormat=function(a){var b='\"';if(a){a=jspb.utils.byteSourceToUint8Array(a);for(var c=0;c<a.length;c++)b+=\"\\\\x\",16>a[c]&&(b+=\"0\"),b+=a[c].toString(16)}return b+'\"'};\njspb.utils.debugScalarToTextFormat=function(a){return\"string\"===typeof a?goog.string.quote(a):a.toString()};jspb.utils.stringToByteArray=function(a){for(var b=new Uint8Array(a.length),c=0;c<a.length;c++){var d=a.charCodeAt(c);if(255<d)throw Error(\"Conversion error: string contains codepoint outside of byte range\");b[c]=d}return b};\njspb.utils.byteSourceToUint8Array=function(a){if(a.constructor===Uint8Array)return a;if(a.constructor===ArrayBuffer||\"undefined\"!=typeof Buffer&&a.constructor===Buffer||a.constructor===Array)return new Uint8Array(a);if(a.constructor===String)return goog.crypt.base64.decodeStringToUint8Array(a);goog.asserts.fail(\"Type not convertible to Uint8Array.\");return new Uint8Array(0)};jspb.BinaryDecoder=function(a,b,c){this.bytes_=null;this.cursor_=this.end_=this.start_=0;this.error_=!1;a&&this.setBlock(a,b,c)};jspb.BinaryDecoder.instanceCache_=[];jspb.BinaryDecoder.alloc=function(a,b,c){if(jspb.BinaryDecoder.instanceCache_.length){var d=jspb.BinaryDecoder.instanceCache_.pop();a&&d.setBlock(a,b,c);return d}return new jspb.BinaryDecoder(a,b,c)};jspb.BinaryDecoder.prototype.free=function(){this.clear();100>jspb.BinaryDecoder.instanceCache_.length&&jspb.BinaryDecoder.instanceCache_.push(this)};\njspb.BinaryDecoder.prototype.clone=function(){return jspb.BinaryDecoder.alloc(this.bytes_,this.start_,this.end_-this.start_)};jspb.BinaryDecoder.prototype.clear=function(){this.bytes_=null;this.cursor_=this.end_=this.start_=0;this.error_=!1};jspb.BinaryDecoder.prototype.getBuffer=function(){return this.bytes_};\njspb.BinaryDecoder.prototype.setBlock=function(a,b,c){this.bytes_=jspb.utils.byteSourceToUint8Array(a);this.start_=void 0!==b?b:0;this.end_=void 0!==c?this.start_+c:this.bytes_.length;this.cursor_=this.start_};jspb.BinaryDecoder.prototype.getEnd=function(){return this.end_};jspb.BinaryDecoder.prototype.setEnd=function(a){this.end_=a};jspb.BinaryDecoder.prototype.reset=function(){this.cursor_=this.start_};jspb.BinaryDecoder.prototype.getCursor=function(){return this.cursor_};\njspb.BinaryDecoder.prototype.setCursor=function(a){this.cursor_=a};jspb.BinaryDecoder.prototype.advance=function(a){this.cursor_+=a;goog.asserts.assert(this.cursor_<=this.end_)};jspb.BinaryDecoder.prototype.atEnd=function(){return this.cursor_==this.end_};jspb.BinaryDecoder.prototype.pastEnd=function(){return this.cursor_>this.end_};jspb.BinaryDecoder.prototype.getError=function(){return this.error_||0>this.cursor_||this.cursor_>this.end_};\njspb.BinaryDecoder.prototype.readSplitVarint64=function(a){for(var b=128,c=0,d=0,e=0;4>e&&128<=b;e++)b=this.bytes_[this.cursor_++],c|=(b&127)<<7*e;128<=b&&(b=this.bytes_[this.cursor_++],c|=(b&127)<<28,d|=(b&127)>>4);if(128<=b)for(e=0;5>e&&128<=b;e++)b=this.bytes_[this.cursor_++],d|=(b&127)<<7*e+3;if(128>b)return a(c>>>0,d>>>0);goog.asserts.fail(\"Failed to read varint, encoding is invalid.\");this.error_=!0};\njspb.BinaryDecoder.prototype.readSplitZigzagVarint64=function(a){return this.readSplitVarint64(function(b,c){return jspb.utils.fromZigzag64(b,c,a)})};jspb.BinaryDecoder.prototype.readSplitFixed64=function(a){var b=this.bytes_,c=this.cursor_;this.cursor_+=8;for(var d=0,e=0,f=c+7;f>=c;f--)d=d<<8|b[f],e=e<<8|b[f+4];return a(d,e)};jspb.BinaryDecoder.prototype.skipVarint=function(){for(;this.bytes_[this.cursor_]&128;)this.cursor_++;this.cursor_++};\njspb.BinaryDecoder.prototype.unskipVarint=function(a){for(;128<a;)this.cursor_--,a>>>=7;this.cursor_--};\njspb.BinaryDecoder.prototype.readUnsignedVarint32=function(){var a=this.bytes_;var b=a[this.cursor_+0];var c=b&127;if(128>b)return this.cursor_+=1,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+1];c|=(b&127)<<7;if(128>b)return this.cursor_+=2,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+2];c|=(b&127)<<14;if(128>b)return this.cursor_+=3,goog.asserts.assert(this.cursor_<=this.end_),c;b=a[this.cursor_+3];c|=(b&127)<<21;if(128>b)return this.cursor_+=4,goog.asserts.assert(this.cursor_<=\nthis.end_),c;b=a[this.cursor_+4];c|=(b&15)<<28;if(128>b)return this.cursor_+=5,goog.asserts.assert(this.cursor_<=this.end_),c>>>0;this.cursor_+=5;128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&128<=a[this.cursor_++]&&goog.asserts.assert(!1);goog.asserts.assert(this.cursor_<=this.end_);return c};jspb.BinaryDecoder.prototype.readSignedVarint32=jspb.BinaryDecoder.prototype.readUnsignedVarint32;jspb.BinaryDecoder.prototype.readUnsignedVarint32String=function(){return this.readUnsignedVarint32().toString()};\njspb.BinaryDecoder.prototype.readSignedVarint32String=function(){return this.readSignedVarint32().toString()};jspb.BinaryDecoder.prototype.readZigzagVarint32=function(){var a=this.readUnsignedVarint32();return a>>>1^-(a&1)};jspb.BinaryDecoder.prototype.readUnsignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinUint64)};jspb.BinaryDecoder.prototype.readUnsignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString)};\njspb.BinaryDecoder.prototype.readSignedVarint64=function(){return this.readSplitVarint64(jspb.utils.joinInt64)};jspb.BinaryDecoder.prototype.readSignedVarint64String=function(){return this.readSplitVarint64(jspb.utils.joinSignedDecimalString)};jspb.BinaryDecoder.prototype.readZigzagVarint64=function(){return this.readSplitVarint64(jspb.utils.joinZigzag64)};jspb.BinaryDecoder.prototype.readZigzagVarintHash64=function(){return this.readSplitZigzagVarint64(jspb.utils.joinHash64)};\njspb.BinaryDecoder.prototype.readZigzagVarint64String=function(){return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString)};jspb.BinaryDecoder.prototype.readUint8=function(){var a=this.bytes_[this.cursor_+0];this.cursor_+=1;goog.asserts.assert(this.cursor_<=this.end_);return a};jspb.BinaryDecoder.prototype.readUint16=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1];this.cursor_+=2;goog.asserts.assert(this.cursor_<=this.end_);return a<<0|b<<8};\njspb.BinaryDecoder.prototype.readUint32=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1],c=this.bytes_[this.cursor_+2],d=this.bytes_[this.cursor_+3];this.cursor_+=4;goog.asserts.assert(this.cursor_<=this.end_);return(a<<0|b<<8|c<<16|d<<24)>>>0};jspb.BinaryDecoder.prototype.readUint64=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinUint64(a,b)};\njspb.BinaryDecoder.prototype.readUint64String=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinUnsignedDecimalString(a,b)};jspb.BinaryDecoder.prototype.readInt8=function(){var a=this.bytes_[this.cursor_+0];this.cursor_+=1;goog.asserts.assert(this.cursor_<=this.end_);return a<<24>>24};\njspb.BinaryDecoder.prototype.readInt16=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1];this.cursor_+=2;goog.asserts.assert(this.cursor_<=this.end_);return(a<<0|b<<8)<<16>>16};jspb.BinaryDecoder.prototype.readInt32=function(){var a=this.bytes_[this.cursor_+0],b=this.bytes_[this.cursor_+1],c=this.bytes_[this.cursor_+2],d=this.bytes_[this.cursor_+3];this.cursor_+=4;goog.asserts.assert(this.cursor_<=this.end_);return a<<0|b<<8|c<<16|d<<24};\njspb.BinaryDecoder.prototype.readInt64=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinInt64(a,b)};jspb.BinaryDecoder.prototype.readInt64String=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinSignedDecimalString(a,b)};jspb.BinaryDecoder.prototype.readFloat=function(){var a=this.readUint32();return jspb.utils.joinFloat32(a,0)};\njspb.BinaryDecoder.prototype.readDouble=function(){var a=this.readUint32(),b=this.readUint32();return jspb.utils.joinFloat64(a,b)};jspb.BinaryDecoder.prototype.readBool=function(){return!!this.bytes_[this.cursor_++]};jspb.BinaryDecoder.prototype.readEnum=function(){return this.readSignedVarint32()};\njspb.BinaryDecoder.prototype.readString=function(a){var b=this.bytes_,c=this.cursor_;a=c+a;for(var d=[],e=\"\";c<a;){var f=b[c++];if(128>f)d.push(f);else if(192>f)continue;else if(224>f){var g=b[c++];d.push((f&31)<<6|g&63)}else if(240>f){g=b[c++];var h=b[c++];d.push((f&15)<<12|(g&63)<<6|h&63)}else if(248>f){g=b[c++];h=b[c++];var k=b[c++];f=(f&7)<<18|(g&63)<<12|(h&63)<<6|k&63;f-=65536;d.push((f>>10&1023)+55296,(f&1023)+56320)}8192<=d.length&&(e+=String.fromCharCode.apply(null,d),d.length=0)}e+=goog.crypt.byteArrayToString(d);\nthis.cursor_=c;return e};jspb.BinaryDecoder.prototype.readStringWithLength=function(){var a=this.readUnsignedVarint32();return this.readString(a)};jspb.BinaryDecoder.prototype.readBytes=function(a){if(0>a||this.cursor_+a>this.bytes_.length)return this.error_=!0,goog.asserts.fail(\"Invalid byte length!\"),new Uint8Array(0);var b=this.bytes_.subarray(this.cursor_,this.cursor_+a);this.cursor_+=a;goog.asserts.assert(this.cursor_<=this.end_);return b};jspb.BinaryDecoder.prototype.readVarintHash64=function(){return this.readSplitVarint64(jspb.utils.joinHash64)};\njspb.BinaryDecoder.prototype.readFixedHash64=function(){var a=this.bytes_,b=this.cursor_,c=a[b+0],d=a[b+1],e=a[b+2],f=a[b+3],g=a[b+4],h=a[b+5],k=a[b+6];a=a[b+7];this.cursor_+=8;return String.fromCharCode(c,d,e,f,g,h,k,a)};jspb.BinaryReader=function(a,b,c){this.decoder_=jspb.BinaryDecoder.alloc(a,b,c);this.fieldCursor_=this.decoder_.getCursor();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID;this.error_=!1;this.readCallbacks_=null};jspb.BinaryReader.instanceCache_=[];\njspb.BinaryReader.alloc=function(a,b,c){if(jspb.BinaryReader.instanceCache_.length){var d=jspb.BinaryReader.instanceCache_.pop();a&&d.decoder_.setBlock(a,b,c);return d}return new jspb.BinaryReader(a,b,c)};jspb.BinaryReader.prototype.alloc=jspb.BinaryReader.alloc;\njspb.BinaryReader.prototype.free=function(){this.decoder_.clear();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID;this.error_=!1;this.readCallbacks_=null;100>jspb.BinaryReader.instanceCache_.length&&jspb.BinaryReader.instanceCache_.push(this)};jspb.BinaryReader.prototype.getFieldCursor=function(){return this.fieldCursor_};jspb.BinaryReader.prototype.getCursor=function(){return this.decoder_.getCursor()};\njspb.BinaryReader.prototype.getBuffer=function(){return this.decoder_.getBuffer()};jspb.BinaryReader.prototype.getFieldNumber=function(){return this.nextField_};jspb.BinaryReader.prototype.getWireType=function(){return this.nextWireType_};jspb.BinaryReader.prototype.isEndGroup=function(){return this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP};jspb.BinaryReader.prototype.getError=function(){return this.error_||this.decoder_.getError()};\njspb.BinaryReader.prototype.setBlock=function(a,b,c){this.decoder_.setBlock(a,b,c);this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID};jspb.BinaryReader.prototype.reset=function(){this.decoder_.reset();this.nextField_=jspb.BinaryConstants.INVALID_FIELD_NUMBER;this.nextWireType_=jspb.BinaryConstants.WireType.INVALID};jspb.BinaryReader.prototype.advance=function(a){this.decoder_.advance(a)};\njspb.BinaryReader.prototype.nextField=function(){if(this.decoder_.atEnd())return!1;if(this.getError())return goog.asserts.fail(\"Decoder hit an error\"),!1;this.fieldCursor_=this.decoder_.getCursor();var a=this.decoder_.readUnsignedVarint32(),b=a>>>3;a&=7;if(a!=jspb.BinaryConstants.WireType.VARINT&&a!=jspb.BinaryConstants.WireType.FIXED32&&a!=jspb.BinaryConstants.WireType.FIXED64&&a!=jspb.BinaryConstants.WireType.DELIMITED&&a!=jspb.BinaryConstants.WireType.START_GROUP&&a!=jspb.BinaryConstants.WireType.END_GROUP)return goog.asserts.fail(\"Invalid wire type: %s (at position %s)\",\na,this.fieldCursor_),this.error_=!0,!1;this.nextField_=b;this.nextWireType_=a;return!0};jspb.BinaryReader.prototype.unskipHeader=function(){this.decoder_.unskipVarint(this.nextField_<<3|this.nextWireType_)};jspb.BinaryReader.prototype.skipMatchingFields=function(){var a=this.nextField_;for(this.unskipHeader();this.nextField()&&this.getFieldNumber()==a;)this.skipField();this.decoder_.atEnd()||this.unskipHeader()};\njspb.BinaryReader.prototype.skipVarintField=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.VARINT?(goog.asserts.fail(\"Invalid wire type for skipVarintField\"),this.skipField()):this.decoder_.skipVarint()};jspb.BinaryReader.prototype.skipDelimitedField=function(){if(this.nextWireType_!=jspb.BinaryConstants.WireType.DELIMITED)goog.asserts.fail(\"Invalid wire type for skipDelimitedField\"),this.skipField();else{var a=this.decoder_.readUnsignedVarint32();this.decoder_.advance(a)}};\njspb.BinaryReader.prototype.skipFixed32Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED32?(goog.asserts.fail(\"Invalid wire type for skipFixed32Field\"),this.skipField()):this.decoder_.advance(4)};jspb.BinaryReader.prototype.skipFixed64Field=function(){this.nextWireType_!=jspb.BinaryConstants.WireType.FIXED64?(goog.asserts.fail(\"Invalid wire type for skipFixed64Field\"),this.skipField()):this.decoder_.advance(8)};\njspb.BinaryReader.prototype.skipGroup=function(){var a=this.nextField_;do{if(!this.nextField()){goog.asserts.fail(\"Unmatched start-group tag: stream EOF\");this.error_=!0;break}if(this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP){this.nextField_!=a&&(goog.asserts.fail(\"Unmatched end-group tag\"),this.error_=!0);break}this.skipField()}while(1)};\njspb.BinaryReader.prototype.skipField=function(){switch(this.nextWireType_){case jspb.BinaryConstants.WireType.VARINT:this.skipVarintField();break;case jspb.BinaryConstants.WireType.FIXED64:this.skipFixed64Field();break;case jspb.BinaryConstants.WireType.DELIMITED:this.skipDelimitedField();break;case jspb.BinaryConstants.WireType.FIXED32:this.skipFixed32Field();break;case jspb.BinaryConstants.WireType.START_GROUP:this.skipGroup();break;default:goog.asserts.fail(\"Invalid wire encoding for field.\")}};\njspb.BinaryReader.prototype.registerReadCallback=function(a,b){null===this.readCallbacks_&&(this.readCallbacks_={});goog.asserts.assert(!this.readCallbacks_[a]);this.readCallbacks_[a]=b};jspb.BinaryReader.prototype.runReadCallback=function(a){goog.asserts.assert(null!==this.readCallbacks_);a=this.readCallbacks_[a];goog.asserts.assert(a);return a(this)};\njspb.BinaryReader.prototype.readAny=function(a){this.nextWireType_=jspb.BinaryConstants.FieldTypeToWireType(a);var b=jspb.BinaryConstants.FieldType;switch(a){case b.DOUBLE:return this.readDouble();case b.FLOAT:return this.readFloat();case b.INT64:return this.readInt64();case b.UINT64:return this.readUint64();case b.INT32:return this.readInt32();case b.FIXED64:return this.readFixed64();case b.FIXED32:return this.readFixed32();case b.BOOL:return this.readBool();case b.STRING:return this.readString();\ncase b.GROUP:goog.asserts.fail(\"Group field type not supported in readAny()\");case b.MESSAGE:goog.asserts.fail(\"Message field type not supported in readAny()\");case b.BYTES:return this.readBytes();case b.UINT32:return this.readUint32();case b.ENUM:return this.readEnum();case b.SFIXED32:return this.readSfixed32();case b.SFIXED64:return this.readSfixed64();case b.SINT32:return this.readSint32();case b.SINT64:return this.readSint64();case b.FHASH64:return this.readFixedHash64();case b.VHASH64:return this.readVarintHash64();\ndefault:goog.asserts.fail(\"Invalid field type in readAny()\")}return 0};jspb.BinaryReader.prototype.readMessage=function(a,b){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var c=this.decoder_.getEnd(),d=this.decoder_.readUnsignedVarint32();d=this.decoder_.getCursor()+d;this.decoder_.setEnd(d);b(a,this);this.decoder_.setCursor(d);this.decoder_.setEnd(c)};\njspb.BinaryReader.prototype.readGroup=function(a,b,c){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.START_GROUP);goog.asserts.assert(this.nextField_==a);c(b,this);this.error_||this.nextWireType_==jspb.BinaryConstants.WireType.END_GROUP||(goog.asserts.fail(\"Group submessage did not end with an END_GROUP tag\"),this.error_=!0)};\njspb.BinaryReader.prototype.getFieldDecoder=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32(),b=this.decoder_.getCursor(),c=b+a;a=jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(),b,a);this.decoder_.setCursor(c);return a};jspb.BinaryReader.prototype.readInt32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint32()};\njspb.BinaryReader.prototype.readInt32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint32String()};jspb.BinaryReader.prototype.readInt64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64()};jspb.BinaryReader.prototype.readInt64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64String()};\njspb.BinaryReader.prototype.readUint32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint32()};jspb.BinaryReader.prototype.readUint32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint32String()};jspb.BinaryReader.prototype.readUint64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint64()};\njspb.BinaryReader.prototype.readUint64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readUnsignedVarint64String()};jspb.BinaryReader.prototype.readSint32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint32()};jspb.BinaryReader.prototype.readSint64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint64()};\njspb.BinaryReader.prototype.readSint64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarint64String()};jspb.BinaryReader.prototype.readFixed32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readUint32()};jspb.BinaryReader.prototype.readFixed64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readUint64()};\njspb.BinaryReader.prototype.readFixed64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readUint64String()};jspb.BinaryReader.prototype.readSfixed32=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readInt32()};jspb.BinaryReader.prototype.readSfixed32String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readInt32().toString()};\njspb.BinaryReader.prototype.readSfixed64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readInt64()};jspb.BinaryReader.prototype.readSfixed64String=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readInt64String()};jspb.BinaryReader.prototype.readFloat=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED32);return this.decoder_.readFloat()};\njspb.BinaryReader.prototype.readDouble=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readDouble()};jspb.BinaryReader.prototype.readBool=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return!!this.decoder_.readUnsignedVarint32()};jspb.BinaryReader.prototype.readEnum=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSignedVarint64()};\njspb.BinaryReader.prototype.readString=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32();return this.decoder_.readString(a)};jspb.BinaryReader.prototype.readBytes=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var a=this.decoder_.readUnsignedVarint32();return this.decoder_.readBytes(a)};\njspb.BinaryReader.prototype.readVarintHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readVarintHash64()};jspb.BinaryReader.prototype.readSintHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readZigzagVarintHash64()};jspb.BinaryReader.prototype.readSplitVarint64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSplitVarint64(a)};\njspb.BinaryReader.prototype.readSplitZigzagVarint64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.VARINT);return this.decoder_.readSplitVarint64(function(b,c){return jspb.utils.fromZigzag64(b,c,a)})};jspb.BinaryReader.prototype.readFixedHash64=function(){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readFixedHash64()};\njspb.BinaryReader.prototype.readSplitFixed64=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.FIXED64);return this.decoder_.readSplitFixed64(a)};jspb.BinaryReader.prototype.readPackedField_=function(a){goog.asserts.assert(this.nextWireType_==jspb.BinaryConstants.WireType.DELIMITED);var b=this.decoder_.readUnsignedVarint32();b=this.decoder_.getCursor()+b;for(var c=[];this.decoder_.getCursor()<b;)c.push(a.call(this.decoder_));return c};\njspb.BinaryReader.prototype.readPackedInt32=function(){return this.readPackedField_(this.decoder_.readSignedVarint32)};jspb.BinaryReader.prototype.readPackedInt32String=function(){return this.readPackedField_(this.decoder_.readSignedVarint32String)};jspb.BinaryReader.prototype.readPackedInt64=function(){return this.readPackedField_(this.decoder_.readSignedVarint64)};jspb.BinaryReader.prototype.readPackedInt64String=function(){return this.readPackedField_(this.decoder_.readSignedVarint64String)};\njspb.BinaryReader.prototype.readPackedUint32=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32)};jspb.BinaryReader.prototype.readPackedUint32String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint32String)};jspb.BinaryReader.prototype.readPackedUint64=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64)};jspb.BinaryReader.prototype.readPackedUint64String=function(){return this.readPackedField_(this.decoder_.readUnsignedVarint64String)};\njspb.BinaryReader.prototype.readPackedSint32=function(){return this.readPackedField_(this.decoder_.readZigzagVarint32)};jspb.BinaryReader.prototype.readPackedSint64=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64)};jspb.BinaryReader.prototype.readPackedSint64String=function(){return this.readPackedField_(this.decoder_.readZigzagVarint64String)};jspb.BinaryReader.prototype.readPackedFixed32=function(){return this.readPackedField_(this.decoder_.readUint32)};\njspb.BinaryReader.prototype.readPackedFixed64=function(){return this.readPackedField_(this.decoder_.readUint64)};jspb.BinaryReader.prototype.readPackedFixed64String=function(){return this.readPackedField_(this.decoder_.readUint64String)};jspb.BinaryReader.prototype.readPackedSfixed32=function(){return this.readPackedField_(this.decoder_.readInt32)};jspb.BinaryReader.prototype.readPackedSfixed64=function(){return this.readPackedField_(this.decoder_.readInt64)};\njspb.BinaryReader.prototype.readPackedSfixed64String=function(){return this.readPackedField_(this.decoder_.readInt64String)};jspb.BinaryReader.prototype.readPackedFloat=function(){return this.readPackedField_(this.decoder_.readFloat)};jspb.BinaryReader.prototype.readPackedDouble=function(){return this.readPackedField_(this.decoder_.readDouble)};jspb.BinaryReader.prototype.readPackedBool=function(){return this.readPackedField_(this.decoder_.readBool)};jspb.BinaryReader.prototype.readPackedEnum=function(){return this.readPackedField_(this.decoder_.readEnum)};\njspb.BinaryReader.prototype.readPackedVarintHash64=function(){return this.readPackedField_(this.decoder_.readVarintHash64)};jspb.BinaryReader.prototype.readPackedFixedHash64=function(){return this.readPackedField_(this.decoder_.readFixedHash64)};jspb.Map=function(a,b){this.arr_=a;this.valueCtor_=b;this.map_={};this.arrClean=!0;0<this.arr_.length&&this.loadFromArray_()};jspb.Map.prototype.loadFromArray_=function(){for(var a=0;a<this.arr_.length;a++){var b=this.arr_[a],c=b[0];this.map_[c.toString()]=new jspb.Map.Entry_(c,b[1])}this.arrClean=!0};\njspb.Map.prototype.toArray=function(){if(this.arrClean){if(this.valueCtor_){var a=this.map_,b;for(b in a)if(Object.prototype.hasOwnProperty.call(a,b)){var c=a[b].valueWrapper;c&&c.toArray()}}}else{this.arr_.length=0;a=this.stringKeys_();a.sort();for(b=0;b<a.length;b++){var d=this.map_[a[b]];(c=d.valueWrapper)&&c.toArray();this.arr_.push([d.key,d.value])}this.arrClean=!0}return this.arr_};\njspb.Map.prototype.toObject=function(a,b){for(var c=this.toArray(),d=[],e=0;e<c.length;e++){var f=this.map_[c[e][0].toString()];this.wrapEntry_(f);var g=f.valueWrapper;g?(goog.asserts.assert(b),d.push([f.key,b(a,g)])):d.push([f.key,f.value])}return d};jspb.Map.fromObject=function(a,b,c){b=new jspb.Map([],b);for(var d=0;d<a.length;d++){var e=a[d][0],f=c(a[d][1]);b.set(e,f)}return b};jspb.Map.ArrayIteratorIterable_=function(a){this.idx_=0;this.arr_=a};\njspb.Map.ArrayIteratorIterable_.prototype.next=function(){return this.idx_<this.arr_.length?{done:!1,value:this.arr_[this.idx_++]}:{done:!0,value:void 0}};\"undefined\"!=typeof Symbol&&(jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator]=function(){return this});jspb.Map.prototype.getLength=function(){return this.stringKeys_().length};jspb.Map.prototype.clear=function(){this.map_={};this.arrClean=!1};\njspb.Map.prototype.del=function(a){a=a.toString();var b=this.map_.hasOwnProperty(a);delete this.map_[a];this.arrClean=!1;return b};jspb.Map.prototype.getEntryList=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++){var d=this.map_[b[c]];a.push([d.key,d.value])}return a};jspb.Map.prototype.entries=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++){var d=this.map_[b[c]];a.push([d.key,this.wrapEntry_(d)])}return new jspb.Map.ArrayIteratorIterable_(a)};\njspb.Map.prototype.keys=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++)a.push(this.map_[b[c]].key);return new jspb.Map.ArrayIteratorIterable_(a)};jspb.Map.prototype.values=function(){var a=[],b=this.stringKeys_();b.sort();for(var c=0;c<b.length;c++)a.push(this.wrapEntry_(this.map_[b[c]]));return new jspb.Map.ArrayIteratorIterable_(a)};\njspb.Map.prototype.forEach=function(a,b){var c=this.stringKeys_();c.sort();for(var d=0;d<c.length;d++){var e=this.map_[c[d]];a.call(b,this.wrapEntry_(e),e.key,this)}};jspb.Map.prototype.set=function(a,b){var c=new jspb.Map.Entry_(a);this.valueCtor_?(c.valueWrapper=b,c.value=b.toArray()):c.value=b;this.map_[a.toString()]=c;this.arrClean=!1;return this};jspb.Map.prototype.wrapEntry_=function(a){return this.valueCtor_?(a.valueWrapper||(a.valueWrapper=new this.valueCtor_(a.value)),a.valueWrapper):a.value};\njspb.Map.prototype.get=function(a){if(a=this.map_[a.toString()])return this.wrapEntry_(a)};jspb.Map.prototype.has=function(a){return a.toString()in this.map_};jspb.Map.prototype.serializeBinary=function(a,b,c,d,e){var f=this.stringKeys_();f.sort();for(var g=0;g<f.length;g++){var h=this.map_[f[g]];b.beginSubMessage(a);c.call(b,1,h.key);this.valueCtor_?d.call(b,2,this.wrapEntry_(h),e):d.call(b,2,h.value);b.endSubMessage()}};\njspb.Map.deserializeBinary=function(a,b,c,d,e,f,g){for(;b.nextField()&&!b.isEndGroup();){var h=b.getFieldNumber();1==h?f=c.call(b):2==h&&(a.valueCtor_?(goog.asserts.assert(e),g||(g=new a.valueCtor_),d.call(b,g,e)):g=d.call(b))}goog.asserts.assert(void 0!=f);goog.asserts.assert(void 0!=g);a.set(f,g)};jspb.Map.prototype.stringKeys_=function(){var a=this.map_,b=[],c;for(c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b};\njspb.Map.Entry_=function(a,b){this.key=a;this.value=b;this.valueWrapper=void 0};jspb.ExtensionFieldInfo=function(a,b,c,d,e){this.fieldIndex=a;this.fieldName=b;this.ctor=c;this.toObjectFn=d;this.isRepeated=e};jspb.ExtensionFieldBinaryInfo=function(a,b,c,d,e,f){this.fieldInfo=a;this.binaryReaderFn=b;this.binaryWriterFn=c;this.binaryMessageSerializeFn=d;this.binaryMessageDeserializeFn=e;this.isPacked=f};jspb.ExtensionFieldInfo.prototype.isMessageType=function(){return!!this.ctor};jspb.Message=function(){};jspb.Message.GENERATE_TO_OBJECT=!0;jspb.Message.GENERATE_FROM_OBJECT=!goog.DISALLOW_TEST_ONLY_CODE;\njspb.Message.GENERATE_TO_STRING=!0;jspb.Message.ASSUME_LOCAL_ARRAYS=!1;jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS=!0;jspb.Message.SUPPORTS_UINT8ARRAY_=\"function\"==typeof Uint8Array;jspb.Message.prototype.getJsPbMessageId=function(){return this.messageId_};jspb.Message.getIndex_=function(a,b){return b+a.arrayIndexOffset_};jspb.Message.hiddenES6Property_=function(){};jspb.Message.getFieldNumber_=function(a,b){return b-a.arrayIndexOffset_};\njspb.Message.initialize=function(a,b,c,d,e,f){a.wrappers_=null;b||(b=c?[c]:[]);a.messageId_=c?String(c):void 0;a.arrayIndexOffset_=0===c?-1:0;a.array=b;jspb.Message.initPivotAndExtensionObject_(a,d);a.convertedPrimitiveFields_={};jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS||(a.repeatedFields=e);if(e)for(b=0;b<e.length;b++)c=e[b],c<a.pivot_?(c=jspb.Message.getIndex_(a,c),a.array[c]=a.array[c]||jspb.Message.EMPTY_LIST_SENTINEL_):(jspb.Message.maybeInitEmptyExtensionObject_(a),a.extensionObject_[c]=\na.extensionObject_[c]||jspb.Message.EMPTY_LIST_SENTINEL_);if(f&&f.length)for(b=0;b<f.length;b++)jspb.Message.computeOneofCase(a,f[b])};jspb.Message.EMPTY_LIST_SENTINEL_=goog.DEBUG&&Object.freeze?Object.freeze([]):[];jspb.Message.isArray_=function(a){return jspb.Message.ASSUME_LOCAL_ARRAYS?a instanceof Array:goog.isArray(a)};jspb.Message.isExtensionObject_=function(a){return null!==a&&\"object\"==typeof a&&!jspb.Message.isArray_(a)&&!(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)};\njspb.Message.initPivotAndExtensionObject_=function(a,b){var c=a.array.length,d=-1;if(c&&(d=c-1,c=a.array[d],jspb.Message.isExtensionObject_(c))){a.pivot_=jspb.Message.getFieldNumber_(a,d);a.extensionObject_=c;return}-1<b?(a.pivot_=Math.max(b,jspb.Message.getFieldNumber_(a,d+1)),a.extensionObject_=null):a.pivot_=Number.MAX_VALUE};jspb.Message.maybeInitEmptyExtensionObject_=function(a){var b=jspb.Message.getIndex_(a,a.pivot_);a.array[b]||(a.extensionObject_=a.array[b]={})};\njspb.Message.toObjectList=function(a,b,c){for(var d=[],e=0;e<a.length;e++)d[e]=b.call(a[e],c,a[e]);return d};jspb.Message.toObjectExtension=function(a,b,c,d,e){for(var f in c){var g=c[f],h=d.call(a,g);if(null!=h){for(var k in g.fieldName)if(g.fieldName.hasOwnProperty(k))break;b[k]=g.toObjectFn?g.isRepeated?jspb.Message.toObjectList(h,g.toObjectFn,e):g.toObjectFn(e,h):h}}};\njspb.Message.serializeBinaryExtensions=function(a,b,c,d){for(var e in c){var f=c[e],g=f.fieldInfo;if(!f.binaryWriterFn)throw Error(\"Message extension present that was generated without binary serialization support\");var h=d.call(a,g);if(null!=h)if(g.isMessageType())if(f.binaryMessageSerializeFn)f.binaryWriterFn.call(b,g.fieldIndex,h,f.binaryMessageSerializeFn);else throw Error(\"Message extension present holding submessage without binary support enabled, and message is being serialized to binary format\");\nelse f.binaryWriterFn.call(b,g.fieldIndex,h)}};jspb.Message.readBinaryExtension=function(a,b,c,d,e){var f=c[b.getFieldNumber()];if(f){c=f.fieldInfo;if(!f.binaryReaderFn)throw Error(\"Deserializing extension whose generated code does not support binary format\");if(c.isMessageType()){var g=new c.ctor;f.binaryReaderFn.call(b,g,f.binaryMessageDeserializeFn)}else g=f.binaryReaderFn.call(b);c.isRepeated&&!f.isPacked?(b=d.call(a,c))?b.push(g):e.call(a,c,[g]):e.call(a,c,g)}else b.skipField()};\njspb.Message.getField=function(a,b){if(b<a.pivot_){b=jspb.Message.getIndex_(a,b);var c=a.array[b];return c===jspb.Message.EMPTY_LIST_SENTINEL_?a.array[b]=[]:c}if(a.extensionObject_)return c=a.extensionObject_[b],c===jspb.Message.EMPTY_LIST_SENTINEL_?a.extensionObject_[b]=[]:c};jspb.Message.getRepeatedField=function(a,b){return jspb.Message.getField(a,b)};jspb.Message.getOptionalFloatingPointField=function(a,b){a=jspb.Message.getField(a,b);return null==a?a:+a};\njspb.Message.getBooleanField=function(a,b){a=jspb.Message.getField(a,b);return null==a?a:!!a};jspb.Message.getRepeatedFloatingPointField=function(a,b){var c=jspb.Message.getRepeatedField(a,b);a.convertedPrimitiveFields_||(a.convertedPrimitiveFields_={});if(!a.convertedPrimitiveFields_[b]){for(var d=0;d<c.length;d++)c[d]=+c[d];a.convertedPrimitiveFields_[b]=!0}return c};\njspb.Message.getRepeatedBooleanField=function(a,b){var c=jspb.Message.getRepeatedField(a,b);a.convertedPrimitiveFields_||(a.convertedPrimitiveFields_={});if(!a.convertedPrimitiveFields_[b]){for(var d=0;d<c.length;d++)c[d]=!!c[d];a.convertedPrimitiveFields_[b]=!0}return c};\njspb.Message.bytesAsB64=function(a){if(null==a||\"string\"===typeof a)return a;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)return goog.crypt.base64.encodeByteArray(a);goog.asserts.fail(\"Cannot coerce to b64 string: \"+goog.typeOf(a));return null};jspb.Message.bytesAsU8=function(a){if(null==a||a instanceof Uint8Array)return a;if(\"string\"===typeof a)return goog.crypt.base64.decodeStringToUint8Array(a);goog.asserts.fail(\"Cannot coerce to Uint8Array: \"+goog.typeOf(a));return null};\njspb.Message.bytesListAsB64=function(a){jspb.Message.assertConsistentTypes_(a);return a.length&&\"string\"!==typeof a[0]?goog.array.map(a,jspb.Message.bytesAsB64):a};jspb.Message.bytesListAsU8=function(a){jspb.Message.assertConsistentTypes_(a);return!a.length||a[0]instanceof Uint8Array?a:goog.array.map(a,jspb.Message.bytesAsU8)};\njspb.Message.assertConsistentTypes_=function(a){if(goog.DEBUG&&a&&1<a.length){var b=goog.typeOf(a[0]);goog.array.forEach(a,function(a){goog.typeOf(a)!=b&&goog.asserts.fail(\"Inconsistent type in JSPB repeated field array. Got \"+goog.typeOf(a)+\" expected \"+b)})}};jspb.Message.getFieldWithDefault=function(a,b,c){a=jspb.Message.getField(a,b);return null==a?c:a};jspb.Message.getBooleanFieldWithDefault=function(a,b,c){a=jspb.Message.getBooleanField(a,b);return null==a?c:a};\njspb.Message.getFloatingPointFieldWithDefault=function(a,b,c){a=jspb.Message.getOptionalFloatingPointField(a,b);return null==a?c:a};jspb.Message.getFieldProto3=jspb.Message.getFieldWithDefault;jspb.Message.getMapField=function(a,b,c,d){a.wrappers_||(a.wrappers_={});if(b in a.wrappers_)return a.wrappers_[b];var e=jspb.Message.getField(a,b);if(!e){if(c)return;e=[];jspb.Message.setField(a,b,e)}return a.wrappers_[b]=new jspb.Map(e,d)};\njspb.Message.setField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);b<a.pivot_?a.array[jspb.Message.getIndex_(a,b)]=c:(jspb.Message.maybeInitEmptyExtensionObject_(a),a.extensionObject_[b]=c);return a};jspb.Message.setProto3IntField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};jspb.Message.setProto3FloatField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};\njspb.Message.setProto3BooleanField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,!1)};jspb.Message.setProto3StringField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"\")};jspb.Message.setProto3BytesField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"\")};jspb.Message.setProto3EnumField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,0)};\njspb.Message.setProto3StringIntField=function(a,b,c){return jspb.Message.setFieldIgnoringDefault_(a,b,c,\"0\")};jspb.Message.setFieldIgnoringDefault_=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);c!==d?jspb.Message.setField(a,b,c):b<a.pivot_?a.array[jspb.Message.getIndex_(a,b)]=null:(jspb.Message.maybeInitEmptyExtensionObject_(a),delete a.extensionObject_[b]);return a};\njspb.Message.addToRepeatedField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);b=jspb.Message.getRepeatedField(a,b);void 0!=d?b.splice(d,0,c):b.push(c);return a};jspb.Message.setOneofField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);(c=jspb.Message.computeOneofCase(a,c))&&c!==b&&void 0!==d&&(a.wrappers_&&c in a.wrappers_&&(a.wrappers_[c]=void 0),jspb.Message.setField(a,c,void 0));return jspb.Message.setField(a,b,d)};\njspb.Message.computeOneofCase=function(a,b){for(var c,d,e=0;e<b.length;e++){var f=b[e],g=jspb.Message.getField(a,f);null!=g&&(c=f,d=g,jspb.Message.setField(a,f,void 0))}return c?(jspb.Message.setField(a,c,d),c):0};jspb.Message.getWrapperField=function(a,b,c,d){a.wrappers_||(a.wrappers_={});if(!a.wrappers_[c]){var e=jspb.Message.getField(a,c);if(d||e)a.wrappers_[c]=new b(e)}return a.wrappers_[c]};\njspb.Message.getRepeatedWrapperField=function(a,b,c){jspb.Message.wrapRepeatedField_(a,b,c);b=a.wrappers_[c];b==jspb.Message.EMPTY_LIST_SENTINEL_&&(b=a.wrappers_[c]=[]);return b};jspb.Message.wrapRepeatedField_=function(a,b,c){a.wrappers_||(a.wrappers_={});if(!a.wrappers_[c]){for(var d=jspb.Message.getRepeatedField(a,c),e=[],f=0;f<d.length;f++)e[f]=new b(d[f]);a.wrappers_[c]=e}};\njspb.Message.setWrapperField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});var d=c?c.toArray():c;a.wrappers_[b]=c;return jspb.Message.setField(a,b,d)};jspb.Message.setOneofWrapperField=function(a,b,c,d){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});var e=d?d.toArray():d;a.wrappers_[b]=d;return jspb.Message.setOneofField(a,b,c,e)};\njspb.Message.setRepeatedWrapperField=function(a,b,c){goog.asserts.assertInstanceof(a,jspb.Message);a.wrappers_||(a.wrappers_={});c=c||[];for(var d=[],e=0;e<c.length;e++)d[e]=c[e].toArray();a.wrappers_[b]=c;return jspb.Message.setField(a,b,d)};\njspb.Message.addToRepeatedWrapperField=function(a,b,c,d,e){jspb.Message.wrapRepeatedField_(a,d,b);var f=a.wrappers_[b];f||(f=a.wrappers_[b]=[]);c=c?c:new d;a=jspb.Message.getRepeatedField(a,b);void 0!=e?(f.splice(e,0,c),a.splice(e,0,c.toArray())):(f.push(c),a.push(c.toArray()));return c};jspb.Message.toMap=function(a,b,c,d){for(var e={},f=0;f<a.length;f++)e[b.call(a[f])]=c?c.call(a[f],d,a[f]):a[f];return e};\njspb.Message.prototype.syncMapFields_=function(){if(this.wrappers_)for(var a in this.wrappers_){var b=this.wrappers_[a];if(goog.isArray(b))for(var c=0;c<b.length;c++)b[c]&&b[c].toArray();else b&&b.toArray()}};jspb.Message.prototype.toArray=function(){this.syncMapFields_();return this.array};jspb.Message.GENERATE_TO_STRING&&(jspb.Message.prototype.toString=function(){this.syncMapFields_();return this.array.toString()});\njspb.Message.prototype.getExtension=function(a){if(this.extensionObject_){this.wrappers_||(this.wrappers_={});var b=a.fieldIndex;if(a.isRepeated){if(a.isMessageType())return this.wrappers_[b]||(this.wrappers_[b]=goog.array.map(this.extensionObject_[b]||[],function(b){return new a.ctor(b)})),this.wrappers_[b]}else if(a.isMessageType())return!this.wrappers_[b]&&this.extensionObject_[b]&&(this.wrappers_[b]=new a.ctor(this.extensionObject_[b])),this.wrappers_[b];return this.extensionObject_[b]}};\njspb.Message.prototype.setExtension=function(a,b){this.wrappers_||(this.wrappers_={});jspb.Message.maybeInitEmptyExtensionObject_(this);var c=a.fieldIndex;a.isRepeated?(b=b||[],a.isMessageType()?(this.wrappers_[c]=b,this.extensionObject_[c]=goog.array.map(b,function(a){return a.toArray()})):this.extensionObject_[c]=b):a.isMessageType()?(this.wrappers_[c]=b,this.extensionObject_[c]=b?b.toArray():b):this.extensionObject_[c]=b;return this};\njspb.Message.difference=function(a,b){if(!(a instanceof b.constructor))throw Error(\"Messages have different types.\");var c=a.toArray();b=b.toArray();var d=[],e=0,f=c.length>b.length?c.length:b.length;a.getJsPbMessageId()&&(d[0]=a.getJsPbMessageId(),e=1);for(;e<f;e++)jspb.Message.compareFields(c[e],b[e])||(d[e]=b[e]);return new a.constructor(d)};jspb.Message.equals=function(a,b){return a==b||!(!a||!b)&&a instanceof b.constructor&&jspb.Message.compareFields(a.toArray(),b.toArray())};\njspb.Message.compareExtensions=function(a,b){a=a||{};b=b||{};var c={},d;for(d in a)c[d]=0;for(d in b)c[d]=0;for(d in c)if(!jspb.Message.compareFields(a[d],b[d]))return!1;return!0};\njspb.Message.compareFields=function(a,b){if(a==b)return!0;if(!goog.isObject(a)||!goog.isObject(b))return\"number\"===typeof a&&isNaN(a)||\"number\"===typeof b&&isNaN(b)?String(a)==String(b):!1;if(a.constructor!=b.constructor)return!1;if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a.constructor===Uint8Array){if(a.length!=b.length)return!1;for(var c=0;c<a.length;c++)if(a[c]!=b[c])return!1;return!0}if(a.constructor===Array){var d=void 0,e=void 0,f=Math.max(a.length,b.length);for(c=0;c<f;c++){var g=a[c],h=b[c];g&&\ng.constructor==Object&&(goog.asserts.assert(void 0===d),goog.asserts.assert(c===a.length-1),d=g,g=void 0);h&&h.constructor==Object&&(goog.asserts.assert(void 0===e),goog.asserts.assert(c===b.length-1),e=h,h=void 0);if(!jspb.Message.compareFields(g,h))return!1}return d||e?(d=d||{},e=e||{},jspb.Message.compareExtensions(d,e)):!0}if(a.constructor===Object)return jspb.Message.compareExtensions(a,b);throw Error(\"Invalid type in JSPB array\");};jspb.Message.prototype.cloneMessage=function(){return jspb.Message.cloneMessage(this)};\njspb.Message.prototype.clone=function(){return jspb.Message.cloneMessage(this)};jspb.Message.clone=function(a){return jspb.Message.cloneMessage(a)};jspb.Message.cloneMessage=function(a){return new a.constructor(jspb.Message.clone_(a.toArray()))};\njspb.Message.copyInto=function(a,b){goog.asserts.assertInstanceof(a,jspb.Message);goog.asserts.assertInstanceof(b,jspb.Message);goog.asserts.assert(a.constructor==b.constructor,\"Copy source and target message should have the same type.\");a=jspb.Message.clone(a);for(var c=b.toArray(),d=a.toArray(),e=c.length=0;e<d.length;e++)c[e]=d[e];b.wrappers_=a.wrappers_;b.extensionObject_=a.extensionObject_};\njspb.Message.clone_=function(a){if(goog.isArray(a)){for(var b=Array(a.length),c=0;c<a.length;c++){var d=a[c];null!=d&&(b[c]=\"object\"==typeof d?jspb.Message.clone_(goog.asserts.assert(d)):d)}return b}if(jspb.Message.SUPPORTS_UINT8ARRAY_&&a instanceof Uint8Array)return new Uint8Array(a);b={};for(c in a)d=a[c],null!=d&&(b[c]=\"object\"==typeof d?jspb.Message.clone_(goog.asserts.assert(d)):d);return b};jspb.Message.registerMessageType=function(a,b){b.messageId=a};jspb.Message.messageSetExtensions={};\njspb.Message.messageSetExtensionsBinary={};jspb.arith={};jspb.arith.UInt64=function(a,b){this.lo=a;this.hi=b};jspb.arith.UInt64.prototype.cmp=function(a){return this.hi<a.hi||this.hi==a.hi&&this.lo<a.lo?-1:this.hi==a.hi&&this.lo==a.lo?0:1};jspb.arith.UInt64.prototype.rightShift=function(){return new jspb.arith.UInt64((this.lo>>>1|(this.hi&1)<<31)>>>0,this.hi>>>1>>>0)};jspb.arith.UInt64.prototype.leftShift=function(){return new jspb.arith.UInt64(this.lo<<1>>>0,(this.hi<<1|this.lo>>>31)>>>0)};\njspb.arith.UInt64.prototype.msb=function(){return!!(this.hi&2147483648)};jspb.arith.UInt64.prototype.lsb=function(){return!!(this.lo&1)};jspb.arith.UInt64.prototype.zero=function(){return 0==this.lo&&0==this.hi};jspb.arith.UInt64.prototype.add=function(a){return new jspb.arith.UInt64((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};\njspb.arith.UInt64.prototype.sub=function(a){return new jspb.arith.UInt64((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};jspb.arith.UInt64.mul32x32=function(a,b){var c=a&65535;a>>>=16;var d=b&65535,e=b>>>16;b=c*d+65536*(c*e&65535)+65536*(a*d&65535);for(c=a*e+(c*e>>>16)+(a*d>>>16);4294967296<=b;)b-=4294967296,c+=1;return new jspb.arith.UInt64(b>>>0,c>>>0)};\njspb.arith.UInt64.prototype.mul=function(a){var b=jspb.arith.UInt64.mul32x32(this.lo,a);a=jspb.arith.UInt64.mul32x32(this.hi,a);a.hi=a.lo;a.lo=0;return b.add(a)};\njspb.arith.UInt64.prototype.div=function(a){if(0==a)return[];var b=new jspb.arith.UInt64(0,0),c=new jspb.arith.UInt64(this.lo,this.hi);a=new jspb.arith.UInt64(a,0);for(var d=new jspb.arith.UInt64(1,0);!a.msb();)a=a.leftShift(),d=d.leftShift();for(;!d.zero();)0>=a.cmp(c)&&(b=b.add(d),c=c.sub(a)),a=a.rightShift(),d=d.rightShift();return[b,c]};jspb.arith.UInt64.prototype.toString=function(){for(var a=\"\",b=this;!b.zero();){b=b.div(10);var c=b[0];a=b[1].lo+a;b=c}\"\"==a&&(a=\"0\");return a};\njspb.arith.UInt64.fromString=function(a){for(var b=new jspb.arith.UInt64(0,0),c=new jspb.arith.UInt64(0,0),d=0;d<a.length;d++){if(\"0\">a[d]||\"9\"<a[d])return null;var e=parseInt(a[d],10);c.lo=e;b=b.mul(10).add(c)}return b};jspb.arith.UInt64.prototype.clone=function(){return new jspb.arith.UInt64(this.lo,this.hi)};jspb.arith.Int64=function(a,b){this.lo=a;this.hi=b};\njspb.arith.Int64.prototype.add=function(a){return new jspb.arith.Int64((this.lo+a.lo&4294967295)>>>0>>>0,((this.hi+a.hi&4294967295)>>>0)+(4294967296<=this.lo+a.lo?1:0)>>>0)};jspb.arith.Int64.prototype.sub=function(a){return new jspb.arith.Int64((this.lo-a.lo&4294967295)>>>0>>>0,((this.hi-a.hi&4294967295)>>>0)-(0>this.lo-a.lo?1:0)>>>0)};jspb.arith.Int64.prototype.clone=function(){return new jspb.arith.Int64(this.lo,this.hi)};\njspb.arith.Int64.prototype.toString=function(){var a=0!=(this.hi&2147483648),b=new jspb.arith.UInt64(this.lo,this.hi);a&&(b=(new jspb.arith.UInt64(0,0)).sub(b));return(a?\"-\":\"\")+b.toString()};jspb.arith.Int64.fromString=function(a){var b=0<a.length&&\"-\"==a[0];b&&(a=a.substring(1));a=jspb.arith.UInt64.fromString(a);if(null===a)return null;b&&(a=(new jspb.arith.UInt64(0,0)).sub(a));return new jspb.arith.Int64(a.lo,a.hi)};jspb.BinaryEncoder=function(){this.buffer_=[]};jspb.BinaryEncoder.prototype.length=function(){return this.buffer_.length};jspb.BinaryEncoder.prototype.end=function(){var a=this.buffer_;this.buffer_=[];return a};\njspb.BinaryEncoder.prototype.writeSplitVarint64=function(a,b){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(b==Math.floor(b));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);for(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32);0<b||127<a;)this.buffer_.push(a&127|128),a=(a>>>7|b<<25)>>>0,b>>>=7;this.buffer_.push(a)};\njspb.BinaryEncoder.prototype.writeSplitFixed64=function(a,b){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(b==Math.floor(b));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32);this.writeUint32(a);this.writeUint32(b)};\njspb.BinaryEncoder.prototype.writeUnsignedVarint32=function(a){goog.asserts.assert(a==Math.floor(a));for(goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);127<a;)this.buffer_.push(a&127|128),a>>>=7;this.buffer_.push(a)};\njspb.BinaryEncoder.prototype.writeSignedVarint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);if(0<=a)this.writeUnsignedVarint32(a);else{for(var b=0;9>b;b++)this.buffer_.push(a&127|128),a>>=7;this.buffer_.push(1)}};\njspb.BinaryEncoder.prototype.writeUnsignedVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_64);jspb.utils.splitInt64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeSignedVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitInt64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeZigzagVarint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.writeUnsignedVarint32((a<<1^a>>31)>>>0)};jspb.BinaryEncoder.prototype.writeZigzagVarint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitZigzag64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeZigzagVarint64String=function(a){this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(a))};jspb.BinaryEncoder.prototype.writeZigzagVarintHash64=function(a){var b=this;jspb.utils.splitHash64(a);jspb.utils.toZigzag64(jspb.utils.split64Low,jspb.utils.split64High,function(a,d){b.writeSplitVarint64(a>>>0,d>>>0)})};\njspb.BinaryEncoder.prototype.writeUint8=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&256>a);this.buffer_.push(a>>>0&255)};jspb.BinaryEncoder.prototype.writeUint16=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&65536>a);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255)};\njspb.BinaryEncoder.prototype.writeUint32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_32);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255);this.buffer_.push(a>>>16&255);this.buffer_.push(a>>>24&255)};jspb.BinaryEncoder.prototype.writeUint64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(0<=a&&a<jspb.BinaryConstants.TWO_TO_64);jspb.utils.splitUint64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeInt8=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(-128<=a&&128>a);this.buffer_.push(a>>>0&255)};jspb.BinaryEncoder.prototype.writeInt16=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(-32768<=a&&32768>a);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255)};\njspb.BinaryEncoder.prototype.writeInt32=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.buffer_.push(a>>>0&255);this.buffer_.push(a>>>8&255);this.buffer_.push(a>>>16&255);this.buffer_.push(a>>>24&255)};\njspb.BinaryEncoder.prototype.writeInt64=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_63&&a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitInt64(a);this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeInt64String=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(+a>=-jspb.BinaryConstants.TWO_TO_63&&+a<jspb.BinaryConstants.TWO_TO_63);jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a));this.writeSplitFixed64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeFloat=function(a){goog.asserts.assert(Infinity===a||-Infinity===a||isNaN(a)||a>=-jspb.BinaryConstants.FLOAT32_MAX&&a<=jspb.BinaryConstants.FLOAT32_MAX);jspb.utils.splitFloat32(a);this.writeUint32(jspb.utils.split64Low)};\njspb.BinaryEncoder.prototype.writeDouble=function(a){goog.asserts.assert(Infinity===a||-Infinity===a||isNaN(a)||a>=-jspb.BinaryConstants.FLOAT64_MAX&&a<=jspb.BinaryConstants.FLOAT64_MAX);jspb.utils.splitFloat64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};jspb.BinaryEncoder.prototype.writeBool=function(a){goog.asserts.assert(\"boolean\"===typeof a||\"number\"===typeof a);this.buffer_.push(a?1:0)};\njspb.BinaryEncoder.prototype.writeEnum=function(a){goog.asserts.assert(a==Math.floor(a));goog.asserts.assert(a>=-jspb.BinaryConstants.TWO_TO_31&&a<jspb.BinaryConstants.TWO_TO_31);this.writeSignedVarint32(a)};jspb.BinaryEncoder.prototype.writeBytes=function(a){this.buffer_.push.apply(this.buffer_,a)};jspb.BinaryEncoder.prototype.writeVarintHash64=function(a){jspb.utils.splitHash64(a);this.writeSplitVarint64(jspb.utils.split64Low,jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeFixedHash64=function(a){jspb.utils.splitHash64(a);this.writeUint32(jspb.utils.split64Low);this.writeUint32(jspb.utils.split64High)};\njspb.BinaryEncoder.prototype.writeString=function(a){for(var b=this.buffer_.length,c=0;c<a.length;c++){var d=a.charCodeAt(c);if(128>d)this.buffer_.push(d);else if(2048>d)this.buffer_.push(d>>6|192),this.buffer_.push(d&63|128);else if(65536>d)if(55296<=d&&56319>=d&&c+1<a.length){var e=a.charCodeAt(c+1);56320<=e&&57343>=e&&(d=1024*(d-55296)+e-56320+65536,this.buffer_.push(d>>18|240),this.buffer_.push(d>>12&63|128),this.buffer_.push(d>>6&63|128),this.buffer_.push(d&63|128),c++)}else this.buffer_.push(d>>\n12|224),this.buffer_.push(d>>6&63|128),this.buffer_.push(d&63|128)}return this.buffer_.length-b};jspb.BinaryWriter=function(){this.blocks_=[];this.totalLength_=0;this.encoder_=new jspb.BinaryEncoder;this.bookmarks_=[]};jspb.BinaryWriter.prototype.appendUint8Array_=function(a){var b=this.encoder_.end();this.blocks_.push(b);this.blocks_.push(a);this.totalLength_+=b.length+a.length};\njspb.BinaryWriter.prototype.beginDelimited_=function(a){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED);a=this.encoder_.end();this.blocks_.push(a);this.totalLength_+=a.length;a.push(this.totalLength_);return a};jspb.BinaryWriter.prototype.endDelimited_=function(a){var b=a.pop();b=this.totalLength_+this.encoder_.length()-b;for(goog.asserts.assert(0<=b);127<b;)a.push(b&127|128),b>>>=7,this.totalLength_++;a.push(b);this.totalLength_++};\njspb.BinaryWriter.prototype.writeSerializedMessage=function(a,b,c){this.appendUint8Array_(a.subarray(b,c))};jspb.BinaryWriter.prototype.maybeWriteSerializedMessage=function(a,b,c){null!=a&&null!=b&&null!=c&&this.writeSerializedMessage(a,b,c)};jspb.BinaryWriter.prototype.reset=function(){this.blocks_=[];this.encoder_.end();this.totalLength_=0;this.bookmarks_=[]};\njspb.BinaryWriter.prototype.getResultBuffer=function(){goog.asserts.assert(0==this.bookmarks_.length);for(var a=new Uint8Array(this.totalLength_+this.encoder_.length()),b=this.blocks_,c=b.length,d=0,e=0;e<c;e++){var f=b[e];a.set(f,d);d+=f.length}b=this.encoder_.end();a.set(b,d);d+=b.length;goog.asserts.assert(d==a.length);this.blocks_=[a];return a};jspb.BinaryWriter.prototype.getResultBase64String=function(a){return goog.crypt.base64.encodeByteArray(this.getResultBuffer(),a)};\njspb.BinaryWriter.prototype.beginSubMessage=function(a){this.bookmarks_.push(this.beginDelimited_(a))};jspb.BinaryWriter.prototype.endSubMessage=function(){goog.asserts.assert(0<=this.bookmarks_.length);this.endDelimited_(this.bookmarks_.pop())};jspb.BinaryWriter.prototype.writeFieldHeader_=function(a,b){goog.asserts.assert(1<=a&&a==Math.floor(a));this.encoder_.writeUnsignedVarint32(8*a+b)};\njspb.BinaryWriter.prototype.writeAny=function(a,b,c){var d=jspb.BinaryConstants.FieldType;switch(a){case d.DOUBLE:this.writeDouble(b,c);break;case d.FLOAT:this.writeFloat(b,c);break;case d.INT64:this.writeInt64(b,c);break;case d.UINT64:this.writeUint64(b,c);break;case d.INT32:this.writeInt32(b,c);break;case d.FIXED64:this.writeFixed64(b,c);break;case d.FIXED32:this.writeFixed32(b,c);break;case d.BOOL:this.writeBool(b,c);break;case d.STRING:this.writeString(b,c);break;case d.GROUP:goog.asserts.fail(\"Group field type not supported in writeAny()\");\nbreak;case d.MESSAGE:goog.asserts.fail(\"Message field type not supported in writeAny()\");break;case d.BYTES:this.writeBytes(b,c);break;case d.UINT32:this.writeUint32(b,c);break;case d.ENUM:this.writeEnum(b,c);break;case d.SFIXED32:this.writeSfixed32(b,c);break;case d.SFIXED64:this.writeSfixed64(b,c);break;case d.SINT32:this.writeSint32(b,c);break;case d.SINT64:this.writeSint64(b,c);break;case d.FHASH64:this.writeFixedHash64(b,c);break;case d.VHASH64:this.writeVarintHash64(b,c);break;default:goog.asserts.fail(\"Invalid field type in writeAny()\")}};\njspb.BinaryWriter.prototype.writeUnsignedVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint32(b))};jspb.BinaryWriter.prototype.writeSignedVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(b))};jspb.BinaryWriter.prototype.writeUnsignedVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeUnsignedVarint64(b))};\njspb.BinaryWriter.prototype.writeSignedVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint64(b))};jspb.BinaryWriter.prototype.writeZigzagVarint32_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint32(b))};jspb.BinaryWriter.prototype.writeZigzagVarint64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64(b))};\njspb.BinaryWriter.prototype.writeZigzagVarint64String_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarint64String(b))};jspb.BinaryWriter.prototype.writeZigzagVarintHash64_=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeZigzagVarintHash64(b))};\njspb.BinaryWriter.prototype.writeInt32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeInt32String=function(a,b){null!=b&&(b=parseInt(b,10),goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeSignedVarint32_(a,b))};\njspb.BinaryWriter.prototype.writeInt64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeSignedVarint64_(a,b))};jspb.BinaryWriter.prototype.writeInt64String=function(a,b){null!=b&&(b=jspb.arith.Int64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(b.lo,b.hi))};\njspb.BinaryWriter.prototype.writeUint32=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeUint32String=function(a,b){null!=b&&(b=parseInt(b,10),goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeUnsignedVarint32_(a,b))};jspb.BinaryWriter.prototype.writeUint64=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_64),this.writeUnsignedVarint64_(a,b))};\njspb.BinaryWriter.prototype.writeUint64String=function(a,b){null!=b&&(b=jspb.arith.UInt64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSplitVarint64(b.lo,b.hi))};jspb.BinaryWriter.prototype.writeSint32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeZigzagVarint32_(a,b))};\njspb.BinaryWriter.prototype.writeSint64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeZigzagVarint64_(a,b))};jspb.BinaryWriter.prototype.writeSintHash64=function(a,b){null!=b&&this.writeZigzagVarintHash64_(a,b)};jspb.BinaryWriter.prototype.writeSint64String=function(a,b){null!=b&&this.writeZigzagVarint64String_(a,b)};\njspb.BinaryWriter.prototype.writeFixed32=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_32),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeUint32(b))};jspb.BinaryWriter.prototype.writeFixed64=function(a,b){null!=b&&(goog.asserts.assert(0<=b&&b<jspb.BinaryConstants.TWO_TO_64),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeUint64(b))};\njspb.BinaryWriter.prototype.writeFixed64String=function(a,b){null!=b&&(b=jspb.arith.UInt64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(b.lo,b.hi))};jspb.BinaryWriter.prototype.writeSfixed32=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeInt32(b))};\njspb.BinaryWriter.prototype.writeSfixed64=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_63&&b<jspb.BinaryConstants.TWO_TO_63),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeInt64(b))};jspb.BinaryWriter.prototype.writeSfixed64String=function(a,b){null!=b&&(b=jspb.arith.Int64.fromString(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeSplitFixed64(b.lo,b.hi))};\njspb.BinaryWriter.prototype.writeFloat=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED32),this.encoder_.writeFloat(b))};jspb.BinaryWriter.prototype.writeDouble=function(a,b){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeDouble(b))};\njspb.BinaryWriter.prototype.writeBool=function(a,b){null!=b&&(goog.asserts.assert(\"boolean\"===typeof b||\"number\"===typeof b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeBool(b))};jspb.BinaryWriter.prototype.writeEnum=function(a,b){null!=b&&(goog.asserts.assert(b>=-jspb.BinaryConstants.TWO_TO_31&&b<jspb.BinaryConstants.TWO_TO_31),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(b))};\njspb.BinaryWriter.prototype.writeString=function(a,b){null!=b&&(a=this.beginDelimited_(a),this.encoder_.writeString(b),this.endDelimited_(a))};jspb.BinaryWriter.prototype.writeBytes=function(a,b){null!=b&&(b=jspb.utils.byteSourceToUint8Array(b),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(b.length),this.appendUint8Array_(b))};jspb.BinaryWriter.prototype.writeMessage=function(a,b,c){null!=b&&(a=this.beginDelimited_(a),c(b,this),this.endDelimited_(a))};\njspb.BinaryWriter.prototype.writeMessageSet=function(a,b,c){null!=b&&(this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.START_GROUP),this.writeFieldHeader_(2,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeSignedVarint32(a),a=this.beginDelimited_(3),c(b,this),this.endDelimited_(a),this.writeFieldHeader_(1,jspb.BinaryConstants.WireType.END_GROUP))};\njspb.BinaryWriter.prototype.writeGroup=function(a,b,c){null!=b&&(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.START_GROUP),c(b,this),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.END_GROUP))};jspb.BinaryWriter.prototype.writeFixedHash64=function(a,b){null!=b&&(goog.asserts.assert(8==b.length),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64),this.encoder_.writeFixedHash64(b))};\njspb.BinaryWriter.prototype.writeVarintHash64=function(a,b){null!=b&&(goog.asserts.assert(8==b.length),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT),this.encoder_.writeVarintHash64(b))};jspb.BinaryWriter.prototype.writeSplitFixed64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.FIXED64);this.encoder_.writeSplitFixed64(b,c)};\njspb.BinaryWriter.prototype.writeSplitVarint64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT);this.encoder_.writeSplitVarint64(b,c)};jspb.BinaryWriter.prototype.writeSplitZigzagVarint64=function(a,b,c){this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.VARINT);var d=this.encoder_;jspb.utils.toZigzag64(b,c,function(a,b){d.writeSplitVarint64(a>>>0,b>>>0)})};\njspb.BinaryWriter.prototype.writeRepeatedInt32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSignedVarint32_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedInt32String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeInt32String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedInt64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSignedVarint64_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSplitFixed64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitFixed64(a,c(b[e]),d(b[e]))};jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitVarint64(a,c(b[e]),d(b[e]))};jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64=function(a,b,c,d){if(null!=b)for(var e=0;e<b.length;e++)this.writeSplitZigzagVarint64(a,c(b[e]),d(b[e]))};\njspb.BinaryWriter.prototype.writeRepeatedInt64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeInt64String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUnsignedVarint32_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint32String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUint32String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedUint64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUnsignedVarint64_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedUint64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeUint64String(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSint32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint32_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSint64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint64_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSint64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarint64String_(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSintHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeZigzagVarintHash64_(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedFixed32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed32(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedFixed64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed64(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedFixed64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixed64String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedSfixed32=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed32(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSfixed64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed64(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedSfixed64String=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeSfixed64String(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedFloat=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFloat(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedDouble=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeDouble(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedBool=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeBool(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedEnum=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeEnum(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedString=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeString(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedBytes=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeBytes(a,b[c])};jspb.BinaryWriter.prototype.writeRepeatedMessage=function(a,b,c){if(null!=b)for(var d=0;d<b.length;d++){var e=this.beginDelimited_(a);c(b[d],this);this.endDelimited_(e)}};\njspb.BinaryWriter.prototype.writeRepeatedGroup=function(a,b,c){if(null!=b)for(var d=0;d<b.length;d++)this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.START_GROUP),c(b[d],this),this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.END_GROUP)};jspb.BinaryWriter.prototype.writeRepeatedFixedHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeFixedHash64(a,b[c])};\njspb.BinaryWriter.prototype.writeRepeatedVarintHash64=function(a,b){if(null!=b)for(var c=0;c<b.length;c++)this.writeVarintHash64(a,b[c])};jspb.BinaryWriter.prototype.writePackedInt32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint32(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedInt32String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint32(parseInt(b[c],10));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedInt64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeSignedVarint64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSplitFixed64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=0;e<b.length;e++)this.encoder_.writeSplitFixed64(c(b[e]),d(b[e]));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSplitVarint64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=0;e<b.length;e++)this.encoder_.writeSplitVarint64(c(b[e]),d(b[e]));this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64=function(a,b,c,d){if(null!=b){a=this.beginDelimited_(a);for(var e=this.encoder_,f=0;f<b.length;f++)jspb.utils.toZigzag64(c(b[f]),d(b[f]),function(a,b){e.writeSplitVarint64(a>>>0,b>>>0)});this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedInt64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++){var d=jspb.arith.Int64.fromString(b[c]);this.encoder_.writeSplitVarint64(d.lo,d.hi)}this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedUint32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint32(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedUint32String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint32(parseInt(b[c],10));this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedUint64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeUnsignedVarint64(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedUint64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++){var d=jspb.arith.UInt64.fromString(b[c]);this.encoder_.writeSplitVarint64(d.lo,d.hi)}this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSint32=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarint32(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSint64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarint64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedSint64String=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(b[c]));this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedSintHash64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeZigzagVarintHash64(b[c]);this.endDelimited_(a)}};\njspb.BinaryWriter.prototype.writePackedFixed32=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeUint32(b[a])};jspb.BinaryWriter.prototype.writePackedFixed64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeUint64(b[a])};\njspb.BinaryWriter.prototype.writePackedFixed64String=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++){var c=jspb.arith.UInt64.fromString(b[a]);this.encoder_.writeSplitFixed64(c.lo,c.hi)}};\njspb.BinaryWriter.prototype.writePackedSfixed32=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeInt32(b[a])};jspb.BinaryWriter.prototype.writePackedSfixed64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeInt64(b[a])};\njspb.BinaryWriter.prototype.writePackedSfixed64String=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeInt64String(b[a])};jspb.BinaryWriter.prototype.writePackedFloat=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(4*b.length),a=0;a<b.length;a++)this.encoder_.writeFloat(b[a])};\njspb.BinaryWriter.prototype.writePackedDouble=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeDouble(b[a])};jspb.BinaryWriter.prototype.writePackedBool=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(b.length),a=0;a<b.length;a++)this.encoder_.writeBool(b[a])};\njspb.BinaryWriter.prototype.writePackedEnum=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeEnum(b[c]);this.endDelimited_(a)}};jspb.BinaryWriter.prototype.writePackedFixedHash64=function(a,b){if(null!=b&&b.length)for(this.writeFieldHeader_(a,jspb.BinaryConstants.WireType.DELIMITED),this.encoder_.writeUnsignedVarint32(8*b.length),a=0;a<b.length;a++)this.encoder_.writeFixedHash64(b[a])};\njspb.BinaryWriter.prototype.writePackedVarintHash64=function(a,b){if(null!=b&&b.length){a=this.beginDelimited_(a);for(var c=0;c<b.length;c++)this.encoder_.writeVarintHash64(b[c]);this.endDelimited_(a)}};jspb.Export={};exports.Map=jspb.Map;exports.Message=jspb.Message;exports.BinaryReader=jspb.BinaryReader;exports.BinaryWriter=jspb.BinaryWriter;exports.ExtensionFieldInfo=jspb.ExtensionFieldInfo;exports.ExtensionFieldBinaryInfo=jspb.ExtensionFieldBinaryInfo;exports.exportSymbol=goog.exportSymbol;exports.inherits=goog.inherits;exports.object={extend:goog.object.extend};exports.typeOf=goog.typeOf;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nif (typeof BigInt === 'function') {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag && Symbol.toStringTag in value ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n/* globals document: false */\nvar documentDotAll = typeof document === 'object' && typeof document.all === 'undefined' && document.all !== undefined ? document.all : {};\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (value === documentDotAll) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (typeof value === 'function' && !value.prototype) { return true; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\treturn strClass === fnClass || strClass === genClass;\n\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar numToStr = Number.prototype.toString;\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\tnumToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar numClass = '[object Number]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : toStr.call(value) === numClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasSymbols = require('has-symbols/shams')();\nvar hasToStringTag = hasSymbols && !!Symbol.toStringTag;\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag;\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new global[typedArray]();\n\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t}\n\t\tvar proto = getPrototypeOf(arr);\n\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\tif (!descriptor) {\n\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t}\n\t\ttoStrTags[typedArray] = descriptor.get;\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakSet(x) {\n\t\t// `WeakSet` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$setHas) {\n\t// eslint-disable-next-line no-unused-vars\n\tmodule.exports = function isWeakSet(x) {\n\t\t// `WeakSet` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\nmodule.exports = exported || function isWeakSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x, $setHas);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x, $mapHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n","var map = require(\"./map\");\n\nvar getCountryCode = function(localeString) {\n var components = localeString.split(\"_\");\n if (components.length == 2) {\n return components.pop();\n }\n components = localeString.split(\"-\");\n if (components.length == 2) {\n return components.pop();\n }\n return localeString;\n}\n\nexports.getCurrency = function(locale) {\n var countryCode = getCountryCode(locale).toUpperCase();\n if (countryCode in map) {\n return map[countryCode];\n }\n return null;\n}\n\nexports.getLocales = function(currencyCode) {\n currencyCode = currencyCode.toUpperCase();\n var locales = [];\n for (countryCode in map) {\n if (map[countryCode] === currencyCode) {\n locales.push(countryCode);\n }\n }\n return locales;\n}","// Generated using ShowCurrencies.java\nvar map = {\nAD: 'EUR',\nAE: 'AED',\nAF: 'AFN',\nAG: 'XCD',\nAI: 'XCD',\nAL: 'ALL',\nAM: 'AMD',\nAN: 'ANG',\nAO: 'AOA',\nAR: 'ARS',\nAS: 'USD',\nAT: 'EUR',\nAU: 'AUD',\nAW: 'AWG',\nAX: 'EUR',\nAZ: 'AZN',\nBA: 'BAM',\nBB: 'BBD',\nBD: 'BDT',\nBE: 'EUR',\nBF: 'XOF',\nBG: 'BGN',\nBH: 'BHD',\nBI: 'BIF',\nBJ: 'XOF',\nBL: 'EUR',\nBM: 'BMD',\nBN: 'BND',\nBO: 'BOB',\nBQ: 'USD',\nBR: 'BRL',\nBS: 'BSD',\nBT: 'BTN',\nBV: 'NOK',\nBW: 'BWP',\nBY: 'BYR',\nBZ: 'BZD',\nCA: 'CAD',\nCC: 'AUD',\nCD: 'CDF',\nCF: 'XAF',\nCG: 'XAF',\nCH: 'CHF',\nCI: 'XOF',\nCK: 'NZD',\nCL: 'CLP',\nCM: 'XAF',\nCN: 'CNY',\nCO: 'COP',\nCR: 'CRC',\nCU: 'CUP',\nCV: 'CVE',\nCW: 'ANG',\nCX: 'AUD',\nCY: 'EUR',\nCZ: 'CZK',\nDE: 'EUR',\nDJ: 'DJF',\nDK: 'DKK',\nDM: 'XCD',\nDO: 'DOP',\nDZ: 'DZD',\nEC: 'USD',\nEE: 'EUR',\nEG: 'EGP',\nEH: 'MAD',\nER: 'ERN',\nES: 'EUR',\nET: 'ETB',\nFI: 'EUR',\nFJ: 'FJD',\nFK: 'FKP',\nFM: 'USD',\nFO: 'DKK',\nFR: 'EUR',\nGA: 'XAF',\nGB: 'GBP',\nGD: 'XCD',\nGE: 'GEL',\nGF: 'EUR',\nGG: 'GBP',\nGH: 'GHS',\nGI: 'GIP',\nGL: 'DKK',\nGM: 'GMD',\nGN: 'GNF',\nGP: 'EUR',\nGQ: 'XAF',\nGR: 'EUR',\nGS: 'GBP',\nGT: 'GTQ',\nGU: 'USD',\nGW: 'XOF',\nGY: 'GYD',\nHK: 'HKD',\nHM: 'AUD',\nHN: 'HNL',\nHR: 'HRK',\nHT: 'HTG',\nHU: 'HUF',\nID: 'IDR',\nIE: 'EUR',\nIL: 'ILS',\nIM: 'GBP',\nIN: 'INR',\nIO: 'USD',\nIQ: 'IQD',\nIR: 'IRR',\nIS: 'ISK',\nIT: 'EUR',\nJE: 'GBP',\nJM: 'JMD',\nJO: 'JOD',\nJP: 'JPY',\nKE: 'KES',\nKG: 'KGS',\nKH: 'KHR',\nKI: 'AUD',\nKM: 'KMF',\nKN: 'XCD',\nKP: 'KPW',\nKR: 'KRW',\nKW: 'KWD',\nKY: 'KYD',\nKZ: 'KZT',\nLA: 'LAK',\nLB: 'LBP',\nLC: 'XCD',\nLI: 'CHF',\nLK: 'LKR',\nLR: 'LRD',\nLS: 'LSL',\nLT: 'LTL',\nLU: 'EUR',\nLV: 'LVL',\nLY: 'LYD',\nMA: 'MAD',\nMC: 'EUR',\nMD: 'MDL',\nME: 'EUR',\nMF: 'EUR',\nMG: 'MGA',\nMH: 'USD',\nMK: 'MKD',\nML: 'XOF',\nMM: 'MMK',\nMN: 'MNT',\nMO: 'MOP',\nMP: 'USD',\nMQ: 'EUR',\nMR: 'MRO',\nMS: 'XCD',\nMT: 'EUR',\nMU: 'MUR',\nMV: 'MVR',\nMW: 'MWK',\nMX: 'MXN',\nMY: 'MYR',\nMZ: 'MZN',\nNA: 'NAD',\nNC: 'XPF',\nNE: 'XOF',\nNF: 'AUD',\nNG: 'NGN',\nNI: 'NIO',\nNL: 'EUR',\nNO: 'NOK',\nNP: 'NPR',\nNR: 'AUD',\nNU: 'NZD',\nNZ: 'NZD',\nOM: 'OMR',\nPA: 'PAB',\nPE: 'PEN',\nPF: 'XPF',\nPG: 'PGK',\nPH: 'PHP',\nPK: 'PKR',\nPL: 'PLN',\nPM: 'EUR',\nPN: 'NZD',\nPR: 'USD',\nPS: 'ILS',\nPT: 'EUR',\nPW: 'USD',\nPY: 'PYG',\nQA: 'QAR',\nRE: 'EUR',\nRO: 'RON',\nRS: 'RSD',\nRU: 'RUB',\nRW: 'RWF',\nSA: 'SAR',\nSB: 'SBD',\nSC: 'SCR',\nSD: 'SDG',\nSE: 'SEK',\nSG: 'SGD',\nSH: 'SHP',\nSI: 'EUR',\nSJ: 'NOK',\nSK: 'EUR',\nSL: 'SLL',\nSM: 'EUR',\nSN: 'XOF',\nSO: 'SOS',\nSR: 'SRD',\nST: 'STD',\nSV: 'SVC',\nSX: 'ANG',\nSY: 'SYP',\nSZ: 'SZL',\nTC: 'USD',\nTD: 'XAF',\nTF: 'EUR',\nTG: 'XOF',\nTH: 'THB',\nTJ: 'TJS',\nTK: 'NZD',\nTL: 'USD',\nTM: 'TMT',\nTN: 'TND',\nTO: 'TOP',\nTR: 'TRY',\nTT: 'TTD',\nTV: 'AUD',\nTW: 'TWD',\nTZ: 'TZS',\nUA: 'UAH',\nUG: 'UGX',\nUM: 'USD',\nUS: 'USD',\nUY: 'UYU',\nUZ: 'UZS',\nVA: 'EUR',\nVC: 'XCD',\nVE: 'VEF',\nVG: 'USD',\nVI: 'USD',\nVN: 'VND',\nVU: 'VUV',\nWF: 'XPF',\nWS: 'WST',\nYE: 'YER',\nYT: 'EUR',\nZA: 'ZAR',\nZM: 'ZMK',\nZW: 'ZWL'\n};\n\nmodule.exports = map;","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","(function(){\n var _global = this;\n\n /**\n * JS Implementation of MurmurHash2\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} str ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV2(str, seed) {\n var\n l = str.length,\n h = seed ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k =\n ((str.charCodeAt(i) & 0xff)) |\n ((str.charCodeAt(++i) & 0xff) << 8) |\n ((str.charCodeAt(++i) & 0xff) << 16) |\n ((str.charCodeAt(++i) & 0xff) << 24);\n\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n k ^= k >>> 24;\n k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;\n\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1: h ^= (str.charCodeAt(i) & 0xff);\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n }\n\n h ^= h >>> 13;\n h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));\n h ^= h >>> 15;\n\n return h >>> 0;\n };\n\n /**\n * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011)\n *\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n *\n * @param {string} key ASCII only\n * @param {number} seed Positive integer only\n * @return {number} 32-bit positive integer hash\n */\n function MurmurHashV3(key, seed) {\n var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i;\n\n remainder = key.length & 3; // key.length % 4\n bytes = key.length - remainder;\n h1 = seed;\n c1 = 0xcc9e2d51;\n c2 = 0x1b873593;\n i = 0;\n\n while (i < bytes) {\n k1 =\n ((key.charCodeAt(i) & 0xff)) |\n ((key.charCodeAt(++i) & 0xff) << 8) |\n ((key.charCodeAt(++i) & 0xff) << 16) |\n ((key.charCodeAt(++i) & 0xff) << 24);\n ++i;\n\n k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff;\n\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff;\n h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16));\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16;\n case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8;\n case 1: k1 ^= (key.charCodeAt(i) & 0xff);\n\n k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff;\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= k1;\n }\n\n h1 ^= key.length;\n\n h1 ^= h1 >>> 16;\n h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff;\n h1 ^= h1 >>> 13;\n h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff;\n h1 ^= h1 >>> 16;\n\n return h1 >>> 0;\n }\n\n var murmur = MurmurHashV3;\n murmur.v2 = MurmurHashV2;\n murmur.v3 = MurmurHashV3;\n\n if (typeof(module) != 'undefined') {\n module.exports = murmur;\n } else {\n var _previousRoot = _global.murmur;\n murmur.noConflict = function() {\n _global.murmur = _previousRoot;\n return murmur;\n }\n _global.murmur = murmur;\n }\n}());\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean') {\n throw new TypeError('option \"customInspect\", if provided, must be `true` or `false`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + String(obj.nodeName).toLowerCase() + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","module.exports = require('util').inspect;\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tsyms = getSymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\t\t$push(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar $Object = Object;\nvar $TypeError = TypeError;\n\nmodule.exports = function flags() {\n\tif (this != null && this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(implementation);\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\nvar $TypeError = TypeError;\n\nmodule.exports = function getPolyfill() {\n\tif (!supportsDescriptors) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tif ((/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (descriptor && typeof descriptor.get === 'function' && typeof (/a/).dotAll === 'boolean') {\n\t\t\treturn descriptor.get;\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In node.js\n// this is pretty straight-forward - we use the crypto API.\n\nvar crypto = require('crypto');\n\nmodule.exports = function nodeRNG() {\n return crypto.randomBytes(16);\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n","'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\nmodule.exports = function whichCollection(value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar hasToStringTag = hasSymbols && typeof Symbol.toStringTag === 'symbol';\n\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof global[typedArray] === 'function') {\n\t\t\tvar arr = new global[typedArray]();\n\t\t\tif (!(Symbol.toStringTag in arr)) {\n\t\t\t\tthrow new EvalError('this engine has support for Symbol.toStringTag, but ' + typedArray + ' does not have the property! Please report this.');\n\t\t\t}\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n","// TODO: comment on why it works this way\n\nlet send;\n\nmodule.exports = { send };\n","const q = require('./query');\nconst injected = require('./injected');\n\nfunction send(name, args) {\n return injected.send(name, args);\n}\n\nasync function runImport(name, func) {\n await send('api/start-import', { budgetName: name });\n try {\n await func();\n } catch (e) {\n await send('api/abort-import');\n throw e;\n }\n await send('api/finish-import');\n}\n\nasync function loadBudget(budgetId) {\n return send('api/load-budget', { id: budgetId });\n}\n\nasync function batchBudgetUpdates(func) {\n await send('api/batch-budget-start');\n try {\n await func();\n } finally {\n await send('api/batch-budget-end');\n }\n}\n\nfunction runQuery(query) {\n return send('api/query', { query: query.serialize() });\n}\n\nfunction getBudgetMonths() {\n return send('api/budget-months');\n}\n\nfunction getBudgetMonth(month) {\n return send('api/budget-month', { month });\n}\n\nfunction setBudgetAmount(month, categoryId, value) {\n return send('api/budget-set-amount', { month, categoryId, amount: value });\n}\n\nfunction setBudgetCarryover(month, categoryId, flag) {\n return send('api/budget-set-carryover', { month, categoryId, flag });\n}\n\nfunction addTransactions(accountId, transactions) {\n return send('api/transactions-add', { accountId, transactions });\n}\n\nfunction importTransactions(accountId, transactions) {\n return send('api/transactions-import', { accountId, transactions });\n}\n\nfunction getTransactions(accountId, startDate, endDate) {\n return send('api/transactions-get', { accountId, startDate, endDate });\n}\n\nfunction filterTransactions(accountId, text) {\n return send('api/transactions-filter', { accountId, text });\n}\n\nfunction updateTransaction(id, fields) {\n return send('api/transaction-update', { id, fields });\n}\n\nfunction deleteTransaction(id) {\n return send('api/transaction-delete', { id });\n}\n\nfunction getAccounts() {\n return send('api/accounts-get');\n}\n\nfunction createAccount(account, initialBalance) {\n return send('api/account-create', { account, initialBalance });\n}\n\nfunction updateAccount(id, fields) {\n return send('api/account-update', { id, fields });\n}\n\nfunction closeAccount(id, transferAccountId, transferCategoryId) {\n return send('api/account-close', {\n id,\n transferAccountId,\n transferCategoryId\n });\n}\n\nfunction reopenAccount(id) {\n return send('api/account-reopen', { id });\n}\n\nfunction deleteAccount(id) {\n return send('api/account-delete', { id });\n}\n\nfunction getCategoryGroups() {\n return send('api/categories-get', { grouped: true });\n}\n\nfunction createCategoryGroup(group) {\n return send('api/category-group-create', { group });\n}\n\nfunction updateCategoryGroup(id, fields) {\n return send('api/category-group-update', { id, fields });\n}\n\nfunction deleteCategoryGroup(id, transferCategoryId) {\n return send('api/category-group-delete', { id, transferCategoryId });\n}\n\nfunction getCategories() {\n return send('api/categories-get', { grouped: false });\n}\n\nfunction createCategory(category) {\n return send('api/category-create', { category });\n}\n\nfunction updateCategory(id, fields) {\n return send('api/category-update', { id, fields });\n}\n\nfunction deleteCategory(id, transferCategoryId) {\n return send('api/category-delete', { id, transferCategoryId });\n}\n\nfunction getPayees() {\n return send('api/payees-get');\n}\n\nfunction createPayee(payee) {\n return send('api/payee-create', { payee });\n}\n\nfunction updatePayee(id, fields) {\n return send('api/payee-update', { id, fields });\n}\n\nfunction deletePayee(id) {\n return send('api/payee-delete', { id });\n}\n\nfunction getPayeeRules(payeeId) {\n return send('api/payee-rules-get', { payeeId });\n}\n\nfunction createPayeeRule(payeeId, rule) {\n return send('api/payee-rule-create', { payee_id: payeeId, rule });\n}\n\nfunction updatePayeeRule(id, fields) {\n return send('api/payee-rule-update', { id, fields });\n}\n\nfunction deletePayeeRule(id) {\n return send('api/payee-rule-delete', { id });\n}\n\nmodule.exports = {\n runImport,\n\n runQuery,\n q,\n\n loadBudget,\n batchBudgetUpdates,\n getBudgetMonths,\n getBudgetMonth,\n setBudgetAmount,\n setBudgetCarryover,\n\n addTransactions,\n importTransactions,\n filterTransactions,\n getTransactions,\n updateTransaction,\n deleteTransaction,\n\n getAccounts,\n createAccount,\n updateAccount,\n closeAccount,\n reopenAccount,\n deleteAccount,\n\n getCategories,\n createCategoryGroup,\n updateCategoryGroup,\n deleteCategoryGroup,\n createCategory,\n updateCategory,\n deleteCategory,\n\n getPayees,\n createPayee,\n updatePayee,\n deletePayee,\n getPayeeRules,\n createPayeeRule,\n deletePayeeRule,\n updatePayeeRule\n};\n","class Query {\n constructor(state) {\n this.state = {\n filterExpressions: state.filterExpressions || [],\n selectExpressions: state.selectExpressions || [],\n groupExpressions: state.groupExpressions || [],\n orderExpressions: state.orderExpressions || [],\n calculation: false,\n rawMode: false,\n withDead: false,\n limit: null,\n offset: null,\n ...state\n };\n }\n\n filter(expr) {\n return new Query({\n ...this.state,\n filterExpressions: [...this.state.filterExpressions, expr]\n });\n }\n\n unfilter(exprs) {\n let exprSet = new Set(exprs);\n return new Query({\n ...this.state,\n filterExpressions: this.state.filterExpressions.filter(\n expr => !exprSet.has(Object.keys(expr)[0])\n )\n });\n }\n\n select(exprs = []) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n let query = new Query({ ...this.state, selectExpressions: exprs });\n query.state.calculation = false;\n return query;\n }\n\n calculate(expr) {\n let query = this.select({ result: expr });\n query.state.calculation = true;\n return query;\n }\n\n groupBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n groupExpressions: [...this.state.groupExpressions, ...exprs]\n });\n }\n\n orderBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n orderExpressions: [...this.state.orderExpressions, ...exprs]\n });\n }\n\n limit(num) {\n return new Query({ ...this.state, limit: num });\n }\n\n offset(num) {\n return new Query({ ...this.state, offset: num });\n }\n\n raw() {\n return new Query({ ...this.state, rawMode: true });\n }\n\n withDead() {\n return new Query({ ...this.state, withDead: true });\n }\n\n options(opts) {\n return new Query({ ...this.state, tableOptions: opts });\n }\n\n serialize() {\n return this.state;\n }\n}\n\nmodule.exports = function q(table) {\n return new Query({ table });\n}\n","function amountToInteger(n) {\n return Math.round(n * 100) | 0;\n}\n\nfunction integerToAmount(n) {\n return parseFloat((n / 100).toFixed(2));\n}\n\nmodule.exports = { amountToInteger, integerToAmount };\n","const d = require('date-fns');\nconst normalizePathSep = require('slash');\nconst uuid = require('uuid');\nconst AdmZip = require('adm-zip');\nconst actual = require('@actual-app/api/methods');\nconst { amountToInteger } = require('@actual-app/api/utils');\n\n// Utils\n\nfunction mapAccountType(type) {\n switch (type) {\n case 'Cash':\n case 'Checking':\n return 'checking';\n case 'CreditCard':\n return 'credit';\n case 'Savings':\n return 'savings';\n case 'InvestmentAccount':\n return 'investment';\n case 'Mortgage':\n return 'mortgage';\n default:\n return 'other';\n }\n}\n\nfunction sortByKey(arr, key) {\n return [...arr].sort((item1, item2) => {\n if (item1[key] < item2[key]) {\n return -1;\n } else if (item1[key] > item2[key]) {\n return 1;\n }\n return 0;\n });\n}\n\nfunction groupBy(arr, keyName) {\n return arr.reduce(function(obj, item) {\n var key = item[keyName];\n if (!obj.hasOwnProperty(key)) {\n obj[key] = [];\n }\n obj[key].push(item);\n return obj;\n }, {});\n}\n\nfunction _parse(value) {\n if (typeof value === 'string') {\n // We don't want parsing to take local timezone into account,\n // which parsing a string does. Pass the integers manually to\n // bypass it.\n\n let [year, month, day] = value.split('-');\n if (day != null) {\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n } else if (month != null) {\n return new Date(parseInt(year), parseInt(month) - 1, 1);\n } else {\n return new Date(parseInt(year), 0, 1);\n }\n }\n return value;\n}\n\nfunction monthFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM');\n}\n\nfunction getCurrentMonth() {\n return d.format(new Date(), 'yyyy-MM');\n}\n\n// Importer\n\nasync function importAccounts(data, entityIdMap) {\n return Promise.all(\n data.accounts.map(async account => {\n if (!account.isTombstone) {\n const id = await actual.createAccount({\n type: mapAccountType(account.accountType),\n name: account.accountName,\n offbudget: account.onBudget ? false : true,\n closed: account.hidden ? true : false\n });\n entityIdMap.set(account.entityId, id);\n }\n })\n );\n}\n\nasync function importCategories(data, entityIdMap) {\n const masterCategories = sortByKey(data.masterCategories, 'sortableIndex');\n\n await Promise.all(\n masterCategories.map(async masterCategory => {\n if (\n masterCategory.type === 'OUTFLOW' &&\n !masterCategory.isTombstone &&\n masterCategory.subCategories &&\n masterCategory.subCategories.some(cat => !cat.isTombstone) > 0\n ) {\n const id = await actual.createCategoryGroup({\n name: masterCategory.name,\n is_income: false\n });\n entityIdMap.set(masterCategory.entityId, id);\n\n if (masterCategory.subCategories) {\n const subCategories = sortByKey(\n masterCategory.subCategories,\n 'sortableIndex'\n );\n subCategories.reverse();\n\n // This can't be done in parallel because sort order depends\n // on insertion order\n for (let category of subCategories) {\n if (!category.isTombstone) {\n const id = await actual.createCategory({\n name: category.name,\n group_id: entityIdMap.get(category.masterCategoryId)\n });\n entityIdMap.set(category.entityId, id);\n }\n }\n }\n }\n })\n );\n}\n\nasync function importPayees(data, entityIdMap) {\n for (let payee of data.payees) {\n if (!payee.isTombstone) {\n let id = await actual.createPayee({\n name: payee.name,\n category: entityIdMap.get(payee.autoFillCategoryId) || null,\n transfer_acct: entityIdMap.get(payee.targetAccountId) || null\n });\n\n // TODO: import payee rules\n\n entityIdMap.set(payee.entityId, id);\n }\n }\n}\n\nasync function importTransactions(data, entityIdMap) {\n const categories = await actual.getCategories();\n const incomeCategoryId = categories.find(cat => cat.name === 'Income').id;\n const accounts = await actual.getAccounts();\n const payees = await actual.getPayees();\n\n function getCategory(id) {\n if (id == null || id === 'Category/__Split__') {\n return null;\n } else if (\n id === 'Category/__ImmediateIncome__' ||\n id === 'Category/__DeferredIncome__'\n ) {\n return incomeCategoryId;\n }\n return entityIdMap.get(id);\n }\n\n function isOffBudget(acctId) {\n let acct = accounts.find(acct => acct.id === acctId);\n if (!acct) {\n throw new Error('Could not find account for transaction when importing');\n }\n return acct.offbudget;\n }\n\n // Go ahead and generate ids for all of the transactions so we can\n // reliably resolve transfers\n for (let transaction of data.transactions) {\n entityIdMap.set(transaction.entityId, uuid.v4());\n }\n\n let sortOrder = 1;\n let transactionsGrouped = groupBy(data.transactions, 'accountId');\n\n await Promise.all(\n Object.keys(transactionsGrouped).map(async accountId => {\n let transactions = transactionsGrouped[accountId];\n\n let toImport = transactions\n .map(transaction => {\n if (transaction.isTombstone) {\n return;\n }\n\n let id = entityIdMap.get(transaction.entityId);\n let transferId =\n entityIdMap.get(transaction.transferTransactionId) || null;\n\n let payee = null;\n if (transferId) {\n payee = payees.find(\n p =>\n p.transfer_acct === entityIdMap.get(transaction.targetAccountId)\n ).id;\n } else {\n payee = entityIdMap.get(transaction.payeeId);\n }\n\n let newTransaction = {\n id,\n amount: amountToInteger(transaction.amount),\n category: isOffBudget(entityIdMap.get(accountId))\n ? null\n : getCategory(transaction.categoryId),\n date: transaction.date,\n notes: transaction.memo || null,\n payee,\n transfer_id: transferId\n };\n\n newTransaction.subtransactions =\n transaction.subTransactions &&\n transaction.subTransactions.map((t, i) => {\n return {\n amount: amountToInteger(t.amount),\n category: getCategory(t.categoryId)\n };\n });\n\n return newTransaction;\n })\n .filter(x => x);\n\n await actual.addTransactions(entityIdMap.get(accountId), toImport);\n })\n );\n}\n\nfunction fillInBudgets(data, categoryBudgets) {\n // YNAB only contains entries for categories that have been actually\n // budgeted. That would be fine except that we need to set the\n // \"carryover\" flag on each month when carrying debt across months.\n // To make sure our system has a chance to set this flag on each\n // category, make sure a budget exists for every category of every\n // month.\n const budgets = [...categoryBudgets];\n data.masterCategories.forEach(masterCategory => {\n if (masterCategory.subCategories) {\n masterCategory.subCategories.forEach(category => {\n if (!budgets.find(b => b.categoryId === category.entityId)) {\n budgets.push({\n budgeted: 0,\n categoryId: category.entityId\n });\n }\n });\n }\n });\n return budgets;\n}\n\nasync function importBudgets(data, entityIdMap) {\n let budgets = sortByKey(data.monthlyBudgets, 'month');\n let earliestMonth = monthFromDate(budgets[0].month);\n let currentMonth = getCurrentMonth();\n\n await actual.batchBudgetUpdates(async () => {\n const carryoverFlags = {};\n\n for (let budget of budgets) {\n let filled = fillInBudgets(\n data,\n budget.monthlySubCategoryBudgets.filter(b => !b.isTombstone)\n );\n\n await Promise.all(\n filled.map(async catBudget => {\n let amount = amountToInteger(catBudget.budgeted);\n let catId = entityIdMap.get(catBudget.categoryId);\n let month = monthFromDate(budget.month);\n if (!catId) {\n return;\n }\n\n await actual.setBudgetAmount(month, catId, amount);\n\n if (catBudget.overspendingHandling === 'AffectsBuffer') {\n // Turn off the carryover flag so it doesn't propagate\n // to future months\n carryoverFlags[catId] = false;\n } else if (\n catBudget.overspendingHandling === 'Confined' ||\n carryoverFlags[catId]\n ) {\n // Overspending has switched to carryover, set the\n // flag so it propagates to future months\n carryoverFlags[catId] = true;\n\n await actual.setBudgetCarryover(month, catId, true);\n }\n })\n );\n }\n });\n}\n\nfunction estimateRecentness(str) {\n // The \"recentness\" is the total amount of changes that this device\n // is aware of, which is estimated by summing up all of the version\n // numbers that its aware of. This works because version numbers are\n // increasing integers.\n return str.split(',').reduce((total, version) => {\n const [_, number] = version.split('-');\n return total + parseInt(number);\n }, 0);\n}\n\nfunction findLatestDevice(zipped, entries) {\n let devices = entries\n .map(entry => {\n const contents = zipped.readFile(entry).toString('utf8');\n\n let data;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n return null;\n }\n\n if (data.hasFullKnowledge) {\n return {\n deviceGUID: data.deviceGUID,\n shortName: data.shortDeviceId,\n recentness: estimateRecentness(data.knowledge)\n };\n }\n\n return null;\n })\n .filter(x => x);\n\n devices = sortByKey(devices, 'recentness');\n return devices[devices.length - 1].deviceGUID;\n}\n\nasync function doImport(data) {\n const entityIdMap = new Map();\n\n console.log('Importing Accounts...');\n await importAccounts(data, entityIdMap);\n\n console.log('Importing Categories...');\n await importCategories(data, entityIdMap);\n\n console.log('Importing Payees...');\n await importPayees(data, entityIdMap);\n\n console.log('Importing Transactions...');\n await importTransactions(data, entityIdMap);\n\n console.log('Importing Budgets...');\n await importBudgets(data, entityIdMap);\n\n console.log('Setting up...');\n}\n\nfunction getBudgetName(filepath) {\n let unixFilepath = normalizePathSep(filepath);\n\n if (!/\\.zip/.test(unixFilepath)) {\n return null;\n }\n\n unixFilepath = unixFilepath.replace(/\\.zip$/, '').replace(/.ynab4$/, '');\n\n // Most budgets are named like \"Budget~51938D82.ynab4\" but sometimes\n // they are only \"Budget.ynab4\". We only want to grab the name\n // before the ~ if it exists.\n let m = unixFilepath.match(/([^/~]+)[^/]*$/);\n if (!m) {\n return null;\n }\n return m[1];\n}\n\nfunction getFile(entries, path) {\n let files = entries.filter(e => e.entryName === path);\n if (files.length === 0) {\n throw new Error('Could not find file: ' + path);\n }\n if (files.length >= 2) {\n throw new Error('File name matches multiple files: ' + path);\n }\n return files[0];\n}\n\nfunction join(...paths) {\n return paths.slice(1).reduce((full, path) => {\n return full + '/' + path.replace(/^\\//, '');\n }, paths[0].replace(/\\/$/, ''));\n}\n\nasync function importBuffer(filepath, buffer) {\n let budgetName = getBudgetName(filepath);\n\n if (!budgetName) {\n throw new Error('Not a YNAB4 file: ' + filepath);\n }\n\n let zipped = new AdmZip(buffer);\n let entries = zipped.getEntries();\n\n let root = '';\n let dirMatch = entries[0].entryName.match(/([^/]*\\.ynab4)/);\n if (dirMatch) {\n root = dirMatch[1] + '/';\n }\n\n let metaStr = zipped.readFile(getFile(entries, root + 'Budget.ymeta'));\n let meta = JSON.parse(metaStr.toString('utf8'));\n let budgetPath = join(root, meta.relativeDataFolderName);\n\n let deviceFiles = entries.filter(e =>\n e.entryName.startsWith(join(budgetPath, 'devices'))\n );\n let deviceGUID = findLatestDevice(zipped, deviceFiles);\n\n const yfullPath = join(budgetPath, deviceGUID, 'Budget.yfull');\n let contents;\n try {\n contents = zipped.readFile(getFile(entries, yfullPath)).toString('utf8');\n } catch (e) {\n console.log(e);\n throw new Error('Error reading Budget.yfull file');\n }\n\n let data;\n try {\n data = JSON.parse(contents);\n } catch (e) {\n throw new Error('Error parsing Budget.yull file');\n }\n\n return actual.runImport(budgetName, () => doImport(data));\n}\n\nmodule.exports = { importBuffer };\n","const d = require('date-fns');\nconst uuid = require('uuid');\nconst actual = require('@actual-app/api/methods');\nconst { amountToInteger } = require('@actual-app/api/utils');\n\nfunction amountFromYnab(amount) {\n // ynabs multiplies amount by 1000 and actual by 100\n // so, this function divides by 10\n return Math.round(amount / 10);\n}\n\nfunction monthFromDate(date) {\n let parts = date.split('-');\n return parts[0] + '-' + parts[1];\n}\n\nfunction mapAccountType(type) {\n switch (type) {\n case 'cash':\n case 'checking':\n return 'checking';\n case 'creditCard':\n case 'lineOfCredit':\n return 'credit';\n case 'savings':\n return 'savings';\n case 'investmentAccount':\n return 'investment';\n case 'mortgage':\n return 'mortgage';\n default:\n return 'other';\n }\n}\n\nfunction sortByKey(arr, key) {\n return [...arr].sort((item1, item2) => {\n if (item1[key] < item2[key]) {\n return -1;\n } else if (item1[key] > item2[key]) {\n return 1;\n }\n return 0;\n });\n}\n\nfunction groupBy(arr, keyName) {\n return arr.reduce(function(obj, item) {\n var key = item[keyName];\n if (!obj.hasOwnProperty(key)) {\n obj[key] = [];\n }\n obj[key].push(item);\n return obj;\n }, {});\n}\n\nfunction importAccounts(data, entityIdMap) {\n return Promise.all(\n data.accounts.map(async account => {\n if (!account.deleted) {\n let id = await actual.createAccount({\n type: mapAccountType(account.type),\n name: account.name,\n offbudget: account.on_budget ? false : true,\n closed: account.closed\n });\n entityIdMap.set(account.id, id);\n }\n })\n );\n}\n\nasync function importCategories(data, entityIdMap) {\n // Hidden categories are put in its own group by YNAB,\n // so it's already handled.\n\n const categories = await actual.getCategories();\n const incomeCatId = categories.find(cat => cat.name === 'Income').id;\n const ynabIncomeCategories = ['To be Budgeted', 'Inflow: Ready to Assign'];\n\n function checkSpecialCat(cat) {\n if (\n cat.category_group_id ===\n data.category_groups.find(\n group => group.name === 'Internal Master Category'\n ).id\n ) {\n if (ynabIncomeCategories.includes(cat.name)) {\n return 'income';\n } else {\n return 'internal';\n }\n } else if (\n cat.category_group_id ===\n data.category_groups.find(group => group.name === 'Credit Card Payments')\n .id\n ) {\n return 'creditCard';\n }\n }\n // Can't be done in parallel to have\n // correct sort order.\n\n for (let group of data.category_groups) {\n if (!group.deleted) {\n // Ignores internal category and credit cards\n if (\n group.name !== 'Internal Master Category' &&\n group.name !== 'Credit Card Payments'\n ) {\n var groupId = await actual.createCategoryGroup({\n name: group.name,\n is_income: false\n });\n entityIdMap.set(group.id, groupId);\n }\n\n let cats = data.categories.filter(\n cat => cat.category_group_id === group.id\n );\n\n for (let cat of cats.reverse()) {\n if (!cat.deleted) {\n let newCategory = {};\n newCategory.name = cat.name;\n\n // Handles special categories. Starting balance is a payee\n // in YNAB so it's handled in importTransactions\n switch (checkSpecialCat(cat)) {\n case 'income': {\n // doesn't create new category, only assigns id\n let id = incomeCatId;\n entityIdMap.set(cat.id, id);\n break;\n }\n case 'creditCard': // ignores it\n case 'internal': // uncategorized is ignored too, handled by actual\n break;\n default: {\n newCategory.group_id = groupId;\n let id = await actual.createCategory(newCategory);\n entityIdMap.set(cat.id, id);\n break;\n }\n }\n }\n }\n }\n }\n}\n\nfunction importPayees(data, entityIdMap) {\n return Promise.all(\n data.payees.map(async payee => {\n if (!payee.deleted) {\n let id = await actual.createPayee({\n name: payee.name\n });\n entityIdMap.set(payee.id, id);\n }\n })\n );\n}\n\nasync function importTransactions(data, entityIdMap) {\n const payees = await actual.getPayees();\n const categories = await actual.getCategories();\n const incomeCatId = categories.find(cat => cat.name === 'Income').id;\n const startingBalanceCatId = categories.find(\n cat => cat.name === 'Starting Balances'\n ).id; //better way to do it?\n const startingPayeeYNAB = data.payees.find(\n payee => payee.name === 'Starting Balance'\n ).id;\n\n let transactionsGrouped = groupBy(data.transactions, 'account_id');\n let subtransactionsGrouped = groupBy(data.subtransactions, 'transaction_id');\n\n // Go ahead and generate ids for all of the transactions so we can\n // reliably resolve transfers\n for (let transaction of data.transactions) {\n entityIdMap.set(transaction.id, uuid.v4());\n }\n\n await Promise.all(\n Object.keys(transactionsGrouped).map(async accountId => {\n let transactions = transactionsGrouped[accountId];\n\n let toImport = transactions\n .map(transaction => {\n if (transaction.deleted) {\n return null;\n }\n\n // Handle subtransactions\n let subtransactions = subtransactionsGrouped[transaction.id];\n if (subtransactions) {\n subtransactions = subtransactions.map(subtrans => {\n return {\n amount: amountFromYnab(subtrans.amount),\n category: entityIdMap.get(subtrans.category_id) || null,\n notes: subtrans.memo\n };\n });\n }\n\n // Add transaction\n let newTransaction = {\n id: entityIdMap.get(transaction.id),\n account: entityIdMap.get(transaction.account_id),\n date: transaction.date,\n amount: amountFromYnab(transaction.amount),\n category: entityIdMap.get(transaction.category_id) || null,\n cleared: ['cleared', 'reconciled'].includes(transaction.cleared),\n notes: transaction.memo || null,\n imported_id: transaction.import_id || null,\n transfer_id:\n entityIdMap.get(transaction.transfer_transaction_id) || null,\n subtransactions: subtransactions\n };\n\n // Handle transfer payee\n if (transaction.transfer_account_id) {\n newTransaction.payee = payees.find(\n p =>\n p.transfer_acct ===\n entityIdMap.get(transaction.transfer_account_id)\n ).id;\n } else {\n newTransaction.payee = entityIdMap.get(transaction.payee_id);\n }\n\n // Handle starting balances\n if (\n transaction.payee_id === startingPayeeYNAB &&\n entityIdMap.get(transaction.category_id) === incomeCatId\n ) {\n newTransaction.category = startingBalanceCatId;\n newTransaction.payee = null;\n }\n return newTransaction;\n })\n .filter(x => x);\n\n await actual.addTransactions(entityIdMap.get(accountId), toImport);\n })\n );\n}\n\nasync function importBudgets(data, entityIdMap) {\n // There should be info in the docs to deal with\n // no credit card category and how YNAB and Actual\n // handle differently the amount To be Budgeted\n // i.e. Actual considers the cc debt while YNAB doesn't\n //\n // Also, there could be a way to set rollover using\n // Deferred Income Subcat and Immediate Income Subcat\n\n let budgets = sortByKey(data.months, 'month');\n\n const internalCatIdYnab = data.category_groups.find(\n group => group.name === 'Internal Master Category'\n ).id;\n const creditcardCatIdYnab = data.category_groups.find(\n group => group.name === 'Credit Card Payments'\n ).id;\n\n await actual.batchBudgetUpdates(async () => {\n for (let budget of budgets) {\n let month = monthFromDate(budget.month);\n\n await Promise.all(\n budget.categories.map(async catBudget => {\n let catId = entityIdMap.get(catBudget.id);\n let amount = catBudget.budgeted / 10;\n\n if (\n !catId ||\n catBudget.category_group_id === internalCatIdYnab ||\n catBudget.category_group_id === creditcardCatIdYnab\n ) {\n return;\n }\n\n await actual.setBudgetAmount(month, catId, amount);\n })\n );\n }\n });\n}\n\n// Utils\n\nasync function doImport(data) {\n const entityIdMap = new Map();\n\n console.log('Importing Accounts...');\n await importAccounts(data, entityIdMap);\n\n console.log('Importing Categories...');\n await importCategories(data, entityIdMap);\n\n console.log('Importing Payees...');\n await importPayees(data, entityIdMap);\n\n console.log('Importing Transactions...');\n await importTransactions(data, entityIdMap);\n\n console.log('Importing Budgets...');\n await importBudgets(data, entityIdMap);\n\n console.log('Setting up...');\n}\n\nasync function importYNAB5(data) {\n if (data.data) {\n data = data.data;\n }\n\n return actual.runImport(data.budget.name, () => doImport(data.budget));\n}\n\nmodule.exports = { importYNAB5 };\n","export default async function runMigration(db, uuid) {\n function getValue(node) {\n return node.expr != null ? node.expr : node.cachedValue;\n }\n\n db.execQuery(`\nCREATE TABLE zero_budget_months\n (id TEXT PRIMARY KEY,\n buffered INTEGER DEFAULT 0); \n\nCREATE TABLE zero_budgets\n (id TEXT PRIMARY KEY,\n month INTEGER,\n category TEXT,\n amount INTEGER DEFAULT 0,\n carryover INTEGER DEFAULT 0);\n\nCREATE TABLE reflect_budgets\n (id TEXT PRIMARY KEY,\n month INTEGER,\n category TEXT,\n amount INTEGER DEFAULT 0,\n carryover INTEGER DEFAULT 0);\n\nCREATE TABLE notes\n (id TEXT PRIMARY KEY,\n note TEXT);\n\nCREATE TABLE kvcache (key TEXT PRIMARY KEY, value TEXT);\nCREATE TABLE kvcache_key (id INTEGER PRIMARY KEY, key REAL);\n`);\n\n // Migrate budget amounts and carryover\n let budget = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!budget-%'`,\n [],\n true\n );\n db.transaction(() => {\n budget.map(monthBudget => {\n let match = monthBudget.name.match(\n /^(budget-report|budget)(\\d+)!budget-(.+)$/\n );\n if (match == null) {\n console.log('Warning: invalid budget month name', monthBudget.name);\n return;\n }\n\n let type = match[1];\n let month = match[2].slice(0, 4) + '-' + match[2].slice(4);\n let dbmonth = parseInt(match[2]);\n let cat = match[3];\n\n let amount = parseInt(getValue(monthBudget));\n if (isNaN(amount)) {\n amount = 0;\n }\n\n let sheetName = monthBudget.name.split('!')[0];\n let carryover = db.runQuery(\n 'SELECT * FROM spreadsheet_cells WHERE name = ?',\n [`${sheetName}!carryover-${cat}`],\n true\n );\n\n let table = type === 'budget-report' ? 'reflect_budgets' : 'zero_budgets';\n db.runQuery(\n `INSERT INTO ${table} (id, month, category, amount, carryover) VALUES (?, ?, ?, ?, ?)`,\n [\n `${month}-${cat}`,\n dbmonth,\n cat,\n amount,\n carryover.length > 0 && getValue(carryover[0]) === 'true' ? 1 : 0\n ]\n );\n });\n });\n\n // Migrate buffers\n let buffers = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'budget%!buffered'`,\n [],\n true\n );\n db.transaction(() => {\n buffers.map(buffer => {\n let match = buffer.name.match(/^budget(\\d+)!buffered$/);\n if (match) {\n let month = match[1].slice(0, 4) + '-' + match[1].slice(4);\n let amount = parseInt(getValue(buffer));\n if (isNaN(amount)) {\n amount = 0;\n }\n\n db.runQuery(\n `INSERT INTO zero_budget_months (id, buffered) VALUES (?, ?)`,\n [month, amount]\n );\n }\n });\n });\n\n // Migrate notes\n let notes = db.runQuery(\n `SELECT * FROM spreadsheet_cells WHERE name LIKE 'notes!%'`,\n [],\n true\n );\n\n let parseNote = str => {\n try {\n let value = JSON.parse(str);\n return value && value !== '' ? value : null;\n } catch (e) {\n return null;\n }\n };\n\n db.transaction(() => {\n notes.forEach(note => {\n let parsed = parseNote(getValue(note));\n if (parsed) {\n let [, id] = note.name.split('!');\n db.runQuery(`INSERT INTO notes (id, note) VALUES (?, ?)`, [id, parsed]);\n }\n });\n });\n\n db.execQuery(`\n DROP TABLE spreadsheet_cells;\n ANALYZE;\n VACUUM;\n `);\n}\n","var Utils = require(\"./util\");\nvar fs = Utils.FileSystem.require(),\n\tpth = require(\"path\");\n\nfs.existsSync = fs.existsSync || pth.existsSync;\n\nvar ZipEntry = require(\"./zipEntry\"),\n\tZipFile = require(\"./zipFile\");\n\nvar isWin = /^win/.test(process.platform);\n\n\nmodule.exports = function (/*String*/input) {\n\tvar _zip = undefined,\n\t\t_filename = \"\";\n\n\tif (input && typeof input === \"string\") { // load zip file\n\t\tif (fs.existsSync(input)) {\n\t\t\t_filename = input;\n\t\t\t_zip = new ZipFile(input, Utils.Constants.FILE);\n\t\t} else {\n\t\t\tthrow Utils.Errors.INVALID_FILENAME;\n\t\t}\n\t} else if (input && Buffer.isBuffer(input)) { // load buffer\n\t\t_zip = new ZipFile(input, Utils.Constants.BUFFER);\n\t} else { // create new zip file\n\t\t_zip = new ZipFile(null, Utils.Constants.NONE);\n\t}\n\n\tfunction sanitize(prefix, name) {\n\t\tprefix = pth.resolve(pth.normalize(prefix));\n\t\tvar parts = name.split('/');\n\t\tfor (var i = 0, l = parts.length; i < l; i++) {\n\t\t\tvar path = pth.normalize(pth.join(prefix, parts.slice(i, l).join(pth.sep)));\n\t\t\tif (path.indexOf(prefix) === 0) {\n\t\t\t\treturn path;\n\t\t\t}\n\t\t}\n\t\treturn pth.normalize(pth.join(prefix, pth.basename(name)));\n\t}\n\n\tfunction getEntry(/*Object*/entry) {\n\t\tif (entry && _zip) {\n\t\t\tvar item;\n\t\t\t// If entry was given as a file name\n\t\t\tif (typeof entry === \"string\")\n\t\t\t\titem = _zip.getEntry(entry);\n\t\t\t// if entry was given as a ZipEntry object\n\t\t\tif (typeof entry === \"object\" && typeof entry.entryName !== \"undefined\" && typeof entry.header !== \"undefined\")\n\t\t\t\titem = _zip.getEntry(entry.entryName);\n\n\t\t\tif (item) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Extracts the given entry from the archive and returns the content as a Buffer object\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t *\n\t\t * @return Buffer or Null in case of error\n\t\t */\n\t\treadFile: function (/*Object*/entry) {\n\t\t\tvar item = getEntry(entry);\n\t\t\treturn item && item.getData() || null;\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous readFile\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param callback\n\t\t *\n\t\t * @return Buffer or Null in case of error\n\t\t */\n\t\treadFileAsync: function (/*Object*/entry, /*Function*/callback) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.getDataAsync(callback);\n\t\t\t} else {\n\t\t\t\tcallback(null, \"getEntry failed for:\" + entry)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extracts the given entry from the archive and returns the content as plain text in the given encoding\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param encoding Optional. If no encoding is specified utf8 is used\n\t\t *\n\t\t * @return String\n\t\t */\n\t\treadAsText: function (/*Object*/entry, /*String - Optional*/encoding) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\tvar data = item.getData();\n\t\t\t\tif (data && data.length) {\n\t\t\t\t\treturn data.toString(encoding || \"utf8\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"\";\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous readAsText\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param callback\n\t\t * @param encoding Optional. If no encoding is specified utf8 is used\n\t\t *\n\t\t * @return String\n\t\t */\n\t\treadAsTextAsync: function (/*Object*/entry, /*Function*/callback, /*String - Optional*/encoding) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.getDataAsync(function (data, err) {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcallback(data, err);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data && data.length) {\n\t\t\t\t\t\tcallback(data.toString(encoding || \"utf8\"));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback(\"\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tcallback(\"\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove the entry from the file or the entry and all it's nested directories and files if the given entry is a directory\n\t\t *\n\t\t * @param entry\n\t\t */\n\t\tdeleteFile: function (/*Object*/entry) { // @TODO: test deleteFile\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\t_zip.deleteEntry(item.entryName);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a comment to the zip. The zip must be rewritten after adding the comment.\n\t\t *\n\t\t * @param comment\n\t\t */\n\t\taddZipComment: function (/*String*/comment) { // @TODO: test addZipComment\n\t\t\t_zip.comment = comment;\n\t\t},\n\n\t\t/**\n\t\t * Returns the zip comment\n\t\t *\n\t\t * @return String\n\t\t */\n\t\tgetZipComment: function () {\n\t\t\treturn _zip.comment || '';\n\t\t},\n\n\t\t/**\n\t\t * Adds a comment to a specified zipEntry. The zip must be rewritten after adding the comment\n\t\t * The comment cannot exceed 65535 characters in length\n\t\t *\n\t\t * @param entry\n\t\t * @param comment\n\t\t */\n\t\taddZipEntryComment: function (/*Object*/entry, /*String*/comment) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.comment = comment;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns the comment of the specified entry\n\t\t *\n\t\t * @param entry\n\t\t * @return String\n\t\t */\n\t\tgetZipEntryComment: function (/*Object*/entry) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\treturn item.comment || '';\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\n\t\t/**\n\t\t * Updates the content of an existing entry inside the archive. The zip must be rewritten after updating the content\n\t\t *\n\t\t * @param entry\n\t\t * @param content\n\t\t */\n\t\tupdateFile: function (/*Object*/entry, /*Buffer*/content) {\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (item) {\n\t\t\t\titem.setData(content);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a file from the disk to the archive\n\t\t *\n\t\t * @param localPath File to add to zip\n\t\t * @param zipPath Optional path inside the zip\n\t\t * @param zipName Optional name for the file\n\t\t */\n\t\taddLocalFile: function (/*String*/localPath, /*String*/zipPath, /*String*/zipName) {\n\t\t\tif (fs.existsSync(localPath)) {\n\t\t\t\tif (zipPath) {\n\t\t\t\t\tzipPath = zipPath.split(\"\\\\\").join(\"/\");\n\t\t\t\t\tif (zipPath.charAt(zipPath.length - 1) !== \"/\") {\n\t\t\t\t\t\tzipPath += \"/\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tzipPath = \"\";\n\t\t\t\t}\n\t\t\t\tvar p = localPath.split(\"\\\\\").join(\"/\").split(\"/\").pop();\n\n\t\t\t\tif (zipName) {\n\t\t\t\t\tthis.addFile(zipPath + zipName, fs.readFileSync(localPath), \"\", 0)\n\t\t\t\t} else {\n\t\t\t\t\tthis.addFile(zipPath + p, fs.readFileSync(localPath), \"\", 0)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Adds a local directory and all its nested files and directories to the archive\n\t\t *\n\t\t * @param localPath\n\t\t * @param zipPath optional path inside zip\n\t\t * @param filter optional RegExp or Function if files match will\n\t\t * be included.\n\t\t */\n\t\taddLocalFolder: function (/*String*/localPath, /*String*/zipPath, /*RegExp|Function*/filter) {\n\t\t\tif (filter === undefined) {\n\t\t\t\tfilter = function () {\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t} else if (filter instanceof RegExp) {\n\t\t\t\tfilter = function (filter) {\n\t\t\t\t\treturn function (filename) {\n\t\t\t\t\t\treturn filter.test(filename);\n\t\t\t\t\t}\n\t\t\t\t}(filter);\n\t\t\t}\n\n\t\t\tif (zipPath) {\n\t\t\t\tzipPath = zipPath.split(\"\\\\\").join(\"/\");\n\t\t\t\tif (zipPath.charAt(zipPath.length - 1) !== \"/\") {\n\t\t\t\t\tzipPath += \"/\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tzipPath = \"\";\n\t\t\t}\n\t\t\t// normalize the path first\n\t\t\tlocalPath = pth.normalize(localPath);\n\t\t\tlocalPath = localPath.split(\"\\\\\").join(\"/\"); //windows fix\n\t\t\tif (localPath.charAt(localPath.length - 1) !== \"/\")\n\t\t\t\tlocalPath += \"/\";\n\n\t\t\tif (fs.existsSync(localPath)) {\n\n\t\t\t\tvar items = Utils.findFiles(localPath),\n\t\t\t\t\tself = this;\n\n\t\t\t\tif (items.length) {\n\t\t\t\t\titems.forEach(function (path) {\n\t\t\t\t\t\tvar p = path.split(\"\\\\\").join(\"/\").replace(new RegExp(localPath.replace(/(\\(|\\))/g, '\\\\$1'), 'i'), \"\"); //windows fix\n\t\t\t\t\t\tif (filter(p)) {\n\t\t\t\t\t\t\tif (p.charAt(p.length - 1) !== \"/\") {\n\t\t\t\t\t\t\t\tself.addFile(zipPath + p, fs.readFileSync(path), \"\", 0)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.addFile(zipPath + p, Buffer.alloc(0), \"\", 0)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow Utils.Errors.FILE_NOT_FOUND.replace(\"%s\", localPath);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Allows you to create a entry (file or directory) in the zip file.\n\t\t * If you want to create a directory the entryName must end in / and a null buffer should be provided.\n\t\t * Comment and attributes are optional\n\t\t *\n\t\t * @param entryName\n\t\t * @param content\n\t\t * @param comment\n\t\t * @param attr\n\t\t */\n\t\taddFile: function (/*String*/entryName, /*Buffer*/content, /*String*/comment, /*Number*/attr) {\n\t\t\tvar entry = new ZipEntry();\n\t\t\tentry.entryName = entryName;\n\t\t\tentry.comment = comment || \"\";\n\n\t\t\tif (!attr) {\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tattr = (0o40755 << 16) | 0x10; // (permissions drwxr-xr-x) + (MS-DOS directory flag)\n\t\t\t\t} else {\n\t\t\t\t\tattr = 0o644 << 16; // permissions -r-wr--r--\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tentry.attr = attr;\n\n\t\t\tentry.setData(content);\n\t\t\t_zip.setEntry(entry);\n\t\t},\n\n\t\t/**\n\t\t * Returns an array of ZipEntry objects representing the files and folders inside the archive\n\t\t *\n\t\t * @return Array\n\t\t */\n\t\tgetEntries: function () {\n\t\t\tif (_zip) {\n\t\t\t\treturn _zip.entries;\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns a ZipEntry object representing the file or folder specified by ``name``.\n\t\t *\n\t\t * @param name\n\t\t * @return ZipEntry\n\t\t */\n\t\tgetEntry: function (/*String*/name) {\n\t\t\treturn getEntry(name);\n\t\t},\n\n\t\t/**\n\t\t * Extracts the given entry to the given targetPath\n\t\t * If the entry is a directory inside the archive, the entire directory and it's subdirectories will be extracted\n\t\t *\n\t\t * @param entry ZipEntry object or String with the full path of the entry\n\t\t * @param targetPath Target folder where to write the file\n\t\t * @param maintainEntryPath If maintainEntryPath is true and the entry is inside a folder, the entry folder\n\t\t * will be created in targetPath as well. Default is TRUE\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t *\n\t\t * @return Boolean\n\t\t */\n\t\textractEntryTo: function (/*Object*/entry, /*String*/targetPath, /*Boolean*/maintainEntryPath, /*Boolean*/overwrite) {\n\t\t\toverwrite = overwrite || false;\n\t\t\tmaintainEntryPath = typeof maintainEntryPath === \"undefined\" ? true : maintainEntryPath;\n\n\t\t\tvar item = getEntry(entry);\n\t\t\tif (!item) {\n\t\t\t\tthrow Utils.Errors.NO_ENTRY;\n\t\t\t}\n\n\t\t\tvar entryName = item.entryName;\n\n\t\t\tvar target = sanitize(targetPath, maintainEntryPath ? entryName : pth.basename(entryName));\n\n\t\t\tif (item.isDirectory) {\n\t\t\t\ttarget = pth.resolve(target, \"..\");\n\t\t\t\tvar children = _zip.getEntryChildren(item);\n\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\tif (child.isDirectory) return;\n\t\t\t\t\tvar content = child.getData();\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t\t}\n\t\t\t\t\tvar childName = sanitize(targetPath, maintainEntryPath ? child.entryName : pth.basename(child.entryName));\n\n\t\t\t\t\tUtils.writeFileTo(childName, content, overwrite);\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar content = item.getData();\n\t\t\tif (!content) throw Utils.Errors.CANT_EXTRACT_FILE;\n\n\t\t\tif (fs.existsSync(target) && !overwrite) {\n\t\t\t\tthrow Utils.Errors.CANT_OVERRIDE;\n\t\t\t}\n\t\t\tUtils.writeFileTo(target, content, overwrite);\n\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Test the archive\n\t\t *\n\t\t */\n\t\ttest: function () {\n\t\t\tif (!_zip) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (var entry in _zip.entries) {\n\t\t\t\ttry {\n\t\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tvar content = _zip.entries[entry].getData();\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t/**\n\t\t * Extracts the entire archive to the given location\n\t\t *\n\t\t * @param targetPath Target location\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t */\n\t\textractAllTo: function (/*String*/targetPath, /*Boolean*/overwrite) {\n\t\t\toverwrite = overwrite || false;\n\t\t\tif (!_zip) {\n\t\t\t\tthrow Utils.Errors.NO_ZIP;\n\t\t\t}\n\t\t\t_zip.entries.forEach(function (entry) {\n\t\t\t\tvar entryName = sanitize(targetPath, entry.entryName.toString());\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tUtils.makeDir(entryName);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar content = entry.getData();\n\t\t\t\tif (!content) {\n\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t}\n\t\t\t\tUtils.writeFileTo(entryName, content, overwrite);\n\t\t\t\ttry {\n\t\t\t\t\tfs.utimesSync(entryName, entry.header.time, entry.header.time)\n\t\t\t\t} catch (err) {\n\t\t\t\t\tthrow Utils.Errors.CANT_EXTRACT_FILE;\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Asynchronous extractAllTo\n\t\t *\n\t\t * @param targetPath Target location\n\t\t * @param overwrite If the file already exists at the target path, the file will be overwriten if this is true.\n\t\t * Default is FALSE\n\t\t * @param callback\n\t\t */\n\t\textractAllToAsync: function (/*String*/targetPath, /*Boolean*/overwrite, /*Function*/callback) {\n\t\t\tif (!callback) {\n\t\t\t\tcallback = function() {}\n\t\t\t}\n\t\t\toverwrite = overwrite || false;\n\t\t\tif (!_zip) {\n\t\t\t\tcallback(new Error(Utils.Errors.NO_ZIP));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar entries = _zip.entries;\n\t\t\tvar i = entries.length;\n\t\t\tentries.forEach(function (entry) {\n\t\t\t\tif (i <= 0) return; // Had an error already\n\n\t\t\t\tvar entryName = pth.normalize(entry.entryName.toString());\n\n\t\t\t\tif (entry.isDirectory) {\n\t\t\t\t\tUtils.makeDir(sanitize(targetPath, entryName));\n\t\t\t\t\tif (--i === 0)\n\t\t\t\t\t\tcallback(undefined);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentry.getDataAsync(function (content, err) {\n\t\t\t\t\tif (i <= 0) return;\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tcallback(new Error(err));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!content) {\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tcallback(new Error(Utils.Errors.CANT_EXTRACT_FILE));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tUtils.writeFileToAsync(sanitize(targetPath, entryName), content, overwrite, function (succ) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tfs.utimesSync(pth.resolve(targetPath, entryName), entry.header.time, entry.header.time);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tcallback(new Error('Unable to set utimes'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i <= 0) return;\n\t\t\t\t\t\tif (!succ) {\n\t\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\t\tcallback(new Error('Unable to write'));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (--i === 0)\n\t\t\t\t\t\t\tcallback(undefined);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Writes the newly created zip file to disk at the specified location or if a zip was opened and no ``targetFileName`` is provided, it will overwrite the opened zip\n\t\t *\n\t\t * @param targetFileName\n\t\t * @param callback\n\t\t */\n\t\twriteZip: function (/*String*/targetFileName, /*Function*/callback) {\n\t\t\tif (arguments.length === 1) {\n\t\t\t\tif (typeof targetFileName === \"function\") {\n\t\t\t\t\tcallback = targetFileName;\n\t\t\t\t\ttargetFileName = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!targetFileName && _filename) {\n\t\t\t\ttargetFileName = _filename;\n\t\t\t}\n\t\t\tif (!targetFileName) return;\n\n\t\t\tvar zipData = _zip.compressToBuffer();\n\t\t\tif (zipData) {\n\t\t\t\tvar ok = Utils.writeFileTo(targetFileName, zipData, true);\n\t\t\t\tif (typeof callback === 'function') callback(!ok ? new Error(\"failed\") : null, \"\");\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Returns the content of the entire zip file as a Buffer object\n\t\t *\n\t\t * @return Buffer\n\t\t */\n\t\ttoBuffer: function (/*Function*/onSuccess, /*Function*/onFail, /*Function*/onItemStart, /*Function*/onItemEnd) {\n\t\t\tthis.valueOf = 2;\n\t\t\tif (typeof onSuccess === \"function\") {\n\t\t\t\t_zip.toAsyncBuffer(onSuccess, onFail, onItemStart, onItemEnd);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn _zip.compressToBuffer()\n\t\t}\n\t}\n};\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The central directory file header */\nmodule.exports = function () {\n var _verMade = 0x0A,\n _version = 0x0A,\n _flags = 0,\n _method = 0,\n _time = 0,\n _crc = 0,\n _compressedSize = 0,\n _size = 0,\n _fnameLen = 0,\n _extraLen = 0,\n\n _comLen = 0,\n _diskStart = 0,\n _inattr = 0,\n _attr = 0,\n _offset = 0;\n\n var _dataHeader = {};\n\n function setTime(val) {\n val = new Date(val);\n _time = (val.getFullYear() - 1980 & 0x7f) << 25 // b09-16 years from 1980\n | (val.getMonth() + 1) << 21 // b05-08 month\n | val.getDate() << 16 // b00-04 hour\n\n // 2 bytes time\n | val.getHours() << 11 // b11-15 hour\n | val.getMinutes() << 5 // b05-10 minute\n | val.getSeconds() >> 1; // b00-04 seconds divided by 2\n }\n\n setTime(+new Date());\n\n return {\n get made () { return _verMade; },\n set made (val) { _verMade = val; },\n\n get version () { return _version; },\n set version (val) { _version = val },\n\n get flags () { return _flags },\n set flags (val) { _flags = val; },\n\n get method () { return _method; },\n set method (val) { _method = val; },\n\n get time () { return new Date(\n ((_time >> 25) & 0x7f) + 1980,\n ((_time >> 21) & 0x0f) - 1,\n (_time >> 16) & 0x1f,\n (_time >> 11) & 0x1f,\n (_time >> 5) & 0x3f,\n (_time & 0x1f) << 1\n );\n },\n set time (val) {\n setTime(val);\n },\n\n get crc () { return _crc; },\n set crc (val) { _crc = val; },\n\n get compressedSize () { return _compressedSize; },\n set compressedSize (val) { _compressedSize = val; },\n\n get size () { return _size; },\n set size (val) { _size = val; },\n\n get fileNameLength () { return _fnameLen; },\n set fileNameLength (val) { _fnameLen = val; },\n\n get extraLength () { return _extraLen },\n set extraLength (val) { _extraLen = val; },\n\n get commentLength () { return _comLen },\n set commentLength (val) { _comLen = val },\n\n get diskNumStart () { return _diskStart },\n set diskNumStart (val) { _diskStart = val },\n\n get inAttr () { return _inattr },\n set inAttr (val) { _inattr = val },\n\n get attr () { return _attr },\n set attr (val) { _attr = val },\n\n get offset () { return _offset },\n set offset (val) { _offset = val },\n\n get encripted () { return (_flags & 1) === 1 },\n\n get entryHeaderSize () {\n return Constants.CENHDR + _fnameLen + _extraLen + _comLen;\n },\n\n get realDataOffset () {\n return _offset + Constants.LOCHDR + _dataHeader.fnameLen + _dataHeader.extraLen;\n },\n\n get dataHeader () {\n return _dataHeader;\n },\n\n loadDataHeaderFromBinary : function(/*Buffer*/input) {\n var data = input.slice(_offset, _offset + Constants.LOCHDR);\n // 30 bytes and should start with \"PK\\003\\004\"\n if (data.readUInt32LE(0) !== Constants.LOCSIG) {\n throw Utils.Errors.INVALID_LOC;\n }\n _dataHeader = {\n // version needed to extract\n version : data.readUInt16LE(Constants.LOCVER),\n // general purpose bit flag\n flags : data.readUInt16LE(Constants.LOCFLG),\n // compression method\n method : data.readUInt16LE(Constants.LOCHOW),\n // modification time (2 bytes time, 2 bytes date)\n time : data.readUInt32LE(Constants.LOCTIM),\n // uncompressed file crc-32 value\n crc : data.readUInt32LE(Constants.LOCCRC),\n // compressed size\n compressedSize : data.readUInt32LE(Constants.LOCSIZ),\n // uncompressed size\n size : data.readUInt32LE(Constants.LOCLEN),\n // filename length\n fnameLen : data.readUInt16LE(Constants.LOCNAM),\n // extra field length\n extraLen : data.readUInt16LE(Constants.LOCEXT)\n }\n },\n\n loadFromBinary : function(/*Buffer*/data) {\n // data should be 46 bytes and start with \"PK 01 02\"\n if (data.length !== Constants.CENHDR || data.readUInt32LE(0) !== Constants.CENSIG) {\n throw Utils.Errors.INVALID_CEN;\n }\n // version made by\n _verMade = data.readUInt16LE(Constants.CENVEM);\n // version needed to extract\n _version = data.readUInt16LE(Constants.CENVER);\n // encrypt, decrypt flags\n _flags = data.readUInt16LE(Constants.CENFLG);\n // compression method\n _method = data.readUInt16LE(Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n _time = data.readUInt32LE(Constants.CENTIM);\n // uncompressed file crc-32 value\n _crc = data.readUInt32LE(Constants.CENCRC);\n // compressed size\n _compressedSize = data.readUInt32LE(Constants.CENSIZ);\n // uncompressed size\n _size = data.readUInt32LE(Constants.CENLEN);\n // filename length\n _fnameLen = data.readUInt16LE(Constants.CENNAM);\n // extra field length\n _extraLen = data.readUInt16LE(Constants.CENEXT);\n // file comment length\n _comLen = data.readUInt16LE(Constants.CENCOM);\n // volume number start\n _diskStart = data.readUInt16LE(Constants.CENDSK);\n // internal file attributes\n _inattr = data.readUInt16LE(Constants.CENATT);\n // external file attributes\n _attr = data.readUInt32LE(Constants.CENATX);\n // LOC header offset\n _offset = data.readUInt32LE(Constants.CENOFF);\n },\n\n dataHeaderToBinary : function() {\n // LOC header size (30 bytes)\n var data = Buffer.alloc(Constants.LOCHDR);\n // \"PK\\003\\004\"\n data.writeUInt32LE(Constants.LOCSIG, 0);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.LOCVER);\n // general purpose bit flag\n data.writeUInt16LE(_flags, Constants.LOCFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.LOCHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.LOCTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.LOCCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.LOCSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.LOCLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.LOCNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.LOCEXT);\n return data;\n },\n\n entryHeaderToBinary : function() {\n // CEN header size (46 bytes)\n var data = Buffer.alloc(Constants.CENHDR + _fnameLen + _extraLen + _comLen);\n // \"PK\\001\\002\"\n data.writeUInt32LE(Constants.CENSIG, 0);\n // version made by\n data.writeUInt16LE(_verMade, Constants.CENVEM);\n // version needed to extract\n data.writeUInt16LE(_version, Constants.CENVER);\n // encrypt, decrypt flags\n data.writeUInt16LE(_flags, Constants.CENFLG);\n // compression method\n data.writeUInt16LE(_method, Constants.CENHOW);\n // modification time (2 bytes time, 2 bytes date)\n data.writeUInt32LE(_time, Constants.CENTIM);\n // uncompressed file crc-32 value\n data.writeUInt32LE(_crc, Constants.CENCRC);\n // compressed size\n data.writeUInt32LE(_compressedSize, Constants.CENSIZ);\n // uncompressed size\n data.writeUInt32LE(_size, Constants.CENLEN);\n // filename length\n data.writeUInt16LE(_fnameLen, Constants.CENNAM);\n // extra field length\n data.writeUInt16LE(_extraLen, Constants.CENEXT);\n // file comment length\n data.writeUInt16LE(_comLen, Constants.CENCOM);\n // volume number start\n data.writeUInt16LE(_diskStart, Constants.CENDSK);\n // internal file attributes\n data.writeUInt16LE(_inattr, Constants.CENATT);\n // external file attributes\n data.writeUInt32LE(_attr, Constants.CENATX);\n // LOC header offset\n data.writeUInt32LE(_offset, Constants.CENOFF);\n // fill all with\n data.fill(0x00, Constants.CENHDR);\n return data;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"made\" : ' + _verMade + \",\\n\" +\n '\\t\"version\" : ' + _version + \",\\n\" +\n '\\t\"flags\" : ' + _flags + \",\\n\" +\n '\\t\"method\" : ' + Utils.methodToString(_method) + \",\\n\" +\n '\\t\"time\" : ' + this.time + \",\\n\" +\n '\\t\"crc\" : 0x' + _crc.toString(16).toUpperCase() + \",\\n\" +\n '\\t\"compressedSize\" : ' + _compressedSize + \" bytes,\\n\" +\n '\\t\"size\" : ' + _size + \" bytes,\\n\" +\n '\\t\"fileNameLength\" : ' + _fnameLen + \",\\n\" +\n '\\t\"extraLength\" : ' + _extraLen + \" bytes,\\n\" +\n '\\t\"commentLength\" : ' + _comLen + \" bytes,\\n\" +\n '\\t\"diskNumStart\" : ' + _diskStart + \",\\n\" +\n '\\t\"inAttr\" : ' + _inattr + \",\\n\" +\n '\\t\"attr\" : ' + _attr + \",\\n\" +\n '\\t\"offset\" : ' + _offset + \",\\n\" +\n '\\t\"entryHeaderSize\" : ' + (Constants.CENHDR + _fnameLen + _extraLen + _comLen) + \" bytes\\n\" +\n '}';\n }\n }\n};\n","exports.EntryHeader = require(\"./entryHeader\");\r\nexports.MainHeader = require(\"./mainHeader\");\r\n","var Utils = require(\"../util\"),\n Constants = Utils.Constants;\n\n/* The entries in the end of central directory */\nmodule.exports = function () {\n var _volumeEntries = 0,\n _totalEntries = 0,\n _size = 0,\n _offset = 0,\n _commentLength = 0;\n\n return {\n get diskEntries () { return _volumeEntries },\n set diskEntries (/*Number*/val) { _volumeEntries = _totalEntries = val; },\n\n get totalEntries () { return _totalEntries },\n set totalEntries (/*Number*/val) { _totalEntries = _volumeEntries = val; },\n\n get size () { return _size },\n set size (/*Number*/val) { _size = val; },\n\n get offset () { return _offset },\n set offset (/*Number*/val) { _offset = val; },\n\n get commentLength () { return _commentLength },\n set commentLength (/*Number*/val) { _commentLength = val; },\n\n get mainHeaderSize () {\n return Constants.ENDHDR + _commentLength;\n },\n\n loadFromBinary : function(/*Buffer*/data) {\n // data should be 22 bytes and start with \"PK 05 06\"\n if (data.length !== Constants.ENDHDR || data.readUInt32LE(0) !== Constants.ENDSIG)\n throw Utils.Errors.INVALID_END;\n\n // number of entries on this volume\n _volumeEntries = data.readUInt16LE(Constants.ENDSUB);\n // total number of entries\n _totalEntries = data.readUInt16LE(Constants.ENDTOT);\n // central directory size in bytes\n _size = data.readUInt32LE(Constants.ENDSIZ);\n // offset of first CEN header\n _offset = data.readUInt32LE(Constants.ENDOFF);\n // zip file comment length\n _commentLength = data.readUInt16LE(Constants.ENDCOM);\n },\n\n toBinary : function() {\n var b = Buffer.alloc(Constants.ENDHDR + _commentLength);\n // \"PK 05 06\" signature\n b.writeUInt32LE(Constants.ENDSIG, 0);\n b.writeUInt32LE(0, 4);\n // number of entries on this volume\n b.writeUInt16LE(_volumeEntries, Constants.ENDSUB);\n // total number of entries\n b.writeUInt16LE(_totalEntries, Constants.ENDTOT);\n // central directory size in bytes\n b.writeUInt32LE(_size, Constants.ENDSIZ);\n // offset of first CEN header\n b.writeUInt32LE(_offset, Constants.ENDOFF);\n // zip file comment length\n b.writeUInt16LE(_commentLength, Constants.ENDCOM);\n // fill comment memory with spaces so no garbage is left there\n b.fill(\" \", Constants.ENDHDR);\n\n return b;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"diskEntries\" : ' + _volumeEntries + \",\\n\" +\n '\\t\"totalEntries\" : ' + _totalEntries + \",\\n\" +\n '\\t\"size\" : ' + _size + \" bytes,\\n\" +\n '\\t\"offset\" : 0x' + _offset.toString(16).toUpperCase() + \",\\n\" +\n '\\t\"commentLength\" : 0x' + _commentLength + \"\\n\" +\n '}';\n }\n }\n};","module.exports = function (/*Buffer*/inbuf) {\n\n var zlib = require(\"zlib\");\n \n var opts = {chunkSize: (parseInt(inbuf.length / 1024) + 1) * 1024};\n \n return {\n deflate: function () {\n return zlib.deflateRawSync(inbuf, opts);\n },\n\n deflateAsync: function (/*Function*/callback) {\n var tmp = zlib.createDeflateRaw(opts), parts = [], total = 0;\n tmp.on('data', function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on('end', function () {\n var buf = Buffer.alloc(total), written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n }\n};\n","exports.Deflater = require(\"./deflater\");\r\nexports.Inflater = require(\"./inflater\");","module.exports = function (/*Buffer*/inbuf) {\n\n var zlib = require(\"zlib\");\n\n return {\n inflate: function () {\n return zlib.inflateRawSync(inbuf);\n },\n\n inflateAsync: function (/*Function*/callback) {\n var tmp = zlib.createInflateRaw(), parts = [], total = 0;\n tmp.on('data', function (data) {\n parts.push(data);\n total += data.length;\n });\n tmp.on('end', function () {\n var buf = Buffer.alloc(total), written = 0;\n buf.fill(0);\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n part.copy(buf, written);\n written += part.length;\n }\n callback && callback(buf);\n });\n tmp.end(inbuf);\n }\n }\n};\n","module.exports = {\r\n /* The local file header */\r\n LOCHDR : 30, // LOC header size\r\n LOCSIG : 0x04034b50, // \"PK\\003\\004\"\r\n LOCVER : 4,\t// version needed to extract\r\n LOCFLG : 6, // general purpose bit flag\r\n LOCHOW : 8, // compression method\r\n LOCTIM : 10, // modification time (2 bytes time, 2 bytes date)\r\n LOCCRC : 14, // uncompressed file crc-32 value\r\n LOCSIZ : 18, // compressed size\r\n LOCLEN : 22, // uncompressed size\r\n LOCNAM : 26, // filename length\r\n LOCEXT : 28, // extra field length\r\n\r\n /* The Data descriptor */\r\n EXTSIG : 0x08074b50, // \"PK\\007\\008\"\r\n EXTHDR : 16, // EXT header size\r\n EXTCRC : 4, // uncompressed file crc-32 value\r\n EXTSIZ : 8, // compressed size\r\n EXTLEN : 12, // uncompressed size\r\n\r\n /* The central directory file header */\r\n CENHDR : 46, // CEN header size\r\n CENSIG : 0x02014b50, // \"PK\\001\\002\"\r\n CENVEM : 4, // version made by\r\n CENVER : 6, // version needed to extract\r\n CENFLG : 8, // encrypt, decrypt flags\r\n CENHOW : 10, // compression method\r\n CENTIM : 12, // modification time (2 bytes time, 2 bytes date)\r\n CENCRC : 16, // uncompressed file crc-32 value\r\n CENSIZ : 20, // compressed size\r\n CENLEN : 24, // uncompressed size\r\n CENNAM : 28, // filename length\r\n CENEXT : 30, // extra field length\r\n CENCOM : 32, // file comment length\r\n CENDSK : 34, // volume number start\r\n CENATT : 36, // internal file attributes\r\n CENATX : 38, // external file attributes (host system dependent)\r\n CENOFF : 42, // LOC header offset\r\n\r\n /* The entries in the end of central directory */\r\n ENDHDR : 22, // END header size\r\n ENDSIG : 0x06054b50, // \"PK\\005\\006\"\r\n ENDSUB : 8, // number of entries on this disk\r\n ENDTOT : 10, // total number of entries\r\n ENDSIZ : 12, // central directory size in bytes\r\n ENDOFF : 16, // offset of first CEN header\r\n ENDCOM : 20, // zip file comment length\r\n\r\n /* Compression methods */\r\n STORED : 0, // no compression\r\n SHRUNK : 1, // shrunk\r\n REDUCED1 : 2, // reduced with compression factor 1\r\n REDUCED2 : 3, // reduced with compression factor 2\r\n REDUCED3 : 4, // reduced with compression factor 3\r\n REDUCED4 : 5, // reduced with compression factor 4\r\n IMPLODED : 6, // imploded\r\n // 7 reserved\r\n DEFLATED : 8, // deflated\r\n ENHANCED_DEFLATED: 9, // enhanced deflated\r\n PKWARE : 10,// PKWare DCL imploded\r\n // 11 reserved\r\n BZIP2 : 12, // compressed using BZIP2\r\n // 13 reserved\r\n LZMA : 14, // LZMA\r\n // 15-17 reserved\r\n IBM_TERSE : 18, // compressed using IBM TERSE\r\n IBM_LZ77 : 19, //IBM LZ77 z\r\n\r\n /* General purpose bit flag */\r\n FLG_ENC : 0, // encripted file\r\n FLG_COMP1 : 1, // compression option\r\n FLG_COMP2 : 2, // compression option\r\n FLG_DESC : 4, // data descriptor\r\n FLG_ENH : 8, // enhanced deflation\r\n FLG_STR : 16, // strong encryption\r\n FLG_LNG : 1024, // language encoding\r\n FLG_MSK : 4096, // mask header values\r\n\r\n /* Load type */\r\n FILE : 0,\r\n BUFFER : 1,\r\n NONE : 2,\r\n\r\n /* 4.5 Extensible data fields */\r\n EF_ID : 0,\r\n EF_SIZE : 2,\r\n\r\n /* Header IDs */\r\n ID_ZIP64 : 0x0001,\r\n ID_AVINFO : 0x0007,\r\n ID_PFS : 0x0008,\r\n ID_OS2 : 0x0009,\r\n ID_NTFS : 0x000a,\r\n ID_OPENVMS : 0x000c,\r\n ID_UNIX : 0x000d,\r\n ID_FORK : 0x000e,\r\n ID_PATCH : 0x000f,\r\n ID_X509_PKCS7 : 0x0014,\r\n ID_X509_CERTID_F : 0x0015,\r\n ID_X509_CERTID_C : 0x0016,\r\n ID_STRONGENC : 0x0017,\r\n ID_RECORD_MGT : 0x0018,\r\n ID_X509_PKCS7_RL : 0x0019,\r\n ID_IBM1 : 0x0065,\r\n ID_IBM2 : 0x0066,\r\n ID_POSZIP : 0x4690,\r\n\r\n EF_ZIP64_OR_32 : 0xffffffff,\r\n EF_ZIP64_OR_16 : 0xffff,\r\n EF_ZIP64_SUNCOMP : 0,\r\n EF_ZIP64_SCOMP : 8,\r\n EF_ZIP64_RHO : 16,\r\n EF_ZIP64_DSN : 24\r\n};\r\n","module.exports = {\r\n /* Header error messages */\r\n \"INVALID_LOC\" : \"Invalid LOC header (bad signature)\",\r\n \"INVALID_CEN\" : \"Invalid CEN header (bad signature)\",\r\n \"INVALID_END\" : \"Invalid END header (bad signature)\",\r\n\r\n /* ZipEntry error messages*/\r\n \"NO_DATA\" : \"Nothing to decompress\",\r\n \"BAD_CRC\" : \"CRC32 checksum failed\",\r\n \"FILE_IN_THE_WAY\" : \"There is a file in the way: %s\",\r\n \"UNKNOWN_METHOD\" : \"Invalid/unsupported compression method\",\r\n\r\n /* Inflater error messages */\r\n \"AVAIL_DATA\" : \"inflate::Available inflate data did not terminate\",\r\n \"INVALID_DISTANCE\" : \"inflate::Invalid literal/length or distance code in fixed or dynamic block\",\r\n \"TO_MANY_CODES\" : \"inflate::Dynamic block code description: too many length or distance codes\",\r\n \"INVALID_REPEAT_LEN\" : \"inflate::Dynamic block code description: repeat more than specified lengths\",\r\n \"INVALID_REPEAT_FIRST\" : \"inflate::Dynamic block code description: repeat lengths with no first length\",\r\n \"INCOMPLETE_CODES\" : \"inflate::Dynamic block code description: code lengths codes incomplete\",\r\n \"INVALID_DYN_DISTANCE\": \"inflate::Dynamic block code description: invalid distance code lengths\",\r\n \"INVALID_CODES_LEN\": \"inflate::Dynamic block code description: invalid literal/length code lengths\",\r\n \"INVALID_STORE_BLOCK\" : \"inflate::Stored block length did not match one's complement\",\r\n \"INVALID_BLOCK_TYPE\" : \"inflate::Invalid block type (type == 3)\",\r\n\r\n /* ADM-ZIP error messages */\r\n \"CANT_EXTRACT_FILE\" : \"Could not extract the file\",\r\n \"CANT_OVERRIDE\" : \"Target file already exists\",\r\n \"NO_ZIP\" : \"No zip file was loaded\",\r\n \"NO_ENTRY\" : \"Entry doesn't exist\",\r\n \"DIRECTORY_CONTENT_ERROR\" : \"A directory cannot have content\",\r\n \"FILE_NOT_FOUND\" : \"File not found: %s\",\r\n \"NOT_IMPLEMENTED\" : \"Not implemented\",\r\n \"INVALID_FILENAME\" : \"Invalid filename\",\r\n \"INVALID_FORMAT\" : \"Invalid or unsupported zip format. No END header found\"\r\n};","var fs = require(\"./fileSystem\").require(),\r\n pth = require(\"path\");\r\n\t\r\nfs.existsSync = fs.existsSync || pth.existsSync;\r\n\r\nmodule.exports = function(/*String*/path) {\r\n\r\n var _path = path || \"\",\r\n _permissions = 0,\r\n _obj = newAttr(),\r\n _stat = null;\r\n\r\n function newAttr() {\r\n return {\r\n directory : false,\r\n readonly : false,\r\n hidden : false,\r\n executable : false,\r\n mtime : 0,\r\n atime : 0\r\n }\r\n }\r\n\r\n if (_path && fs.existsSync(_path)) {\r\n _stat = fs.statSync(_path);\r\n _obj.directory = _stat.isDirectory();\r\n _obj.mtime = _stat.mtime;\r\n _obj.atime = _stat.atime;\r\n _obj.executable = !!(1 & parseInt ((_stat.mode & parseInt (\"777\", 8)).toString (8)[0]));\r\n _obj.readonly = !!(2 & parseInt ((_stat.mode & parseInt (\"777\", 8)).toString (8)[0]));\r\n _obj.hidden = pth.basename(_path)[0] === \".\";\r\n } else {\r\n console.warn(\"Invalid path: \" + _path)\r\n }\r\n\r\n return {\r\n\r\n get directory () {\r\n return _obj.directory;\r\n },\r\n\r\n get readOnly () {\r\n return _obj.readonly;\r\n },\r\n\r\n get hidden () {\r\n return _obj.hidden;\r\n },\r\n\r\n get mtime () {\r\n return _obj.mtime;\r\n },\r\n\r\n get atime () {\r\n return _obj.atime;\r\n },\r\n\r\n\r\n get executable () {\r\n return _obj.executable;\r\n },\r\n\r\n decodeAttributes : function(val) {\r\n\r\n },\r\n\r\n encodeAttributes : function (val) {\r\n\r\n },\r\n\r\n toString : function() {\r\n return '{\\n' +\r\n '\\t\"path\" : \"' + _path + \",\\n\" +\r\n '\\t\"isDirectory\" : ' + _obj.directory + \",\\n\" +\r\n '\\t\"isReadOnly\" : ' + _obj.readonly + \",\\n\" +\r\n '\\t\"isHidden\" : ' + _obj.hidden + \",\\n\" +\r\n '\\t\"isExecutable\" : ' + _obj.executable + \",\\n\" +\r\n '\\t\"mTime\" : ' + _obj.mtime + \"\\n\" +\r\n '\\t\"aTime\" : ' + _obj.atime + \"\\n\" +\r\n '}';\r\n }\r\n }\r\n\r\n};\r\n","exports.require = function() {\n var fs = require(\"fs\");\n if (process.versions['electron']) {\n\t try {\n\t originalFs = require(\"original-fs\");\n\t if (Object.keys(originalFs).length > 0) {\n\t fs = originalFs;\n }\n\t } catch (e) {}\n }\n return fs\n};\n","module.exports = require(\"./utils\");\r\nmodule.exports.FileSystem = require(\"./fileSystem\");\r\nmodule.exports.Constants = require(\"./constants\");\r\nmodule.exports.Errors = require(\"./errors\");\r\nmodule.exports.FileAttr = require(\"./fattr\");","var fs = require(\"./fileSystem\").require(),\r\n pth = require('path');\r\n\r\nfs.existsSync = fs.existsSync || pth.existsSync;\r\n\r\nmodule.exports = (function() {\r\n\r\n var crcTable = [],\r\n Constants = require('./constants'),\r\n Errors = require('./errors'),\r\n\r\n PATH_SEPARATOR = pth.sep;\r\n\r\n\r\n function mkdirSync(/*String*/path) {\r\n var resolvedPath = path.split(PATH_SEPARATOR)[0];\r\n path.split(PATH_SEPARATOR).forEach(function(name) {\r\n if (!name || name.substr(-1,1) === \":\") return;\r\n resolvedPath += PATH_SEPARATOR + name;\r\n var stat;\r\n try {\r\n stat = fs.statSync(resolvedPath);\r\n } catch (e) {\r\n fs.mkdirSync(resolvedPath);\r\n }\r\n if (stat && stat.isFile())\r\n throw Errors.FILE_IN_THE_WAY.replace(\"%s\", resolvedPath);\r\n });\r\n }\r\n\r\n function findSync(/*String*/dir, /*RegExp*/pattern, /*Boolean*/recoursive) {\r\n if (typeof pattern === 'boolean') {\r\n recoursive = pattern;\r\n pattern = undefined;\r\n }\r\n var files = [];\r\n fs.readdirSync(dir).forEach(function(file) {\r\n var path = pth.join(dir, file);\r\n\r\n if (fs.statSync(path).isDirectory() && recoursive)\r\n files = files.concat(findSync(path, pattern, recoursive));\r\n\r\n if (!pattern || pattern.test(path)) {\r\n files.push(pth.normalize(path) + (fs.statSync(path).isDirectory() ? PATH_SEPARATOR : \"\"));\r\n }\r\n\r\n });\r\n return files;\r\n }\r\n\r\n return {\r\n makeDir : function(/*String*/path) {\r\n mkdirSync(path);\r\n },\r\n\r\n crc32 : function(buf) {\r\n if (typeof buf === 'string') {\r\n buf = Buffer.alloc(buf.length, buf);\r\n }\r\n var b = Buffer.alloc(4);\r\n if (!crcTable.length) {\r\n for (var n = 0; n < 256; n++) {\r\n var c = n;\r\n for (var k = 8; --k >= 0;) //\r\n if ((c & 1) !== 0) { c = 0xedb88320 ^ (c >>> 1); } else { c = c >>> 1; }\r\n if (c < 0) {\r\n b.writeInt32LE(c, 0);\r\n c = b.readUInt32LE(0);\r\n }\r\n crcTable[n] = c;\r\n }\r\n }\r\n var crc = 0, off = 0, len = buf.length, c1 = ~crc;\r\n while(--len >= 0) c1 = crcTable[(c1 ^ buf[off++]) & 0xff] ^ (c1 >>> 8);\r\n crc = ~c1;\r\n b.writeInt32LE(crc & 0xffffffff, 0);\r\n return b.readUInt32LE(0);\r\n },\r\n\r\n methodToString : function(/*Number*/method) {\r\n switch (method) {\r\n case Constants.STORED:\r\n return 'STORED (' + method + ')';\r\n case Constants.DEFLATED:\r\n return 'DEFLATED (' + method + ')';\r\n default:\r\n return 'UNSUPPORTED (' + method + ')';\r\n }\r\n\r\n },\r\n\r\n writeFileTo : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr) {\r\n if (fs.existsSync(path)) {\r\n if (!overwrite)\r\n return false; // cannot overwrite\r\n\r\n var stat = fs.statSync(path);\r\n if (stat.isDirectory()) {\r\n return false;\r\n }\r\n }\r\n var folder = pth.dirname(path);\r\n if (!fs.existsSync(folder)) {\r\n mkdirSync(folder);\r\n }\r\n\r\n var fd;\r\n try {\r\n fd = fs.openSync(path, 'w', 438); // 0666\r\n } catch(e) {\r\n fs.chmodSync(path, 438);\r\n fd = fs.openSync(path, 'w', 438);\r\n }\r\n if (fd) {\r\n try {\r\n fs.writeSync(fd, content, 0, content.length, 0);\r\n }\r\n catch (e){\r\n throw e;\r\n }\r\n finally {\r\n fs.closeSync(fd);\r\n }\r\n }\r\n fs.chmodSync(path, attr || 438);\r\n return true;\r\n },\r\n\r\n writeFileToAsync : function(/*String*/path, /*Buffer*/content, /*Boolean*/overwrite, /*Number*/attr, /*Function*/callback) {\r\n if(typeof attr === 'function') {\r\n callback = attr;\r\n attr = undefined;\r\n }\r\n\r\n fs.exists(path, function(exists) {\r\n if(exists && !overwrite)\r\n return callback(false);\r\n\r\n fs.stat(path, function(err, stat) {\r\n if(exists &&stat.isDirectory()) {\r\n return callback(false);\r\n }\r\n\r\n var folder = pth.dirname(path);\r\n fs.exists(folder, function(exists) {\r\n if(!exists)\r\n mkdirSync(folder);\r\n\r\n fs.open(path, 'w', 438, function(err, fd) {\r\n if(err) {\r\n fs.chmod(path, 438, function() {\r\n fs.open(path, 'w', 438, function(err, fd) {\r\n fs.write(fd, content, 0, content.length, 0, function() {\r\n fs.close(fd, function() {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n });\r\n });\r\n });\r\n })\r\n } else {\r\n if(fd) {\r\n fs.write(fd, content, 0, content.length, 0, function() {\r\n fs.close(fd, function() {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n });\r\n });\r\n } else {\r\n fs.chmod(path, attr || 438, function() {\r\n callback(true);\r\n })\r\n }\r\n }\r\n });\r\n })\r\n })\r\n })\r\n },\r\n\r\n findFiles : function(/*String*/path) {\r\n return findSync(path, true);\r\n },\r\n\r\n getAttributes : function(/*String*/path) {\r\n\r\n },\r\n\r\n setAttributes : function(/*String*/path) {\r\n\r\n },\r\n\r\n toBuffer : function(input) {\r\n if (Buffer.isBuffer(input)) {\r\n return input;\r\n } else {\r\n if (input.length === 0) {\r\n return Buffer.alloc(0)\r\n }\r\n return Buffer.from(input, 'utf8');\r\n }\r\n },\r\n\r\n Constants : Constants,\r\n Errors : Errors\r\n }\r\n})();\r\n","var Utils = require(\"./util\"),\n Headers = require(\"./headers\"),\n Constants = Utils.Constants,\n Methods = require(\"./methods\");\n\nmodule.exports = function (/*Buffer*/input) {\n\n var _entryHeader = new Headers.EntryHeader(),\n _entryName = Buffer.alloc(0),\n _comment = Buffer.alloc(0),\n _isDirectory = false,\n uncompressedData = null,\n _extra = Buffer.alloc(0);\n\n function getCompressedDataFromZip() {\n if (!input || !Buffer.isBuffer(input)) {\n return Buffer.alloc(0);\n }\n _entryHeader.loadDataHeaderFromBinary(input);\n return input.slice(_entryHeader.realDataOffset, _entryHeader.realDataOffset + _entryHeader.compressedSize)\n }\n\n function crc32OK(data) {\n // if bit 3 (0x08) of the general-purpose flags field is set, then the CRC-32 and file sizes are not known when the header is written\n if ((_entryHeader.flags & 0x8) !== 0x8) {\n if (Utils.crc32(data) !== _entryHeader.dataHeader.crc) {\n return false;\n }\n } else {\n // @TODO: load and check data descriptor header\n // The fields in the local header are filled with zero, and the CRC-32 and size are appended in a 12-byte structure\n // (optionally preceded by a 4-byte signature) immediately after the compressed data:\n }\n return true;\n }\n\n function decompress(/*Boolean*/async, /*Function*/callback, /*String*/pass) {\n if(typeof callback === 'undefined' && typeof async === 'string') {\n pass=async;\n async=void 0;\n }\n if (_isDirectory) {\n if (async && callback) {\n callback(Buffer.alloc(0), Utils.Errors.DIRECTORY_CONTENT_ERROR); //si added error.\n }\n return Buffer.alloc(0);\n }\n\n var compressedData = getCompressedDataFromZip();\n \n if (compressedData.length === 0) {\n if (async && callback) callback(compressedData, Utils.Errors.NO_DATA);//si added error.\n return compressedData;\n }\n\n var data = Buffer.alloc(_entryHeader.size);\n\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n compressedData.copy(data);\n if (!crc32OK(data)) {\n if (async && callback) callback(data, Utils.Errors.BAD_CRC);//si added error\n return Utils.Errors.BAD_CRC;\n } else {//si added otherwise did not seem to return data.\n if (async && callback) callback(data);\n return data;\n }\n case Utils.Constants.DEFLATED:\n var inflater = new Methods.Inflater(compressedData);\n if (!async) {\n var result = inflater.inflate(data);\n result.copy(data, 0);\n if (!crc32OK(data)) {\n console.warn(Utils.Errors.BAD_CRC + \" \" + _entryName.toString())\n }\n return data;\n } else {\n inflater.inflateAsync(function(result) {\n result.copy(data, 0);\n if (!crc32OK(data)) {\n if (callback) callback(data, Utils.Errors.BAD_CRC); //si added error\n } else { //si added otherwise did not seem to return data.\n if (callback) callback(data);\n }\n })\n }\n break;\n default:\n if (async && callback) callback(Buffer.alloc(0), Utils.Errors.UNKNOWN_METHOD);\n return Utils.Errors.UNKNOWN_METHOD;\n }\n }\n\n function compress(/*Boolean*/async, /*Function*/callback) {\n if ((!uncompressedData || !uncompressedData.length) && Buffer.isBuffer(input)) {\n // no data set or the data wasn't changed to require recompression\n if (async && callback) callback(getCompressedDataFromZip());\n return getCompressedDataFromZip();\n }\n\n if (uncompressedData.length && !_isDirectory) {\n var compressedData;\n // Local file header\n switch (_entryHeader.method) {\n case Utils.Constants.STORED:\n _entryHeader.compressedSize = _entryHeader.size;\n\n compressedData = Buffer.alloc(uncompressedData.length);\n uncompressedData.copy(compressedData);\n\n if (async && callback) callback(compressedData);\n return compressedData;\n default:\n case Utils.Constants.DEFLATED:\n\n var deflater = new Methods.Deflater(uncompressedData);\n if (!async) {\n var deflated = deflater.deflate();\n _entryHeader.compressedSize = deflated.length;\n return deflated;\n } else {\n deflater.deflateAsync(function(data) {\n compressedData = Buffer.alloc(data.length);\n _entryHeader.compressedSize = data.length;\n data.copy(compressedData);\n callback && callback(compressedData);\n })\n }\n deflater = null;\n break;\n }\n } else {\n if (async && callback) {\n callback(Buffer.alloc(0));\n } else {\n return Buffer.alloc(0);\n }\n }\n }\n\n function readUInt64LE(buffer, offset) {\n return (buffer.readUInt32LE(offset + 4) << 4) + buffer.readUInt32LE(offset);\n }\n\n function parseExtra(data) {\n var offset = 0;\n var signature, size, part;\n while(offset<data.length) {\n signature = data.readUInt16LE(offset);\n offset += 2;\n size = data.readUInt16LE(offset);\n offset += 2;\n part = data.slice(offset, offset+size);\n offset += size;\n if(Constants.ID_ZIP64 === signature) {\n parseZip64ExtendedInformation(part);\n }\n }\n }\n\n //Override header field values with values from the ZIP64 extra field\n function parseZip64ExtendedInformation(data) {\n var size, compressedSize, offset, diskNumStart;\n\n if(data.length >= Constants.EF_ZIP64_SCOMP) {\n size = readUInt64LE(data, Constants.EF_ZIP64_SUNCOMP);\n if(_entryHeader.size === Constants.EF_ZIP64_OR_32) {\n _entryHeader.size = size;\n }\n }\n if(data.length >= Constants.EF_ZIP64_RHO) {\n compressedSize = readUInt64LE(data, Constants.EF_ZIP64_SCOMP);\n if(_entryHeader.compressedSize === Constants.EF_ZIP64_OR_32) {\n _entryHeader.compressedSize = compressedSize;\n }\n }\n if(data.length >= Constants.EF_ZIP64_DSN) {\n offset = readUInt64LE(data, Constants.EF_ZIP64_RHO);\n if(_entryHeader.offset === Constants.EF_ZIP64_OR_32) {\n _entryHeader.offset = offset;\n }\n }\n if(data.length >= Constants.EF_ZIP64_DSN+4) {\n diskNumStart = data.readUInt32LE(Constants.EF_ZIP64_DSN);\n if(_entryHeader.diskNumStart === Constants.EF_ZIP64_OR_16) {\n _entryHeader.diskNumStart = diskNumStart;\n }\n }\n }\n\n\n return {\n get entryName () { return _entryName.toString(); },\n get rawEntryName() { return _entryName; },\n set entryName (val) {\n _entryName = Utils.toBuffer(val);\n var lastChar = _entryName[_entryName.length - 1];\n _isDirectory = (lastChar === 47) || (lastChar === 92);\n _entryHeader.fileNameLength = _entryName.length;\n },\n\n get extra () { return _extra; },\n set extra (val) {\n _extra = val;\n _entryHeader.extraLength = val.length;\n parseExtra(val);\n },\n\n get comment () { return _comment.toString(); },\n set comment (val) {\n _comment = Utils.toBuffer(val);\n _entryHeader.commentLength = _comment.length;\n },\n\n get name () { var n = _entryName.toString(); return _isDirectory ? n.substr(n.length - 1).split(\"/\").pop() : n.split(\"/\").pop(); },\n get isDirectory () { return _isDirectory },\n\n getCompressedData : function() {\n return compress(false, null)\n },\n\n getCompressedDataAsync : function(/*Function*/callback) {\n compress(true, callback)\n },\n\n setData : function(value) {\n uncompressedData = Utils.toBuffer(value);\n if (!_isDirectory && uncompressedData.length) {\n _entryHeader.size = uncompressedData.length;\n _entryHeader.method = Utils.Constants.DEFLATED;\n _entryHeader.crc = Utils.crc32(value);\n _entryHeader.changed = true;\n } else { // folders and blank files should be stored\n _entryHeader.method = Utils.Constants.STORED;\n }\n },\n\n getData : function(pass) {\n if (_entryHeader.changed) {\n\t\t\t\treturn uncompressedData;\n\t\t\t} else {\n\t\t\t\treturn decompress(false, null, pass);\n }\n },\n\n getDataAsync : function(/*Function*/callback, pass) {\n\t\t\tif (_entryHeader.changed) {\n\t\t\t\tcallback(uncompressedData)\n\t\t\t} else {\n\t\t\t\tdecompress(true, callback, pass)\n }\n },\n\n set attr(attr) { _entryHeader.attr = attr; },\n get attr() { return _entryHeader.attr; },\n\n set header(/*Buffer*/data) {\n _entryHeader.loadFromBinary(data);\n },\n\n get header() {\n return _entryHeader;\n },\n\n packHeader : function() {\n var header = _entryHeader.entryHeaderToBinary();\n // add\n _entryName.copy(header, Utils.Constants.CENHDR);\n if (_entryHeader.extraLength) {\n _extra.copy(header, Utils.Constants.CENHDR + _entryName.length)\n }\n if (_entryHeader.commentLength) {\n _comment.copy(header, Utils.Constants.CENHDR + _entryName.length + _entryHeader.extraLength, _comment.length);\n }\n return header;\n },\n\n toString : function() {\n return '{\\n' +\n '\\t\"entryName\" : \"' + _entryName.toString() + \"\\\",\\n\" +\n '\\t\"name\" : \"' + (_isDirectory ? _entryName.toString().replace(/\\/$/, '').split(\"/\").pop() : _entryName.toString().split(\"/\").pop()) + \"\\\",\\n\" +\n '\\t\"comment\" : \"' + _comment.toString() + \"\\\",\\n\" +\n '\\t\"isDirectory\" : ' + _isDirectory + \",\\n\" +\n '\\t\"header\" : ' + _entryHeader.toString().replace(/\\t/mg, \"\\t\\t\").replace(/}/mg, \"\\t}\") + \",\\n\" +\n '\\t\"compressedData\" : <' + (input && input.length + \" bytes buffer\" || \"null\") + \">\\n\" +\n '\\t\"data\" : <' + (uncompressedData && uncompressedData.length + \" bytes buffer\" || \"null\") + \">\\n\" +\n '}';\n }\n }\n};\n","var ZipEntry = require(\"./zipEntry\"),\n\tHeaders = require(\"./headers\"),\n\tUtils = require(\"./util\");\n\nmodule.exports = function (/*String|Buffer*/input, /*Number*/inputType) {\n\tvar entryList = [],\n\t\tentryTable = {},\n\t\t_comment = Buffer.alloc(0),\n\t\tfilename = \"\",\n\t\tfs = Utils.FileSystem.require(),\n\t\tinBuffer = null,\n\t\tmainHeader = new Headers.MainHeader();\n\n\tif (inputType === Utils.Constants.FILE) {\n\t\t// is a filename\n\t\tfilename = input;\n\t\tinBuffer = fs.readFileSync(filename);\n\t\treadMainHeader();\n\t} else if (inputType === Utils.Constants.BUFFER) {\n\t\t// is a memory buffer\n\t\tinBuffer = input;\n\t\treadMainHeader();\n\t} else {\n\t\t// none. is a new file\n\t}\n\n\tfunction readEntries() {\n\t\tentryTable = {};\n\t\tentryList = new Array(mainHeader.diskEntries); // total number of entries\n\t\tvar index = mainHeader.offset; // offset of first CEN header\n\t\tfor (var i = 0; i < entryList.length; i++) {\n\n\t\t\tvar tmp = index,\n\t\t\t\tentry = new ZipEntry(inBuffer);\n\t\t\tentry.header = inBuffer.slice(tmp, tmp += Utils.Constants.CENHDR);\n\n\t\t\tentry.entryName = inBuffer.slice(tmp, tmp += entry.header.fileNameLength);\n\n\t\t\tif (entry.header.extraLength) {\n\t\t\t\tentry.extra = inBuffer.slice(tmp, tmp += entry.header.extraLength);\n\t\t\t}\n\n\t\t\tif (entry.header.commentLength)\n\t\t\t\tentry.comment = inBuffer.slice(tmp, tmp + entry.header.commentLength);\n\n\t\t\tindex += entry.header.entryHeaderSize;\n\n\t\t\tentryList[i] = entry;\n\t\t\tentryTable[entry.entryName] = entry;\n\t\t}\n\t}\n\n\tfunction readMainHeader() {\n\t\tvar i = inBuffer.length - Utils.Constants.ENDHDR, // END header size\n\t\t\tn = Math.max(0, i - 0xFFFF), // 0xFFFF is the max zip file comment length\n\t\t\tendOffset = -1; // Start offset of the END header\n\n\t\tfor (i; i >= n; i--) {\n\t\t\tif (inBuffer[i] !== 0x50) continue; // quick check that the byte is 'P'\n\t\t\tif (inBuffer.readUInt32LE(i) === Utils.Constants.ENDSIG) { // \"PK\\005\\006\"\n\t\t\t\tendOffset = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!~endOffset)\n\t\t\tthrow Utils.Errors.INVALID_FORMAT;\n\n\t\tmainHeader.loadFromBinary(inBuffer.slice(endOffset, endOffset + Utils.Constants.ENDHDR));\n\t\tif (mainHeader.commentLength) {\n\t\t\t_comment = inBuffer.slice(endOffset + Utils.Constants.ENDHDR);\n\t\t}\n\t\treadEntries();\n\t}\n\n\treturn {\n\t\t/**\n\t\t * Returns an array of ZipEntry objects existent in the current opened archive\n\t\t * @return Array\n\t\t */\n\t\tget entries() {\n\t\t\treturn entryList;\n\t\t},\n\n\t\t/**\n\t\t * Archive comment\n\t\t * @return {String}\n\t\t */\n\t\tget comment() {\n\t\t\treturn _comment.toString();\n\t\t},\n\t\tset comment(val) {\n\t\t\tmainHeader.commentLength = val.length;\n\t\t\t_comment = val;\n\t\t},\n\n\t\t/**\n\t\t * Returns a reference to the entry with the given name or null if entry is inexistent\n\t\t *\n\t\t * @param entryName\n\t\t * @return ZipEntry\n\t\t */\n\t\tgetEntry: function (/*String*/entryName) {\n\t\t\treturn entryTable[entryName] || null;\n\t\t},\n\n\t\t/**\n\t\t * Adds the given entry to the entry list\n\t\t *\n\t\t * @param entry\n\t\t */\n\t\tsetEntry: function (/*ZipEntry*/entry) {\n\t\t\tentryList.push(entry);\n\t\t\tentryTable[entry.entryName] = entry;\n\t\t\tmainHeader.totalEntries = entryList.length;\n\t\t},\n\n\t\t/**\n\t\t * Removes the entry with the given name from the entry list.\n\t\t *\n\t\t * If the entry is a directory, then all nested files and directories will be removed\n\t\t * @param entryName\n\t\t */\n\t\tdeleteEntry: function (/*String*/entryName) {\n\t\t\tvar entry = entryTable[entryName];\n\t\t\tif (entry && entry.isDirectory) {\n\t\t\t\tvar _self = this;\n\t\t\t\tthis.getEntryChildren(entry).forEach(function (child) {\n\t\t\t\t\tif (child.entryName !== entryName) {\n\t\t\t\t\t\t_self.deleteEntry(child.entryName)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\tentryList.splice(entryList.indexOf(entry), 1);\n\t\t\tdelete(entryTable[entryName]);\n\t\t\tmainHeader.totalEntries = entryList.length;\n\t\t},\n\n\t\t/**\n\t\t * Iterates and returns all nested files and directories of the given entry\n\t\t *\n\t\t * @param entry\n\t\t * @return Array\n\t\t */\n\t\tgetEntryChildren: function (/*ZipEntry*/entry) {\n\t\t\tif (entry.isDirectory) {\n\t\t\t\tvar list = [],\n\t\t\t\t\tname = entry.entryName,\n\t\t\t\t\tlen = name.length;\n\n\t\t\t\tentryList.forEach(function (zipEntry) {\n\t\t\t\t\tif (zipEntry.entryName.substr(0, len) === name) {\n\t\t\t\t\t\tlist.push(zipEntry);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn list;\n\t\t\t}\n\t\t\treturn []\n\t\t},\n\n\t\t/**\n\t\t * Returns the zip file\n\t\t *\n\t\t * @return Buffer\n\t\t */\n\t\tcompressToBuffer: function () {\n\t\t\tif (entryList.length > 1) {\n\t\t\t\tentryList.sort(function (a, b) {\n\t\t\t\t\tvar nameA = a.entryName.toLowerCase();\n\t\t\t\t\tvar nameB = b.entryName.toLowerCase();\n\t\t\t\t\tif (nameA < nameB) {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (nameA > nameB) {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar totalSize = 0,\n\t\t\t\tdataBlock = [],\n\t\t\t\tentryHeaders = [],\n\t\t\t\tdindex = 0;\n\n\t\t\tmainHeader.size = 0;\n\t\t\tmainHeader.offset = 0;\n\n\t\t\tentryList.forEach(function (entry) {\n\t\t\t\t// compress data and set local and entry header accordingly. Reason why is called first\n\t\t\t\tvar compressedData = entry.getCompressedData();\n\t\t\t\t// data header\n\t\t\t\tentry.header.offset = dindex;\n\t\t\t\tvar dataHeader = entry.header.dataHeaderToBinary();\n\t\t\t\tvar entryNameLen = entry.rawEntryName.length;\n\t\t\t\tvar extra = entry.extra.toString();\n\t\t\t\tvar postHeader = Buffer.alloc(entryNameLen + extra.length);\n\t\t\t\tentry.rawEntryName.copy(postHeader, 0);\n\t\t\t\tpostHeader.fill(extra, entryNameLen);\n\n\t\t\t\tvar dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n\t\t\t\tdindex += dataLength;\n\n\t\t\t\tdataBlock.push(dataHeader);\n\t\t\t\tdataBlock.push(postHeader);\n\t\t\t\tdataBlock.push(compressedData);\n\n\t\t\t\tvar entryHeader = entry.packHeader();\n\t\t\t\tentryHeaders.push(entryHeader);\n\t\t\t\tmainHeader.size += entryHeader.length;\n\t\t\t\ttotalSize += (dataLength + entryHeader.length);\n\t\t\t});\n\n\t\t\ttotalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n\t\t\t// point to end of data and beginning of central directory first record\n\t\t\tmainHeader.offset = dindex;\n\n\t\t\tdindex = 0;\n\t\t\tvar outBuffer = Buffer.alloc(totalSize);\n\t\t\tdataBlock.forEach(function (content) {\n\t\t\t\tcontent.copy(outBuffer, dindex); // write data blocks\n\t\t\t\tdindex += content.length;\n\t\t\t});\n\t\t\tentryHeaders.forEach(function (content) {\n\t\t\t\tcontent.copy(outBuffer, dindex); // write central directory entries\n\t\t\t\tdindex += content.length;\n\t\t\t});\n\n\t\t\tvar mh = mainHeader.toBinary();\n\t\t\tif (_comment) {\n\t\t\t\t_comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n\t\t\t}\n\n\t\t\tmh.copy(outBuffer, dindex); // write main header\n\n\t\t\treturn outBuffer\n\t\t},\n\n\t\ttoAsyncBuffer: function (/*Function*/onSuccess, /*Function*/onFail, /*Function*/onItemStart, /*Function*/onItemEnd) {\n\t\t\tif (entryList.length > 1) {\n\t\t\t\tentryList.sort(function (a, b) {\n\t\t\t\t\tvar nameA = a.entryName.toLowerCase();\n\t\t\t\t\tvar nameB = b.entryName.toLowerCase();\n\t\t\t\t\tif (nameA > nameB) {\n\t\t\t\t\t\treturn -1\n\t\t\t\t\t}\n\t\t\t\t\tif (nameA < nameB) {\n\t\t\t\t\t\treturn 1\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar totalSize = 0,\n\t\t\t\tdataBlock = [],\n\t\t\t\tentryHeaders = [],\n\t\t\t\tdindex = 0;\n\n\t\t\tmainHeader.size = 0;\n\t\t\tmainHeader.offset = 0;\n\n\t\t\tvar compress = function (entryList) {\n\t\t\t\tvar self = arguments.callee;\n\t\t\t\tif (entryList.length) {\n\t\t\t\t\tvar entry = entryList.pop();\n\t\t\t\t\tvar name = entry.entryName + entry.extra.toString();\n\t\t\t\t\tif (onItemStart) onItemStart(name);\n\t\t\t\t\tentry.getCompressedDataAsync(function (compressedData) {\n\t\t\t\t\t\tif (onItemEnd) onItemEnd(name);\n\n\t\t\t\t\t\tentry.header.offset = dindex;\n\t\t\t\t\t\t// data header\n\t\t\t\t\t\tvar dataHeader = entry.header.dataHeaderToBinary();\n\t\t\t\t\t\tvar postHeader;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpostHeader = Buffer.alloc(name.length, name); // using alloc will work on node 5.x+\n\t\t\t\t\t\t} catch(e){\n\t\t\t\t\t\t\tpostHeader = new Buffer(name); // use deprecated method if alloc fails...\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar dataLength = dataHeader.length + postHeader.length + compressedData.length;\n\n\t\t\t\t\t\tdindex += dataLength;\n\n\t\t\t\t\t\tdataBlock.push(dataHeader);\n\t\t\t\t\t\tdataBlock.push(postHeader);\n\t\t\t\t\t\tdataBlock.push(compressedData);\n\n\t\t\t\t\t\tvar entryHeader = entry.packHeader();\n\t\t\t\t\t\tentryHeaders.push(entryHeader);\n\t\t\t\t\t\tmainHeader.size += entryHeader.length;\n\t\t\t\t\t\ttotalSize += (dataLength + entryHeader.length);\n\n\t\t\t\t\t\tif (entryList.length) {\n\t\t\t\t\t\t\tself(entryList);\n\t\t\t\t\t\t} else {\n\n\n\t\t\t\t\t\t\ttotalSize += mainHeader.mainHeaderSize; // also includes zip file comment length\n\t\t\t\t\t\t\t// point to end of data and beginning of central directory first record\n\t\t\t\t\t\t\tmainHeader.offset = dindex;\n\n\t\t\t\t\t\t\tdindex = 0;\n\t\t\t\t\t\t\tvar outBuffer = Buffer.alloc(totalSize);\n\t\t\t\t\t\t\tdataBlock.forEach(function (content) {\n\t\t\t\t\t\t\t\tcontent.copy(outBuffer, dindex); // write data blocks\n\t\t\t\t\t\t\t\tdindex += content.length;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tentryHeaders.forEach(function (content) {\n\t\t\t\t\t\t\t\tcontent.copy(outBuffer, dindex); // write central directory entries\n\t\t\t\t\t\t\t\tdindex += content.length;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tvar mh = mainHeader.toBinary();\n\t\t\t\t\t\t\tif (_comment) {\n\t\t\t\t\t\t\t\t_comment.copy(mh, Utils.Constants.ENDHDR); // add zip file comment\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmh.copy(outBuffer, dindex); // write main header\n\n\t\t\t\t\t\t\tonSuccess(outBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tcompress(entryList);\n\t\t}\n\t}\n};\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = any> = (event?: T) => void;\nexport type WildcardHandler = (type: EventType, event?: any) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList = Array<Handler>;\nexport type WildCardEventHandlerList = Array<WildcardHandler>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap = Map<EventType, EventHandlerList | WildCardEventHandlerList>;\n\nexport interface Emitter {\n\tall: EventHandlerMap;\n\n\ton<T = any>(type: EventType, handler: Handler<T>): void;\n\ton(type: '*', handler: WildcardHandler): void;\n\n\toff<T = any>(type: EventType, handler: Handler<T>): void;\n\toff(type: '*', handler: WildcardHandler): void;\n\n\temit<T = any>(type: EventType, event?: T): void;\n\temit(type: '*', event?: any): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt(all?: EventHandlerMap): Emitter {\n\tall = all || new Map();\n\n\treturn {\n\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<T = any>(type: EventType, handler: Handler<T>) {\n\t\t\tconst handlers = all.get(type);\n\t\t\tconst added = handlers && handlers.push(handler);\n\t\t\tif (!added) {\n\t\t\t\tall.set(type, [handler]);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<T = any>(type: EventType, handler: Handler<T>) {\n\t\t\tconst handlers = all.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing \"*\" handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<T = any>(type: EventType, evt: T) {\n\t\t\t((all.get(type) || []) as EventHandlerList).slice().map((handler) => { handler(evt); });\n\t\t\t((all.get('*') || []) as WildCardEventHandlerList).slice().map((handler) => { handler(type, evt); });\n\t\t}\n\t};\n}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","import * as monthUtils from '../shared/months';\nimport * as sheet from '../server/sheet';\nimport * as budget from '../server/budget/base';\nimport * as db from '../server/db';\nimport * as prefs from '../server/prefs';\nimport * as budgetActions from '../server/budget/actions';\nimport { runQuery as aqlQuery } from '../server/aql/schema/run-query';\nimport { batchMessages, setSyncingMode } from '../server/sync';\nimport { runHandler, runMutator } from '../server/mutators';\nimport { addTransactions } from '../server/accounts/sync';\nimport q from '../shared/query';\n\nfunction pickRandom(list) {\n return list[((Math.random() * list.length) | 0) % list.length];\n}\n\nfunction number(start, end) {\n return start + (end - start) * Math.random();\n}\n\nfunction integer(start, end) {\n return number(start, end) | 0;\n}\n\nfunction findMin(items, field) {\n let item = items[0];\n for (let i = 0; i < items.length; i++) {\n if (items[i][field] < item[field]) {\n item = items[i];\n }\n }\n return item;\n}\n\nfunction getStartingBalanceCat(categories) {\n return categories.find(c => c.name === 'Starting Balances').id;\n}\n\nfunction extractCommonThings(payees, groups) {\n let incomePayee = payees.find(p => p.name === 'Deposit');\n let expensePayees = payees.filter(\n p => p.name !== 'Deposit' && p.name !== 'Starting Balance'\n );\n let expenseGroup = groups.find(g => g.is_income === 0);\n let incomeGroup = groups.find(g => g.is_income === 1);\n let categories = expenseGroup.categories.filter(\n c =>\n [\n 'Food',\n 'Restaurants',\n 'Entertainment',\n 'Clothing',\n 'General',\n 'Gift',\n 'Medical'\n ].indexOf(c.name) !== -1\n );\n\n return {\n incomePayee,\n expensePayees: expensePayees.filter(p => !p.bill),\n incomeGroup,\n expenseCategories: categories,\n billCategories: groups.find(g => g.name === 'Bills').categories,\n billPayees: expensePayees.filter(p => p.bill)\n };\n}\n\nasync function fillPrimaryChecking(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories,\n billCategories,\n billPayees\n } = extractCommonThings(payees, groups);\n let numTransactions = integer(100, 200);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.09) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n\n let category;\n if (payee.name === 'Deposit') {\n category = incomeGroup.categories.find(c => c.name === 'Income');\n } else {\n category = pickRandom(expenseCategories);\n }\n\n let amount;\n if (payee.name === 'Deposit') {\n amount = integer(50000, 70000);\n } else {\n amount = integer(0, Math.random() < 0.05 ? -8000 : -700);\n }\n\n let transaction = {\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i / 3) | 0),\n category: category.id\n };\n transactions.push(transaction);\n\n if (Math.random() < 0.2) {\n let a = (transaction.amount / 3) | 0;\n let pick = () =>\n payee === incomePayee\n ? incomeGroup.categories.find(c => c.name === 'Income').id\n : pickRandom(expenseCategories).id;\n transaction.subtransactions = [\n { amount: a, category: pick() },\n { amount: a, category: pick() },\n {\n amount: transaction.amount - a * 2,\n category: pick()\n }\n ];\n }\n }\n\n let earliestMonth = monthUtils.monthFromDate(\n transactions[transactions.length - 1].date\n );\n let months = monthUtils.rangeInclusive(\n earliestMonth,\n monthUtils.currentMonth()\n );\n let currentDay = monthUtils.currentDay();\n for (let month of months) {\n let date = monthUtils.addDays(month, '12');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -10000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('power')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Power').id\n });\n }\n\n date = monthUtils.addDays(month, '18');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -9000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('water')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Water').id\n });\n }\n\n date = monthUtils.addDays(month, '2');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -120000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('housy')).id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Mortgage').id\n });\n }\n\n date = monthUtils.addDays(month, '20');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -6000,\n payee: billPayees.find(p => p.name.toLowerCase().includes('internet'))\n .id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Internet').id\n });\n }\n\n date = monthUtils.addDays(month, '23');\n if (monthUtils.isBefore(date, currentDay)) {\n transactions.push({\n amount: -7500,\n payee: billPayees.find(p => p.name.toLowerCase().includes('t-mobile'))\n .id,\n account: account.id,\n date,\n category: billCategories.find(c => c.name === 'Cell').id\n });\n }\n }\n\n let earliestDate = null;\n transactions.forEach(t => {\n if (earliestDate == null || t.date < earliestDate) {\n earliestDate = t.date;\n }\n });\n\n transactions.unshift({\n amount: 100000,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: earliestDate,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n return addTransactions(account.id, transactions);\n}\n\nasync function fillChecking(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n let numTransactions = integer(20, 40);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.04) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n\n let category;\n if (payee.name === 'Deposit') {\n category = incomeGroup.categories.find(c => c.name === 'Income');\n } else {\n category = pickRandom(expenseCategories);\n }\n\n let amount =\n payee.name === 'Deposit' ? integer(50000, 70000) : integer(0, -10000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i * 2) | 0),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: integer(90000, 120000),\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: transactions[transactions.length - 1].date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillInvestment(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(10, 30);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let amount = integer(10000, 20000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), integer(10, 360)),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: integer(10000, 20000),\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: findMin(transactions, 'date').date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillSavings(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(15, 40);\n\n let transactions = [];\n for (let i = 0; i < numTransactions; i++) {\n let payee;\n if (Math.random() < 0.3) {\n payee = incomePayee;\n } else {\n payee = pickRandom(expensePayees);\n }\n let category =\n payee === incomePayee\n ? incomeGroup.categories.find(c => c.name === 'Income')\n : pickRandom(expenseCategories);\n let amount =\n payee === incomePayee ? integer(10000, 80000) : integer(-10000, -2000);\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subDays(monthUtils.currentDay(), (i * 5) | 0),\n category: category.id\n });\n }\n\n transactions.unshift({\n amount: 30000,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date: transactions[transactions.length - 1].date,\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n });\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillMortgage(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(7, 10);\n let amount = integer(100000, 200000);\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let transactions = [\n {\n amount: integer(-3000, -3500) * 100 * 100,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date:\n monthUtils.subMonths(monthUtils.currentDay(), numTransactions) + '-02',\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n }\n ];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subMonths(monthUtils.currentDay(), i) + '-02',\n category: category.id,\n starting_balance_flag: true\n });\n }\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function fillOther(handlers, account, payees, groups) {\n let {\n incomePayee,\n expensePayees,\n incomeGroup,\n expenseCategories\n } = extractCommonThings(payees, groups);\n\n let numTransactions = integer(3, 6);\n let category = incomeGroup.categories.find(c => c.name === 'Income');\n\n let transactions = [\n {\n amount: integer(3250, 3700) * 100 * 100,\n payee: payees.find(p => p.name === 'Starting Balance').id,\n account: account.id,\n date:\n monthUtils.subMonths(monthUtils.currentDay(), numTransactions) + '-02',\n category: getStartingBalanceCat(incomeGroup.categories),\n starting_balance_flag: true\n }\n ];\n for (let i = 0; i < numTransactions; i++) {\n let payee = incomePayee;\n let amount = integer(4, 9) * 100 * 100;\n\n transactions.push({\n amount,\n payee: payee.id,\n account: account.id,\n date: monthUtils.subMonths(monthUtils.currentDay(), i) + '-02',\n category: category.id\n });\n }\n\n await handlers['transactions-batch-update']({\n added: transactions,\n fastMode: true\n });\n}\n\nasync function createBudget(accounts, payees, groups) {\n let primaryAccount = accounts.find(a => (a.name = 'Bank of America'));\n let earliestDate = (await db.first(\n `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id\n WHERE a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1`\n )).date;\n let earliestPrimaryDate = (await db.first(\n `SELECT * FROM v_transactions t LEFT JOIN accounts a ON t.account = a.id\n WHERE a.id = ? AND a.offbudget = 0 AND t.is_child = 0 ORDER BY date ASC LIMIT 1`,\n [primaryAccount.id]\n )).date;\n\n let start = monthUtils.monthFromDate(db.fromDateRepr(earliestDate));\n let end = monthUtils.currentMonth();\n let months = monthUtils.rangeInclusive(start, end);\n\n function category(name) {\n for (let group of groups) {\n let cat = group.categories.find(c => c.name === name);\n if (cat) {\n return cat;\n }\n }\n }\n\n function setBudget(month, category, amount) {\n return budgetActions.setBudget({ month, category: category.id, amount });\n }\n\n function setBudgetIfSpent(month, cat) {\n let spent = sheet.getCellValue(\n monthUtils.sheetForMonth(month),\n `sum-amount-${cat.id}`\n );\n\n if (spent < 0) {\n setBudget(month, cat, -spent);\n }\n }\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let month of months) {\n if (\n month >=\n monthUtils.monthFromDate(db.fromDateRepr(earliestPrimaryDate))\n ) {\n setBudget(month, category('Food'), 40000);\n setBudget(month, category('Restaurants'), 30000);\n setBudget(month, category('Entertainment'), 10000);\n setBudget(month, category('Clothing'), 3000);\n setBudget(month, category('General'), 50000);\n setBudget(month, category('Gift'), 7500);\n setBudget(month, category('Medical'), 10000);\n\n setBudget(month, category('Cell'), 7500);\n setBudget(month, category('Internet'), 6000);\n setBudget(month, category('Mortgage'), 120000);\n setBudget(month, category('Water'), 9000);\n setBudget(month, category('Power'), 10000);\n } else {\n setBudgetIfSpent(month, category('Food'));\n setBudgetIfSpent(month, category('Restaurants'));\n setBudgetIfSpent(month, category('Entertainment'));\n setBudgetIfSpent(month, category('Clothing'));\n setBudgetIfSpent(month, category('General'));\n setBudgetIfSpent(month, category('Gift'));\n setBudgetIfSpent(month, category('Medical'));\n\n setBudgetIfSpent(month, category('Cell'));\n setBudgetIfSpent(month, category('Internet'));\n setBudgetIfSpent(month, category('Mortgage'));\n setBudgetIfSpent(month, category('Water'));\n setBudgetIfSpent(month, category('Power'));\n }\n }\n })\n );\n\n await sheet.waitOnSpreadsheet();\n\n await runMutator(() =>\n batchMessages(async () => {\n let prevSaved = 0;\n for (let month of months) {\n if (\n month >=\n monthUtils.monthFromDate(db.fromDateRepr(earliestPrimaryDate)) &&\n month <= monthUtils.currentMonth()\n ) {\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n let available = toBudget - prevSaved;\n\n if (available - 403000 > 0) {\n setBudget(month, category('Savings'), available - 403000);\n budgetActions.setBuffer(month, 403000);\n\n prevSaved += available - 403000;\n } else if (available > 0) {\n budgetActions.setBuffer(month, available);\n }\n }\n }\n })\n );\n\n await sheet.waitOnSpreadsheet();\n\n let sheetName = monthUtils.sheetForMonth(monthUtils.currentMonth());\n let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n if (toBudget < 0) {\n await addTransactions(primaryAccount.id, [\n {\n amount: -toBudget,\n category: category('Income').id,\n date: monthUtils.currentMonth() + '-01'\n }\n ]);\n }\n\n // let sheetName = monthUtils.sheetForMonth(monthUtils.currentMonth());\n // let toBudget = sheet.getCellValue(sheetName, 'to-budget');\n // setBudget(monthUtils.currentMonth(), category('Savings'), toBudget);\n\n await sheet.waitOnSpreadsheet();\n}\n\nexport async function createTestBudget(handlers) {\n setSyncingMode('import');\n\n await db.execQuery('PRAGMA journal_mode = OFF');\n\n // Clear out the default categories. This is fine to do without\n // going through the sync system because we are in import mode and\n // these aren't tracked through messages anyway.\n await db.runQuery('DELETE FROM categories;');\n await db.runQuery('DELETE FROM category_groups');\n\n let accounts = [\n { name: 'Bank of America', type: 'checking' },\n { name: 'Ally Savings', type: 'savings' },\n { name: 'Capital One Checking', type: 'checking' },\n { name: 'HSBC', type: 'checking' },\n { name: 'Vanguard 401k', type: 'investment', offBudget: 1 },\n { name: 'Mortgage', type: 'mortgage', offBudget: 1 },\n { name: 'House Asset', type: 'other', offBudget: 1 },\n { name: 'Roth IRA', type: 'investment', offBudget: 1 }\n ];\n await runMutator(() =>\n batchMessages(async () => {\n for (let account of accounts) {\n account.id = await handlers['account-create'](account);\n }\n })\n );\n\n let payees = [\n { name: 'Starting Balance' },\n { name: 'Kroger' },\n { name: 'Publix' },\n { name: 'Home Depot' },\n { name: 'Movies' },\n { name: 'Online store' },\n { name: 'Deposit' },\n { name: 'Dominion Power', bill: true },\n { name: 'Extra Watery', bill: true },\n { name: 'Housy House', bill: true },\n { name: 'Fast Internet', bill: true },\n { name: 'T-mobile', bill: true }\n ];\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let payee of payees) {\n payee.id = await handlers['payee-create']({ name: payee.name });\n }\n })\n );\n\n let categoryGroups = [\n {\n name: 'Usual Expenses',\n categories: [\n { name: 'Savings' },\n { name: 'Medical' },\n { name: 'Gift' },\n { name: 'General' },\n { name: 'Clothing' },\n { name: 'Entertainment' },\n { name: 'Restaurants' },\n { name: 'Food' }\n ]\n },\n {\n name: 'Bills',\n categories: [\n { name: 'Power' },\n { name: 'Water' },\n { name: 'Mortgage' },\n { name: 'Internet' },\n { name: 'Cell' }\n ]\n },\n {\n name: 'Income',\n is_income: true,\n categories: [\n { name: 'Income', is_income: true },\n { name: 'Misc', is_income: true },\n { name: 'Starting Balances', is_income: true }\n ]\n }\n ];\n\n await runMutator(async () => {\n for (let group of categoryGroups) {\n group.id = await handlers['category-group-create']({\n name: group.name,\n isIncome: group.is_income ? 1 : 0\n });\n\n for (let category of group.categories) {\n category.id = await handlers['category-create']({\n ...category,\n isIncome: category.is_income ? 1 : 0,\n groupId: group.id\n });\n }\n }\n });\n\n let allGroups = (await runHandler(handlers['get-categories'])).grouped;\n\n setSyncingMode('import');\n\n await runMutator(() =>\n batchMessages(async () => {\n for (let account of accounts) {\n switch (account.type) {\n case 'checking':\n if (account.name === 'Bank of America') {\n await fillPrimaryChecking(handlers, account, payees, allGroups);\n } else {\n await fillChecking(handlers, account, payees, allGroups);\n }\n break;\n case 'investment':\n await fillInvestment(handlers, account, payees, allGroups);\n break;\n case 'savings':\n await fillSavings(handlers, account, payees, allGroups);\n break;\n case 'mortgage':\n await fillMortgage(handlers, account, payees, allGroups);\n break;\n case 'other':\n if (account.name === 'House Asset') {\n await fillOther(handlers, account, payees, allGroups);\n } else {\n await fillChecking(handlers, account, payees, allGroups);\n }\n break;\n default:\n }\n }\n })\n );\n\n setSyncingMode('import');\n\n // This checks to see if the primary account is in the negative.\n // This might happen depending on the transactions added, but we\n // don't want to show that as it'd be weird. We modify the latest\n // deposit transaction to force it to be positive\n let primaryAccount = accounts.find(a => (a.name = 'Bank of America'));\n let { data: primaryBalance } = await aqlQuery(\n q('transactions')\n .filter({ account: primaryAccount.id })\n .calculate({ $sum: '$amount' })\n .serialize()\n );\n if (primaryBalance < 0) {\n let { data: results } = await aqlQuery(\n q('transactions')\n .filter({ account: primaryAccount.id, amount: { $gt: 0 } })\n .limit(1)\n .select(['id', 'amount'])\n .serialize()\n );\n let lastDeposit = results[0];\n\n await runHandler(handlers['transaction-update'], {\n ...lastDeposit,\n amount: lastDeposit.amount + -primaryBalance + integer(10000, 20000)\n });\n }\n\n // Bust the cache and reload the spreadsheet\n setSyncingMode('disabled');\n await prefs.savePrefs({ isCached: false });\n await sheet.reloadSpreadsheet(db);\n await budget.createAllBudgets();\n\n await sheet.waitOnSpreadsheet();\n\n // Create a budget\n await createBudget(accounts, payees, allGroups);\n}\n","export function captureException(exc) {\n console.log('[Exception]', exc);\n if (global.SentryClient) {\n global.SentryClient.captureException(exc);\n }\n}\n\nexport function captureBreadcrumb(breadcrumb) {\n if (global.SentryClient) {\n global.SentryClient.addBreadcrumb(breadcrumb);\n }\n}\n","const lootFs = require('../fs');\nconst fs = require('fs');\nconst { join } = require('path');\n\nlet getStorePath = () => join(lootFs.getDataDir(), 'global-store.json');\nlet store;\nlet persisted = true;\n\nfunction init({ persist = true } = {}) {\n if (persist) {\n try {\n store = JSON.parse(fs.readFileSync(getStorePath(), 'utf8'));\n } catch (e) {\n store = {};\n }\n } else {\n store = {};\n }\n\n persisted = persist;\n}\n\nfunction _saveStore() {\n if (persisted) {\n return new Promise(function(resolve, reject) {\n fs.writeFile(getStorePath(), JSON.stringify(store), 'utf8', function(\n err,\n _\n ) {\n return err ? reject(err) : resolve();\n });\n });\n }\n}\n\nfunction getItem(key) {\n return new Promise(function(resolve) {\n return resolve(store[key]);\n });\n}\n\nfunction setItem(key, value) {\n store[key] = value;\n return _saveStore();\n}\n\nfunction removeItem(key) {\n delete store[key];\n return _saveStore();\n}\n\nfunction multiGet(keys) {\n return new Promise(function(resolve) {\n return resolve(\n keys.map(function(key) {\n return [key, store[key]];\n })\n );\n });\n}\n\nfunction multiSet(keyValues) {\n keyValues.forEach(function([key, value]) {\n store[key] = value;\n });\n return _saveStore();\n}\n\nfunction multiRemove(keys) {\n keys.forEach(function(key) {\n delete store[key];\n });\n return _saveStore();\n}\n\nmodule.exports = {\n init,\n getItem,\n setItem,\n removeItem,\n multiGet,\n multiSet,\n multiRemove\n};\n","function init() {}\n\nfunction send(type, args) {\n // Nothing\n}\n\nmodule.exports = { init, send };\n","let fs = require('fs');\nlet fetch = require('node-fetch');\n\nasync function fetchBinary(url, filepath) {\n const res = await fetch(url);\n return new Promise((resolve, reject) => {\n const fileStream = fs.createWriteStream(filepath);\n res.body.pipe(fileStream);\n res.body.on('error', err => {\n reject(err);\n });\n fileStream.on('finish', function() {\n resolve();\n });\n });\n}\n\nmodule.exports = { fetch, fetchBinary };\n","const fs = require('fs');\nconst path = require('path');\n\nlet documentDir;\n\nlet rootPath = path.join(__dirname, '..', '..', '..', '..');\n\nif (__filename.match('bundle')) {\n // The file name is not our filename and indicates that we're in the\n // bundled form. Because of this, the root path is different.\n rootPath = path.join(__dirname, '..');\n}\n\nmodule.exports = {\n init: () => {\n // Nothing to do\n },\n getDataDir: () => {\n if (!process.env.ACTUAL_DATA_DIR) {\n throw new Error('ACTUAL_DATA_DIR env variable is required');\n }\n return process.env.ACTUAL_DATA_DIR;\n },\n _setDocumentDir: dir => (documentDir = dir),\n getDocumentDir: () => {\n if (!documentDir) {\n throw new Error('Document directory is not set');\n }\n return documentDir;\n },\n getBudgetDir: id => {\n if (!id) {\n throw new Error('getDocumentDir: id is falsy: ' + id);\n }\n\n // TODO: This should be better\n //\n // A cheesy safe guard. The id is generated from the budget name,\n // so it provides an entry point for the user to accidentally (or\n // intentionally) access other parts of the system. Always\n // restrict it to only access files within the budget directory by\n // never allowing slashes.\n if (id.match(/[^A-Za-z0-9\\-_]/)) {\n throw new Error(\n `Invalid budget id \"${id}\". Check the id of your budget in the \"Advanced\" section of the settings page.`\n );\n }\n\n return path.join(module.exports.getDocumentDir(), id);\n },\n bundledDatabasePath: path.join(rootPath, 'default-db.sqlite'),\n migrationsPath: path.join(rootPath, 'migrations'),\n demoBudgetPath: path.join(rootPath, 'demo-budget'),\n join: path.join,\n basename: filepath => path.basename(filepath),\n listDir: filepath =>\n new Promise((resolve, reject) => {\n fs.readdir(filepath, (err, files) => {\n if (err) {\n reject(err);\n } else {\n resolve(files);\n }\n });\n }),\n exists: filepath =>\n new Promise(resolve => {\n fs.access(filepath, fs.constants.F_OK, err => {\n return resolve(!err);\n });\n }),\n mkdir: filepath =>\n new Promise((resolve, reject) => {\n fs.mkdir(filepath, err => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n }),\n size: filepath =>\n new Promise((resolve, reject) => {\n fs.stat(filepath, (err, stats) => {\n if (err) {\n reject(err);\n } else {\n resolve(stats.size);\n }\n });\n }),\n copyFile: (frompath, topath) => {\n return new Promise((resolve, reject) => {\n const readStream = fs.createReadStream(frompath);\n const writeStream = fs.createWriteStream(topath);\n\n readStream.on('error', reject);\n writeStream.on('error', reject);\n\n writeStream.on('open', () => readStream.pipe(writeStream));\n writeStream.once('close', resolve);\n });\n },\n readFile: (filepath, encoding = 'utf8') => {\n if (encoding === 'binary') {\n // `binary` is not actually a valid encoding, you pass `null` into node if\n // you want a buffer\n encoding = null;\n }\n return new Promise((resolve, reject) => {\n fs.readFile(filepath, encoding, (err, data) => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n });\n },\n writeFile: (filepath, contents) => {\n return new Promise(function(resolve, reject) {\n fs.writeFile(filepath, contents, 'utf8', function(err, _) {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeFile: filepath => {\n return new Promise(function(resolve, reject) {\n fs.unlink(filepath, err => {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeDir: dirpath => {\n return new Promise(function(resolve, reject) {\n fs.rmdir(dirpath, err => {\n return err ? reject(err) : resolve();\n });\n });\n },\n removeDirRecursively: async dirpath => {\n const f = module.exports;\n if (await f.exists(dirpath)) {\n for (let file of await f.listDir(dirpath)) {\n const fullpath = f.join(dirpath, file);\n if (fs.statSync(fullpath).isDirectory()) {\n await f.removeDirRecursively(fullpath);\n } else {\n await f.removeFile(fullpath);\n }\n }\n\n await f.removeDir(dirpath);\n }\n },\n getModifiedTime: filepath => {\n return new Promise(function(resolve, reject) {\n fs.stat(filepath, (err, stats) => {\n if (err) {\n reject(err);\n } else {\n resolve(new Date(stats.mtime));\n }\n });\n });\n }\n};\n","export default {\n info: (...args) => {\n console.log(...args);\n },\n warn: (...args) => {\n console.warn(...args);\n }\n};\n","const Database = require('better-sqlite3');\n\nfunction verifyParamTypes(sql, arr) {\n arr.forEach(val => {\n if (typeof val !== 'string' && typeof val !== 'number' && val !== null) {\n console.log(sql, arr);\n throw new Error('Invalid field type ' + val + ' for sql ' + sql);\n }\n });\n}\n\nexport async function init() {}\n\nexport function prepare(db, sql) {\n return db.prepare(sql);\n}\n\nexport function runQuery(db, sql, params = [], fetchAll) {\n if (params) {\n verifyParamTypes(sql, params);\n }\n\n let stmt;\n try {\n stmt = typeof sql === 'string' ? db.prepare(sql) : sql;\n } catch (e) {\n console.log('error', sql);\n throw e;\n }\n\n if (fetchAll) {\n try {\n let result = stmt.all(...params);\n return result;\n } catch (e) {\n console.log('error', sql);\n throw e;\n }\n } else {\n try {\n let info = stmt.run(...params);\n return { changes: info.changes, insertId: info.lastInsertRowid };\n } catch (e) {\n // console.log('error', sql);\n throw e;\n }\n }\n}\n\nexport function execQuery(db, sql) {\n db.exec(sql);\n}\n\nexport function transaction(db, fn) {\n db.transaction(fn)();\n}\n\n// **Important**: this is an unsafe function since sqlite executes\n// executes statements sequentially. It would be easy for other code\n// to run statements in between our transaction and get caught up in\n// it. This is rarely used, and only needed for specific cases (like\n// batch importing a bunch of data). Don't use this.\nlet transactionDepth = 0;\nexport async function asyncTransaction(db, fn) {\n // Support nested transactions by \"coalescing\" them into the parent\n // one if one is already started\n if (transactionDepth === 0) {\n db.exec('BEGIN TRANSACTION');\n }\n transactionDepth++;\n\n try {\n await fn();\n } finally {\n transactionDepth--;\n // We always commit because rollback is more dangerous - any\n // queries that ran *in-between* this async function would be\n // lost. Right now we are only using transactions for speed\n // purposes unfortunately\n if (transactionDepth === 0) {\n db.exec('COMMIT');\n }\n }\n}\n\nexport function openDatabase(pathOrBuffer) {\n return new Database(pathOrBuffer);\n}\n\nexport function closeDatabase(db) {\n return db.close();\n}\n\nexport function exportDatabase(db) {\n return db.serialize();\n}\n","const uuid = require('uuid');\n\nmodule.exports = {\n v4: function() {\n return Promise.resolve(uuid.v4());\n },\n\n v4Sync: function() {\n return uuid.v4();\n }\n};\n","import fs from 'fs';\nimport csvStringify from 'csv-stringify/lib/sync';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport { integerToAmount } from '../../shared/util';\n\nexport async function exportToCSV(\n transactions,\n accounts,\n categoryGroups,\n payees\n) {\n const accountNamesById = accounts.reduce((reduced, { id, name }) => {\n reduced[id] = name;\n return reduced;\n }, {});\n\n const categoryNamesById = categoryGroups.reduce(\n (reduced, { name, categories: subCategories }) => {\n subCategories.forEach(\n subCategory =>\n (reduced[subCategory.id] = `${name}: ${subCategory.name}`)\n );\n return reduced;\n },\n {}\n );\n\n const payeeNamesById = payees.reduce((reduced, { id, name }) => {\n reduced[id] = name;\n return reduced;\n }, {});\n\n const transactionsForExport = transactions.map(\n ({ account, date, payee, notes, category, amount }) => ({\n Account: accountNamesById[account],\n Date: date,\n Payee: payeeNamesById[payee],\n Notes: notes,\n Category: categoryNamesById[category],\n Amount: amount == null ? 0 : integerToAmount(amount)\n })\n );\n\n return csvStringify(transactionsForExport, { header: true });\n}\n\nexport async function exportQueryToCSV(query) {\n let { data: transactions } = await aqlQuery(\n query\n .select([\n { Id: 'id' },\n { Account: 'account.name' },\n { Date: 'date' },\n { Payee: 'payee.name' },\n { ParentId: 'parent_id' },\n { IsParent: 'is_parent' },\n { Notes: 'notes' },\n { Category: 'category.name' },\n { Amount: 'amount' }\n ])\n .options({ splits: 'all' })\n );\n\n let parentsPayees = new Map();\n for (let trans of transactions) {\n if (trans.IsParent) {\n parentsPayees.set(trans.Id, trans.Payee);\n }\n }\n\n // filter out any parent transactions\n let noParents = transactions.filter(t => !t.IsParent);\n\n // map final properties for export and grab the payee for splits from their parent transaction\n let transactionsForExport = noParents.map(trans => {\n return {\n Account: trans.Account,\n Date: trans.Date,\n Payee: trans.ParentId ? parentsPayees.get(trans.ParentId) : trans.Payee,\n Notes: trans.Notes,\n Category: trans.Category,\n Amount: trans.Amount == null ? 0 : integerToAmount(trans.Amount)\n };\n });\n\n return csvStringify(transactionsForExport, { header: true });\n}\n","import asyncStorage from '../../platform/server/asyncStorage';\nimport * as db from '../db';\nimport { getConfig, setConfig } from '../config';\nimport * as bankSync from './sync';\nimport { fromPlaidAccountType } from '../../shared/accounts';\nimport { amountToInteger } from '../../shared/util';\nimport { post } from '../post';\nimport { runMutator } from '../mutators';\nconst uuid = require('../../platform/uuid');\n\nexport async function handoffPublicToken(institution, publicToken) {\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n if (institution == null || !institution.institution_id || !institution.name) {\n throw new Error('Invalid institution object');\n }\n\n let id = uuid.v4Sync();\n\n // Make sure to generate an access token first before inserting it\n // into our local database in case it fails\n await post(getConfig().PLAID_SERVER + '/handoff_public_token', {\n userId,\n key,\n item_id: id,\n public_token: publicToken\n });\n\n await runMutator(() =>\n db.insertWithUUID('banks', {\n id,\n bank_id: institution.institution_id,\n name: institution.name\n })\n );\n\n return id;\n}\n\nexport async function addAccounts(bankId, accountIds, offbudgetIds = []) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n // Get all the available accounts\n let accounts = await bankSync.getAccounts(userId, userKey, bankId);\n\n // Only add the selected accounts\n accounts = accounts.filter(acct => accountIds.includes(acct.account_id));\n\n return Promise.all(\n accounts.map(async acct => {\n let id = await runMutator(async () => {\n let id = await db.insertAccount({\n account_id: acct.account_id,\n name: acct.name,\n official_name: acct.official_name,\n type: fromPlaidAccountType(acct.type),\n balance_current: amountToInteger(acct.balances.current),\n mask: acct.mask,\n bank: bankId,\n offbudget: offbudgetIds.includes(acct.account_id) ? 1 : 0\n });\n\n // Create a transfer payee\n await db.insertPayee({\n name: '',\n transfer_acct: id\n });\n\n return id;\n });\n\n // Do an initial sync\n await bankSync.syncAccount(userId, userKey, id, acct.account_id, bankId);\n\n return id;\n })\n );\n}\n","import fs from '../../platform/server/fs';\nimport qif2json from './qif2json';\nimport csv2json from 'csv-parse/lib/sync';\nimport { dayFromDate } from '../../shared/months';\nimport { looselyParseAmount } from '../../shared/util';\n\nexport function parseFile(filepath, options) {\n let errors = [];\n let m = filepath.match(/\\.[^.]*$/);\n\n if (m) {\n let ext = m[0];\n\n switch (ext.toLowerCase()) {\n case '.qif':\n return parseQIF(filepath);\n case '.csv':\n return parseCSV(filepath, options);\n case '.ofx':\n case '.qfx':\n return parseOFX(filepath);\n default:\n }\n }\n\n errors.push({\n message: 'Invalid file type',\n internal: ''\n });\n return { errors };\n}\n\nasync function parseCSV(filepath, options = {}) {\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = csv2json(contents, {\n columns: true,\n bom: true,\n delimiter: options.delimiter || ',',\n quote: '\"',\n trim: true,\n relax_column_count: true\n });\n } catch (err) {\n errors.push({\n message: 'Failed parsing: ' + err.message,\n internal: err.message\n });\n return { errors, transactions: [] };\n }\n\n return { errors, transactions: data };\n}\n\nasync function parseQIF(filepath) {\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = qif2json(contents);\n } catch (err) {\n errors.push({\n message: \"Failed parsing: doesn't look like a valid QIF file.\",\n internal: err.stack\n });\n return { errors, transactions: [] };\n }\n\n return {\n errors,\n transactions: data.transactions.map(trans => ({\n amount: trans.amount != null ? looselyParseAmount(trans.amount) : null,\n date: trans.date,\n payee_name: trans.payee,\n imported_payee: trans.payee,\n notes: trans.memo || null\n }))\n };\n}\n\nasync function parseOFX(filepath) {\n let { getOFXTransactions, initModule } = await import(\n /* webpackChunkName: 'xfo' */ 'node-libofx'\n );\n await initModule();\n\n let errors = [];\n let contents = await fs.readFile(filepath);\n\n let data;\n try {\n data = getOFXTransactions(contents);\n } catch (err) {\n errors.push({\n message: 'Failed importing file',\n internal: err.stack\n });\n return { errors };\n }\n\n return {\n errors,\n transactions: data.map(trans => ({\n amount: trans.amount,\n imported_id: trans.fi_id,\n date: trans.date ? dayFromDate(trans.date * 1000) : null,\n payee_name: trans.name,\n imported_payee: trans.name,\n notes: trans.memo || null\n }))\n };\n}\n","import * as db from '../db';\n\nexport async function createPayee(description) {\n // Check to make sure no payee already exists with exactly the same\n // name\n let row = await db.first(\n `SELECT id FROM payees WHERE LOWER(name) = ? AND tombstone = 0`,\n [description.toLowerCase()]\n );\n\n if (row) {\n return row.id;\n } else {\n return db.insertPayee({ name: description });\n }\n}\n\nexport async function getStartingBalancePayee() {\n let category = await db.first(`\n SELECT * FROM categories\n WHERE is_income = 1 AND\n LOWER(name) = 'starting balances' AND\n tombstone = 0\n `);\n if (category === null) {\n category = await db.first(\n 'SELECT * FROM categories WHERE is_income = 1 AND tombstone = 0'\n );\n }\n\n let id = await createPayee('Starting Balance');\n return {\n id,\n category: category ? category.id : null\n };\n}\n","export default function parse(qif, options) {\n var lines = qif.split('\\n'),\n line = lines.shift(),\n type = /!Type:([^$]*)$/.exec(line.trim()),\n data = {},\n transactions = (data.transactions = []),\n transaction = {};\n\n options = options || {};\n\n if (!type || !type.length) {\n throw new Error('File does not appear to be a valid qif file: ' + line);\n }\n data.type = type[1];\n\n var division = {};\n\n while ((line = lines.shift())) {\n line = line.trim();\n if (line === '^') {\n transactions.push(transaction);\n transaction = {};\n continue;\n }\n switch (line[0]) {\n case 'D':\n transaction.date = line.substring(1);\n break;\n case 'T':\n transaction.amount = line.substring(1);\n break;\n case 'N':\n transaction.number = line.substring(1);\n break;\n case 'M':\n transaction.memo = line.substring(1);\n break;\n case 'A':\n transaction.address = (transaction.address || []).concat(\n line.substring(1)\n );\n break;\n case 'P':\n transaction.payee = line.substring(1).replace(/&/g, '&');\n break;\n case 'L':\n var lArray = line.substring(1).split(':');\n transaction.category = lArray[0];\n if (lArray[1] !== undefined) {\n transaction.subcategory = lArray[1];\n }\n break;\n case 'C':\n transaction.clearedStatus = line.substring(1);\n break;\n case 'S':\n var sArray = line.substring(1).split(':');\n division.category = sArray[0];\n if (sArray[1] !== undefined) {\n division.subcategory = sArray[1];\n }\n break;\n case 'E':\n division.description = line.substring(1);\n break;\n case '$':\n division.amount = parseFloat(line.substring(1));\n if (!(transaction.division instanceof Array)) {\n transaction.division = [];\n }\n transaction.division.push(division);\n division = {};\n\n break;\n\n default:\n throw new Error('Unknown Detail Code: ' + line[0]);\n }\n }\n\n if (Object.keys(transaction).length) {\n transactions.push(transaction);\n }\n\n data.dateFormat = options.dateFormat;\n return data;\n}\n","import { RuleError } from '../errors';\nimport * as dateFns from 'date-fns';\nimport {\n monthFromDate,\n yearFromDate,\n isBefore,\n isAfter,\n addDays,\n subDays,\n format as formatDate,\n parseDate\n} from '../../shared/months';\nimport { fastSetMerge } from '../../shared/util';\nimport { sortNumbers, getApproxNumberThreshold } from '../../shared/rules';\nimport { recurConfigToRSchedule } from '../../shared/schedules';\nimport { Schedule as RSchedule } from '../util/rschedule';\n\nfunction safeNumber(n) {\n return isNaN(n) ? null : n;\n}\n\nfunction safeParseInt(n) {\n return safeNumber(parseInt(n));\n}\n\nfunction assert(test, type, msg) {\n if (!test) {\n throw new RuleError(type, msg);\n }\n}\n\nexport function parseRecurDate(desc) {\n try {\n let rules = recurConfigToRSchedule(desc);\n\n return {\n type: 'recur',\n schedule: new RSchedule({ rrules: rules })\n };\n } catch (e) {\n throw new RuleError('parse-recur-date', e.message);\n }\n}\n\nexport function parseDateString(str) {\n if (typeof str !== 'string') {\n return null;\n } else if (str.length === 10) {\n // YYYY-MM-DD\n if (!dateFns.isValid(dateFns.parseISO(str))) {\n return null;\n }\n\n return { type: 'date', date: str };\n } else if (str.length === 7) {\n // YYYY-MM\n if (!dateFns.isValid(dateFns.parseISO(str + '-01'))) {\n return null;\n }\n\n return { type: 'month', date: str };\n } else if (str.length === 4) {\n // YYYY\n if (!dateFns.isValid(dateFns.parseISO(str + '-01-01'))) {\n return null;\n }\n\n return { type: 'year', date: str };\n }\n\n return null;\n}\n\nexport function parseBetweenAmount(between) {\n let { num1, num2 } = between;\n if (typeof num1 !== 'number' || typeof num2 !== 'number') {\n return null;\n }\n return { type: 'between', num1, num2 };\n}\n\nlet CONDITION_TYPES = {\n date: {\n ops: ['is', 'isapprox', 'gt', 'gte', 'lt', 'lte'],\n nullable: false,\n parse(op, value, fieldName) {\n let parsed =\n typeof value === 'string'\n ? parseDateString(value)\n : value.frequency != null\n ? parseRecurDate(value)\n : null;\n assert(\n parsed,\n 'date-format',\n `Invalid date format (field: ${fieldName})`\n );\n\n // Approximate only works with exact & recurring dates\n if (op === 'isapprox') {\n assert(\n parsed.type === 'date' || parsed.type === 'recur',\n 'date-format',\n `Invalid date value for \"isapprox\" (field: ${fieldName})`\n );\n }\n // These only work with exact dates\n else if (op === 'gt' || op === 'gte' || op === 'lt' || op === 'lte') {\n assert(\n parsed.type === 'date',\n 'date-format',\n `Invalid date value for \"${op}\" (field: ${fieldName})`\n );\n }\n\n return parsed;\n }\n },\n id: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: true,\n parse(op, value, fieldName) {\n if (op === 'oneOf') {\n assert(\n Array.isArray(value),\n 'no-empty-array',\n `oneOf must have an array value (field: ${fieldName})`\n );\n return value;\n }\n return value;\n }\n },\n string: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: false,\n parse(op, value, fieldName) {\n if (op === 'oneOf') {\n assert(\n Array.isArray(value),\n 'no-empty-array',\n `oneOf must have an array value (field: ${fieldName}): ${JSON.stringify(\n value\n )}`\n );\n return value.filter(Boolean).map(val => val.toLowerCase());\n }\n\n if (op === 'contains') {\n assert(\n typeof value === 'string' && value.length > 0,\n 'no-empty-string',\n `contains must have non-empty string (field: ${fieldName})`\n );\n }\n\n return value.toLowerCase();\n }\n },\n number: {\n ops: ['is', 'isapprox', 'isbetween', 'gt', 'gte', 'lt', 'lte'],\n nullable: false,\n parse(op, value, fieldName) {\n let parsed =\n typeof value === 'number'\n ? { type: 'literal', value }\n : parseBetweenAmount(value);\n\n assert(\n parsed != null,\n 'not-number',\n `Value must be a number or between amount: ${JSON.stringify(\n value\n )} (field: ${fieldName})`\n );\n\n if (op === 'isbetween') {\n assert(\n parsed.type === 'between',\n 'number-format',\n `Invalid between value for \"${op}\" (field: ${fieldName})`\n );\n } else {\n assert(\n parsed.type === 'literal',\n 'number-format',\n `Invalid number value for \"${op}\" (field: ${fieldName})`\n );\n }\n\n return parsed;\n }\n },\n boolean: {\n ops: ['is'],\n nullable: false,\n parse(op, value, fieldName) {\n assert(\n typeof value === 'boolean',\n 'not-boolean',\n `Value must be a boolean: ${value} (field: ${fieldName})`\n );\n\n return value;\n }\n }\n};\n\nexport class Condition {\n constructor(op, field, value, options, fieldTypes) {\n let typeName = fieldTypes.get(field);\n assert(typeName, 'internal', 'Invalid condition field: ' + field);\n\n let type = CONDITION_TYPES[typeName];\n\n // It's important to validate rules because a faulty rule might mess\n // up the user's transaction (and be very confusing)\n assert(\n type,\n 'internal',\n `Invalid condition type: ${typeName} (field: ${field})`\n );\n assert(\n type.ops.includes(op),\n 'internal',\n `Invalid condition operator: ${op} (type: ${typeName}, field: ${field})`\n );\n\n if (type.nullable !== true) {\n assert(value != null, 'no-null', `Field cannot be empty: ${field}`);\n }\n\n // For strings, an empty string is equal to null\n if (typeName === 'string' && type.nullable !== true) {\n assert(value !== '', 'no-null', `Field cannot be empty: ${field}`);\n }\n\n this.rawValue = value;\n this.unparsedValue = value;\n this.op = op;\n this.field = field;\n this.value = type.parse ? type.parse(op, value, field) : value;\n this.options = options;\n this.type = typeName;\n }\n\n eval(object) {\n let fieldValue = object[this.field];\n if (fieldValue === undefined) {\n return false;\n }\n\n if (typeof fieldValue === 'string') {\n fieldValue = fieldValue.toLowerCase();\n }\n\n let type = this.type;\n\n if (type === 'number' && this.options) {\n if (this.options.outflow) {\n if (fieldValue > 0) {\n return false;\n }\n\n fieldValue = -fieldValue;\n } else if (this.options.inflow) {\n if (fieldValue < 0) {\n return false;\n }\n }\n }\n\n let extractValue = v => (type === 'number' ? v.value : v);\n\n switch (this.op) {\n case 'isapprox':\n case 'is':\n if (type === 'date') {\n if (fieldValue == null) {\n return false;\n }\n\n if (this.value.type === 'recur') {\n let { schedule } = this.value;\n if (this.op === 'isapprox') {\n let fieldDate = parseDate(fieldValue);\n return schedule.occursBetween(\n dateFns.subDays(fieldDate, 2),\n dateFns.addDays(fieldDate, 2)\n );\n } else {\n return schedule.occursOn({ date: parseDate(fieldValue) });\n }\n } else {\n let { date } = this.value;\n\n if (this.op === 'isapprox') {\n let fullDate = parseDate(date);\n let high = addDays(fullDate, 2);\n let low = subDays(fullDate, 2);\n\n return fieldValue >= low && fieldValue <= high;\n } else {\n switch (this.value.type) {\n case 'date':\n return fieldValue === date;\n case 'month':\n return monthFromDate(fieldValue) === date;\n case 'year':\n return yearFromDate(fieldValue) === date;\n default:\n }\n }\n }\n } else if (type === 'number') {\n let number = this.value.value;\n if (this.op === 'isapprox') {\n let threshold = getApproxNumberThreshold(number);\n return (\n fieldValue >= number - threshold &&\n fieldValue <= number + threshold\n );\n }\n return fieldValue === number;\n }\n\n return fieldValue === this.value;\n case 'isbetween': {\n // The parsing logic already checks that the value is of the\n // right type (only numbers with high and low)\n let [low, high] = sortNumbers(this.value.num1, this.value.num2);\n return fieldValue >= low && fieldValue <= high;\n }\n case 'contains':\n if (fieldValue === null) {\n return false;\n }\n return fieldValue.indexOf(this.value) !== -1;\n case 'oneOf':\n if (fieldValue === null) {\n return false;\n }\n return this.value.indexOf(fieldValue) !== -1;\n case 'gt':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return isAfter(fieldValue, this.value.date);\n }\n\n return fieldValue > extractValue(this.value);\n case 'gte':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return (\n fieldValue === this.value.date ||\n isAfter(fieldValue, this.value.date)\n );\n }\n\n return fieldValue >= extractValue(this.value);\n case 'lt':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return isBefore(fieldValue, this.value.date);\n }\n return fieldValue < extractValue(this.value);\n case 'lte':\n if (fieldValue === null) {\n return false;\n } else if (type === 'date') {\n return (\n fieldValue === this.value.date ||\n isBefore(fieldValue, this.value.date)\n );\n }\n return fieldValue <= extractValue(this.value);\n default:\n }\n\n return false;\n }\n\n getValue() {\n return this.value;\n }\n\n serialize() {\n return {\n op: this.op,\n field: this.field,\n value: this.unparsedValue,\n type: this.type,\n ...(this.options ? { options: this.options } : null)\n };\n }\n}\n\nlet ACTION_OPS = ['set', 'link-schedule'];\n\nexport class Action {\n constructor(op, field, value, options, fieldTypes) {\n assert(\n ACTION_OPS.includes(op),\n 'internal',\n `Invalid action operation: ${op}`\n );\n\n if (op === 'set') {\n let typeName = fieldTypes.get(field);\n assert(typeName, 'internal', `Invalid field for action: ${field}`);\n this.field = field;\n this.type = typeName;\n } else if (op === 'link-schedule') {\n this.field = null;\n this.type = 'id';\n }\n\n this.op = op;\n this.rawValue = value;\n this.value = value;\n this.options = options;\n }\n\n exec(object) {\n switch (this.op) {\n case 'set':\n object[this.field] = this.value;\n break;\n case 'link-schedule':\n object.schedule = this.value;\n break;\n default:\n }\n }\n\n serialize() {\n return {\n op: this.op,\n field: this.field,\n value: this.value,\n type: this.type,\n ...(this.options ? { options: this.options } : null)\n };\n }\n}\n\nexport class Rule {\n constructor({ id, stage, conditions, actions, fieldTypes }) {\n this.id = id;\n this.stage = stage;\n this.conditions = conditions.map(\n c => new Condition(c.op, c.field, c.value, c.options, fieldTypes)\n );\n this.actions = actions.map(\n a => new Action(a.op, a.field, a.value, a.options, fieldTypes)\n );\n }\n\n evalConditions(object) {\n if (this.conditions.length === 0) {\n return false;\n }\n\n return this.conditions.every(condition => {\n return condition.eval(object);\n });\n }\n\n execActions(object) {\n let changes = {};\n this.actions.forEach(action => action.exec(changes));\n return changes;\n }\n\n exec(object) {\n if (this.evalConditions(object)) {\n return this.execActions(object);\n }\n return null;\n }\n\n // Apply is similar to exec but applies the changes for you\n apply(object) {\n let changes = this.exec(object);\n return Object.assign({}, object, changes);\n }\n\n getId() {\n return this.id;\n }\n\n serialize() {\n return {\n id: this.id,\n stage: this.stage,\n conditions: this.conditions.map(c => c.serialize()),\n actions: this.actions.map(a => a.serialize())\n };\n }\n}\n\nexport class RuleIndexer {\n constructor({ field, method }) {\n this.field = field;\n this.method = method;\n this.rules = new Map();\n }\n\n getIndex(key) {\n if (!this.rules.has(key)) {\n this.rules.set(key, new Set());\n }\n return this.rules.get(key);\n }\n\n getIndexForValue(value) {\n return this.getIndex(this.getKey(value) || '*');\n }\n\n getKey(value) {\n if (typeof value === 'string' && value !== '') {\n if (this.method === 'firstchar') {\n return value[0].toLowerCase();\n }\n return value.toLowerCase();\n }\n return null;\n }\n\n getIndexes(rule) {\n let cond = rule.conditions.find(cond => cond.field === this.field);\n let indexes = [];\n\n if (cond && (cond.op === 'oneOf' || cond.op === 'is')) {\n if (cond.op === 'oneOf') {\n cond.value.forEach(val => indexes.push(this.getIndexForValue(val)));\n } else {\n indexes.push(this.getIndexForValue(cond.value));\n }\n } else {\n indexes.push(this.getIndex('*'));\n }\n\n return indexes;\n }\n\n index(rule) {\n let indexes = this.getIndexes(rule);\n indexes.forEach(index => {\n index.add(rule);\n });\n }\n\n remove(rule) {\n let indexes = this.getIndexes(rule);\n indexes.forEach(index => {\n index.delete(rule);\n });\n }\n\n getApplicableRules(object) {\n let indexedRules;\n if (this.field in object) {\n let key = this.getKey(object[this.field]);\n if (key) {\n indexedRules = this.rules.get(key);\n }\n }\n\n return fastSetMerge(\n indexedRules || new Set(),\n this.rules.get('*') || new Set()\n );\n }\n}\n\nconst OP_SCORES = {\n is: 10,\n oneOf: 9,\n isapprox: 5,\n isbetween: 5,\n gt: 1,\n gte: 1,\n lt: 1,\n lte: 1,\n contains: 0\n};\n\nfunction computeScore(rule) {\n let initialScore = rule.conditions.reduce((score, condition) => {\n if (OP_SCORES[condition.op] == null) {\n console.log(`Found invalid operation while ranking: ${condition.op}`);\n return 0;\n }\n\n return score + OP_SCORES[condition.op];\n }, 0);\n\n if (\n rule.conditions.every(\n cond => cond.op === 'is' || cond.op === 'isapprox' || cond.op === 'oneOf'\n )\n ) {\n return initialScore * 2;\n }\n return initialScore;\n}\n\nfunction _rankRules(rules) {\n let scores = new Map();\n rules.forEach(rule => {\n scores.set(rule, computeScore(rule));\n });\n\n // No matter the order of rules, this must always return exactly the same\n // order. That's why rules have ids: if two rules have the same score, it\n // sorts by id\n return [...rules].sort((r1, r2) => {\n let score1 = scores.get(r1);\n let score2 = scores.get(r2);\n if (score1 < score2) {\n return -1;\n } else if (score1 > score2) {\n return 1;\n } else {\n let id1 = r1.getId();\n let id2 = r2.getId();\n return id1 < id2 ? -1 : id1 > id2 ? 1 : 0;\n }\n });\n}\n\nexport function rankRules(rules) {\n let pre = [];\n let normal = [];\n let post = [];\n\n for (let rule of rules) {\n switch (rule.stage) {\n case 'pre':\n pre.push(rule);\n break;\n case 'post':\n post.push(rule);\n break;\n default:\n normal.push(rule);\n }\n }\n\n pre = _rankRules(pre);\n normal = _rankRules(normal);\n post = _rankRules(post);\n\n return pre.concat(normal).concat(post);\n}\n\nexport function migrateIds(rule, mappings) {\n // Go through the in-memory rules and patch up ids that have been\n // \"migrated\" to other ids. This is a little tricky, but a lot\n // easier than trying to keep an up-to-date mapping in the db. This\n // is necessary because ids can be transparently mapped as items are\n // merged/deleted in the system.\n //\n // It's very important here that we look at `rawValue` specifically,\n // and only apply the patches to the other `value` fields. We always\n // need to keep the original id around because undo can walk\n // backwards, and we need to be able to consistently apply a\n // \"projection\" of these mapped values. For example: if we have ids\n // [1, 2] and applying mappings transforms it to [2, 2], if `1` gets\n // mapped to something else there's no way to no to map *only* the\n // first id back to make [1, 2]. Keeping the original value around\n // solves this.\n for (let ci = 0; ci < rule.conditions.length; ci++) {\n let cond = rule.conditions[ci];\n if (cond.type === 'id') {\n switch (cond.op) {\n case 'is':\n cond.value = mappings.get(cond.rawValue) || cond.rawValue;\n cond.unparsedValue = cond.value;\n break;\n case 'oneOf':\n cond.value = cond.rawValue.map(v => mappings.get(v) || v);\n cond.unparsedValue = [...cond.value];\n break;\n default:\n }\n }\n }\n\n for (let ai = 0; ai < rule.actions.length; ai++) {\n let action = rule.actions[ai];\n if (action.type === 'id') {\n if (action.op === 'set') {\n action.value = mappings.get(action.rawValue) || action.rawValue;\n }\n }\n }\n}\n\n// This finds all the rules that reference the `id`\nexport function iterateIds(rules, fieldName, func) {\n let counts = {};\n let i;\n\n ruleiter: for (i = 0; i < rules.length; i++) {\n let rule = rules[i];\n for (let ci = 0; ci < rule.conditions.length; ci++) {\n let cond = rule.conditions[ci];\n if (cond.type === 'id' && cond.field === fieldName) {\n switch (cond.op) {\n case 'is':\n if (func(rule, cond.value)) {\n continue ruleiter;\n }\n break;\n case 'oneOf':\n for (let vi = 0; vi < cond.value.length; vi++) {\n if (func(rule, cond.value[vi])) {\n continue ruleiter;\n }\n }\n break;\n default:\n }\n }\n }\n\n for (let ai = 0; ai < rule.actions.length; ai++) {\n let action = rule.actions[ai];\n if (action.type === 'id' && action.field === fieldName) {\n // Currently `set` is the only op, but if we add more this\n // will need to be extended\n if (action.op === 'set') {\n if (func(rule, action.value)) {\n break;\n }\n }\n }\n }\n }\n}\n","import title from './title';\nimport * as db from '../db';\nimport {\n mergeObjects,\n hasFieldsChanged,\n toRelaxedNumber,\n amountToInteger,\n integerToAmount\n} from '../../shared/util';\nimport {\n makeChild as makeChildTransaction,\n recalculateSplit\n} from '../../shared/transactions';\nimport * as monthUtils from '../../shared/months';\nimport { transactionModel } from '../api-models';\nimport { getConfig } from '../config';\nimport { batchMessages } from '../sync';\nimport { runMutator } from '../mutators';\nimport { getStartingBalancePayee } from './payees';\nimport * as transfer from './transfer';\nimport { TransactionError } from '../errors';\nimport { runRules } from './transaction-rules';\nimport { batchUpdateTransactions } from './transactions';\n\nconst dateFns = require('date-fns');\nconst { post } = require('../post');\nconst levenshtein = require('damerau-levenshtein');\nconst uuid = require('../../platform/uuid');\n\n// Plaid article about API options:\n// https://support.plaid.com/customer/en/portal/articles/2612155-transactions-returned-per-request\n\nfunction BankSyncError(type, code) {\n return { type: 'BankSyncError', category: type, code };\n}\n\nfunction makeSplitTransaction(trans, subtransactions) {\n // We need to calculate the final state of split transactions\n let { subtransactions: sub, ...parent } = recalculateSplit({\n ...trans,\n is_parent: true,\n subtransactions: subtransactions.map((transaction, idx) =>\n makeChildTransaction(trans, {\n ...transaction,\n sort_order: 0 - idx\n })\n )\n });\n return [parent, ...sub];\n}\n\nfunction getAccountBalance(account) {\n // Debt account types need their balance reversed\n switch (account.type) {\n case 'credit':\n case 'loan':\n return -account.balances.current;\n default:\n return account.balances.current;\n }\n}\n\nasync function updateAccountBalance(id, balance) {\n await db.runQuery('UPDATE accounts SET balance_current = ? WHERE id = ?', [\n amountToInteger(balance),\n id\n ]);\n}\n\nexport async function getAccounts(userId, userKey, id) {\n let res = await post(getConfig().PLAID_SERVER + '/accounts', {\n userId,\n key: userKey,\n item_id: id\n });\n\n let { accounts } = res;\n\n accounts.forEach(acct => {\n acct.balances.current = getAccountBalance(acct);\n });\n\n return accounts;\n}\n\nexport function fromPlaid(trans) {\n return {\n imported_id: trans.transaction_id,\n payee_name: trans.name,\n imported_payee: trans.name,\n amount: -amountToInteger(trans.amount),\n date: trans.date\n };\n}\n\nasync function downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n since,\n count\n) {\n let allTransactions = [];\n let accountBalance = null;\n let pageSize = 100;\n let offset = 0;\n let numDownloaded = 0;\n\n while (1) {\n const endDate = monthUtils.currentDay();\n\n const res = await post(getConfig().PLAID_SERVER + '/transactions', {\n userId: userId,\n key: userKey,\n item_id: '' + bankId,\n account_id: acctId,\n start_date: since,\n end_date: endDate,\n count: pageSize,\n offset\n });\n\n if (res.error_code) {\n throw BankSyncError(res.error_type, res.error_code);\n }\n\n if (res.transactions.length === 0) {\n break;\n }\n\n numDownloaded += res.transactions.length;\n\n // Remove pending transactions for now - we will handle them in\n // the future.\n allTransactions = allTransactions.concat(\n res.transactions.filter(t => !t.pending)\n );\n accountBalance = getAccountBalance(res.accounts[0]);\n\n if (\n numDownloaded === res.total_transactions ||\n (count != null && allTransactions.length >= count)\n ) {\n break;\n }\n\n offset += pageSize;\n }\n\n allTransactions =\n count != null ? allTransactions.slice(0, count) : allTransactions;\n\n return {\n transactions: allTransactions.map(fromPlaid),\n accountBalance\n };\n}\n\nasync function resolvePayee(trans, payeeName, payeesToCreate) {\n if (trans.payee == null && payeeName) {\n // First check our registry of new payees (to avoid a db access)\n // then check the db for existing payees\n let payee = payeesToCreate.get(payeeName.toLowerCase());\n payee = payee || (await db.getPayeeByName(payeeName));\n\n if (payee != null) {\n return payee.id;\n } else {\n // Otherwise we're going to create a new one\n let newPayee = { id: uuid.v4Sync(), name: payeeName };\n payeesToCreate.set(payeeName.toLowerCase(), newPayee);\n return newPayee.id;\n }\n }\n\n return trans.payee;\n}\n\nasync function normalizeTransactions(\n transactions,\n acctId,\n { rawPayeeName } = {}\n) {\n let payeesToCreate = new Map();\n\n let normalized = [];\n for (let trans of transactions) {\n // Validate the date because we do some stuff with it. The db\n // layer does better validation, but this will give nicer errors\n if (trans.date == null) {\n throw new Error('`date` is required when adding a transaction');\n }\n\n // Strip off the irregular properties\n let { payee_name, subtransactions, ...rest } = trans;\n trans = rest;\n\n if (payee_name) {\n let trimmed = payee_name.trim();\n if (trimmed === '') {\n payee_name = null;\n } else {\n payee_name = rawPayeeName ? trimmed : title(trimmed);\n }\n }\n\n trans.imported_payee = trans.imported_payee || payee_name;\n if (trans.imported_payee) {\n trans.imported_payee = trans.imported_payee.trim();\n }\n\n // It's important to resolve both the account and payee early so\n // when rules are run, they have the right data. Resolving payees\n // also simplifies the payee creation process\n trans.account = acctId;\n trans.payee = await resolvePayee(trans, payee_name, payeesToCreate);\n\n normalized.push({\n payee_name,\n subtransactions: subtransactions\n ? subtransactions.map(t => ({ ...t, account: acctId }))\n : null,\n trans\n });\n }\n\n return { normalized, payeesToCreate };\n}\n\nasync function createNewPayees(payeesToCreate, addsAndUpdates) {\n let usedPayeeIds = new Set(addsAndUpdates.map(t => t.payee));\n\n await batchMessages(async () => {\n for (let payee of payeesToCreate.values()) {\n // Only create the payee if it ended up being used\n if (usedPayeeIds.has(payee.id)) {\n await db.insertPayee(payee);\n }\n }\n });\n}\n\nexport async function reconcileTransactions(acctId, transactions) {\n const hasMatched = new Set();\n const updated = [];\n const added = [];\n\n let { normalized, payeesToCreate } = await normalizeTransactions(\n transactions,\n acctId\n );\n\n // The first pass runs the rules, and preps data for fuzzy matching\n let transactionsStep1 = [];\n for (let { payee_name, trans, subtransactions } of normalized) {\n // Run the rules\n trans = runRules(trans);\n\n let match = null;\n let fuzzyDataset = null;\n\n // First, match with an existing transaction's imported_id. This\n // is the highest fidelity match and should always be attempted\n // first.\n if (trans.imported_id) {\n match = await db.first(\n 'SELECT * FROM v_transactions WHERE imported_id = ? AND account = ?',\n [trans.imported_id, acctId]\n );\n\n // TODO: Pending transactions\n\n if (match) {\n hasMatched.add(match.id);\n }\n }\n\n // If it didn't match, query data needed for fuzzy matching\n if (!match) {\n // Look 1 day ahead and 4 days back when fuzzy matching. This\n // needs to select all fields that need to be read from the\n // matched transaction. See the final pass below for the needed\n // fields.\n fuzzyDataset = await db.all(\n `SELECT id, date, imported_id, payee, category, notes FROM v_transactions\n WHERE date >= ? AND date <= ? AND amount = ? AND account = ? AND is_child = 0`,\n [\n db.toDateRepr(monthUtils.subDays(trans.date, 4)),\n db.toDateRepr(monthUtils.addDays(trans.date, 1)),\n trans.amount || 0,\n acctId\n ]\n );\n }\n\n transactionsStep1.push({\n payee_name,\n trans,\n subtransactions,\n match,\n fuzzyDataset\n });\n }\n\n // Next, do the fuzzy matching. This first pass matches based on the\n // payee id. We do this in multiple passes so that higher fidelity\n // matching always happens first, i.e. a transaction should match\n // match with low fidelity if a later transaction is going to match\n // the same one with high fidelity.\n let transactionsStep2 = transactionsStep1.map(data => {\n if (!data.match && data.fuzzyDataset) {\n // Try to find one where the payees match.\n let match = data.fuzzyDataset.find(\n row => !hasMatched.has(row.id) && data.trans.payee === row.payee\n );\n\n if (match) {\n hasMatched.add(match.id);\n return { ...data, match };\n }\n }\n return data;\n });\n\n // The final fuzzy matching pass. This is the lowest fidelity\n // matching: it just find the first transaction that hasn't been\n // matched yet. Remember the the dataset only contains transactions\n // around the same date with the same amount.\n let transactionsStep3 = transactionsStep2.map(data => {\n if (!data.match && data.fuzzyDataset) {\n let match = data.fuzzyDataset.find(row => !hasMatched.has(row.id));\n if (match) {\n hasMatched.add(match.id);\n return { ...data, match };\n }\n }\n return data;\n });\n\n // Finally, generate & commit the changes\n for (let { payee_name, trans, subtransactions, match } of transactionsStep3) {\n if (match) {\n // TODO: change the above sql query to use aql\n let existing = {\n ...match,\n cleared: match.cleared === 1,\n date: db.fromDateRepr(match.date)\n };\n\n // Update the transaction\n const updates = {\n date: trans.date,\n imported_id: trans.imported_id || null,\n payee: existing.payee || trans.payee || null,\n category: existing.category || trans.category || null,\n imported_payee: trans.imported_payee || null,\n notes: existing.notes || trans.notes || null,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n if (hasFieldsChanged(existing, updates, Object.keys(updates))) {\n updated.push({ id: existing.id, ...updates });\n }\n } else {\n // Insert a new transaction\n let finalTransaction = {\n ...trans,\n id: uuid.v4Sync(),\n category: trans.category || null,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n if (subtransactions && subtransactions.length > 0) {\n added.push(...makeSplitTransaction(finalTransaction, subtransactions));\n } else {\n added.push(finalTransaction);\n }\n }\n }\n\n await createNewPayees(payeesToCreate, [...added, ...updated]);\n await batchUpdateTransactions({ added, updated });\n\n return {\n added: added.map(trans => trans.id),\n updated: updated.map(trans => trans.id)\n };\n}\n\n// This is similar to `reconcileTransactions` except much simpler: it\n// does not try to match any transactions. It just adds them\nexport async function addTransactions(\n acctId,\n transactions,\n { runTransfers = true } = {}\n) {\n const added = [];\n\n let { normalized, payeesToCreate } = await normalizeTransactions(\n transactions,\n acctId,\n { rawPayeeName: true }\n );\n\n for (let { payee_name, trans, subtransactions } of normalized) {\n // Run the rules\n trans = runRules(trans);\n\n let finalTransaction = {\n id: uuid.v4Sync(),\n ...trans,\n account: acctId,\n cleared: trans.cleared != null ? trans.cleared : true\n };\n\n // Add split transactions if they are given\n if (subtransactions && subtransactions.length > 0) {\n added.push(...makeSplitTransaction(finalTransaction, subtransactions));\n } else {\n added.push(finalTransaction);\n }\n }\n\n await createNewPayees(payeesToCreate, added);\n\n let newTransactions;\n if (runTransfers) {\n let res = await batchUpdateTransactions({ added });\n newTransactions = res.added.map(t => t.id);\n } else {\n await batchMessages(async () => {\n newTransactions = await Promise.all(\n added.map(async trans => db.insertTransaction(trans))\n );\n });\n }\n return newTransactions;\n}\n\nexport async function syncAccount(userId, userKey, id, acctId, bankId) {\n // TODO: Handle the case where transactions exist in the future\n // (that will make start date after end date)\n const latestTransaction = await db.first(\n 'SELECT * FROM v_transactions WHERE account = ? ORDER BY date DESC LIMIT 1',\n [id]\n );\n\n if (latestTransaction) {\n const startingTransaction = await db.first(\n 'SELECT date FROM v_transactions WHERE account = ? ORDER BY date ASC LIMIT 1',\n [id]\n );\n const startingDate = db.fromDateRepr(startingTransaction.date);\n // assert(startingTransaction)\n\n // Get all transactions since the latest transaction, plus any 5\n // days before the latest transaction. This gives us a chance to\n // resolve any transactions that were entered manually.\n //\n // TODO: What this really should do is query the last imported_id\n // and since then\n let date = monthUtils.subDays(db.fromDateRepr(latestTransaction.date), 31);\n\n // Never download transactions before the starting date. This was\n // when the account was added to the system.\n if (date < startingDate) {\n date = startingDate;\n }\n\n let { transactions, accountBalance } = await downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n date\n );\n if (transactions.length === 0) {\n return { added: [], updated: [] };\n }\n\n transactions = transactions.map(trans => ({ ...trans, account: id }));\n\n return runMutator(async () => {\n const result = await reconcileTransactions(id, transactions);\n await updateAccountBalance(id, accountBalance);\n return result;\n });\n } else {\n const acctRow = await db.select('accounts', id);\n\n // Otherwise, download transaction for the last few days if it's an\n // on-budget account, or for the past 30 days if off-budget\n const startingDay = monthUtils.subDays(\n monthUtils.currentDay(),\n acctRow.offbudget === 0 ? 1 : 30\n );\n\n const { transactions } = await downloadTransactions(\n userId,\n userKey,\n acctId,\n bankId,\n dateFns.format(dateFns.parseISO(startingDay), 'yyyy-MM-dd')\n );\n\n // We need to add a transaction that represents the starting\n // balance for everything to balance out. In order to get balance\n // before the first imported transaction, we need to get the\n // current balance from the accounts table and subtract all the\n // imported transactions.\n let currentBalance = acctRow.balance_current;\n\n const previousBalance = transactions.reduce((total, trans) => {\n return total - trans.amount;\n }, currentBalance);\n\n const oldestDate =\n transactions.length > 0\n ? transactions[transactions.length - 1].date\n : monthUtils.currentDay();\n\n let payee = await getStartingBalancePayee();\n\n return runMutator(async () => {\n let initialId = await db.insertTransaction({\n account: id,\n amount: previousBalance,\n category: acctRow.offbudget === 0 ? payee.category : null,\n payee: payee.id,\n date: oldestDate,\n cleared: true,\n starting_balance_flag: true\n });\n\n let result = await reconcileTransactions(id, transactions);\n return {\n ...result,\n added: [initialId, ...result.added]\n };\n });\n }\n}\n","// Utilities\nconst lowerCase = require('./lower-case');\nconst specials = require('./specials');\n\nlet character =\n '[0-9\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58-\\u0C59\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0-\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]';\nlet regex = new RegExp(\n `(?:(?:(\\\\s?(?:^|[.\\\\(\\\\)!?;:\"-])\\\\s*)(${character}))|(${character}))(${character}*[’']*${character}*)`,\n 'g'\n);\n\nlet convertToRegExp = specials =>\n specials.map(s => [new RegExp(`\\\\b${s}\\\\b`, 'gi'), s]);\n\nfunction parseMatch(match) {\n const firstCharacter = match[0];\n\n // test first character\n if (/\\s/.test(firstCharacter)) {\n // if whitespace - trim and return\n return match.substr(1);\n }\n if (/[()]/.test(firstCharacter)) {\n // if parens - this shouldn't be replaced\n return null;\n }\n\n return match;\n}\n\nmodule.exports = (str, options = {}) => {\n str = str\n .toLowerCase()\n .replace(regex, (m, lead = '', forced, lower, rest) => {\n const parsedMatch = parseMatch(m);\n if (!parsedMatch) {\n return m;\n }\n if (!forced) {\n const fullLower = lower + rest;\n\n if (lowerCase.has(fullLower)) {\n return parsedMatch;\n }\n }\n\n return lead + (lower || forced).toUpperCase() + rest;\n });\n\n const customSpecials = options.special || [];\n const replace = [...specials, ...customSpecials];\n const replaceRegExp = convertToRegExp(replace);\n\n replaceRegExp.forEach(([pattern, s]) => {\n str = str.replace(pattern, s);\n });\n\n return str;\n};\n","const conjunctions = [\n 'for',\n 'and',\n 'nor',\n 'but',\n 'or',\n 'yet',\n 'so'\n]\n\nconst articles = [\n 'a',\n 'an',\n 'the'\n]\n\nconst prepositions = [\n 'aboard',\n 'about',\n 'above',\n 'across',\n 'after',\n 'against',\n 'along',\n 'amid',\n 'among',\n 'anti',\n 'around',\n 'as',\n 'at',\n 'before',\n 'behind',\n 'below',\n 'beneath',\n 'beside',\n 'besides',\n 'between',\n 'beyond',\n 'but',\n 'by',\n 'concerning',\n 'considering',\n 'despite',\n 'down',\n 'during',\n 'except',\n 'excepting',\n 'excluding',\n 'following',\n 'for',\n 'from',\n 'in',\n 'inside',\n 'into',\n 'like',\n 'minus',\n 'near',\n 'of',\n 'off',\n 'on',\n 'onto',\n 'opposite',\n 'over',\n 'past',\n 'per',\n 'plus',\n 'regarding',\n 'round',\n 'save',\n 'since',\n 'than',\n 'through',\n 'to',\n 'toward',\n 'towards',\n 'under',\n 'underneath',\n 'unlike',\n 'until',\n 'up',\n 'upon',\n 'versus',\n 'via',\n 'with',\n 'within',\n 'without'\n]\n\nmodule.exports = new Set([\n ...conjunctions,\n ...articles,\n ...prepositions\n])\n","const intended = [\n 'CLI',\n 'API',\n 'HTTP',\n 'HTTPS',\n 'JSX',\n 'DNS',\n 'URL',\n 'CI',\n 'CDN',\n 'GitHub',\n 'CSS',\n 'JS',\n 'JavaScript',\n 'TypeScript',\n 'HTML',\n 'WordPress',\n 'JavaScript',\n 'Next.js',\n 'Node.js'\n];\n\nmodule.exports = intended;\n","import * as db from '../db';\nimport {\n Condition,\n Action,\n Rule,\n RuleIndexer,\n rankRules,\n migrateIds,\n iterateIds\n} from './rules';\nimport { getMappings } from '../db/mappings';\nimport { addDays, subDays, parseDate, dayFromDate } from '../../shared/months';\nimport { addSyncListener } from '../sync/index';\nimport { RuleError } from '../errors';\nimport {\n FIELD_TYPES,\n sortNumbers,\n getApproxNumberThreshold\n} from '../../shared/rules';\nimport q from '../../shared/query';\nimport { requiredFields, toDateRepr } from '../models';\nimport { currentDay } from '../../shared/months';\nimport { partitionByField, fastSetMerge } from '../../shared/util';\nimport { setSyncingMode, batchMessages } from '../sync';\nimport { schemaConfig } from '../aql/schema';\nconst uuid = require('../../platform/uuid');\n\n// TODO: Detect if it looks like the user is creating a rename rule\n// and prompt to create it in the pre phase instead\n// * We could also make the \"create rule\" button a dropdown that\n// provides different \"templates\" like \"create renaming rule\"\n\nexport { iterateIds } from './rules';\n\nlet allRules;\nlet unlistenSync;\nlet firstcharIndexer;\nlet payeeIndexer;\n\nexport function resetState() {\n allRules = new Map();\n firstcharIndexer = new RuleIndexer({\n field: 'imported_payee',\n method: 'firstchar'\n });\n payeeIndexer = new RuleIndexer({ field: 'payee' });\n}\n\n// Database functions\n\nfunction invert(obj) {\n return Object.fromEntries(\n Object.entries(obj).map(entry => {\n return [entry[1], entry[0]];\n })\n );\n}\n\nlet internalFields = schemaConfig.views.transactions.fields;\nlet publicFields = invert(schemaConfig.views.transactions.fields);\n\nfunction fromInternalField(obj) {\n return {\n ...obj,\n field: publicFields[obj.field] || obj.field\n };\n}\n\nfunction toInternalField(obj) {\n return {\n ...obj,\n field: internalFields[obj.field] || obj.field\n };\n}\n\nexport const ruleModel = {\n validate(rule, { update } = {}) {\n requiredFields('rules', rule, ['conditions', 'actions'], update);\n\n if (!update || 'stage' in rule) {\n if (\n rule.stage !== 'pre' &&\n rule.stage !== 'post' &&\n rule.stage !== null\n ) {\n throw new Error('Invalid rule stage: ' + rule.stage);\n }\n }\n\n return rule;\n },\n\n toJS(row) {\n function parseArray(str) {\n let value;\n try {\n value = typeof str === 'string' ? JSON.parse(str) : str;\n } catch (e) {\n throw new RuleError('internal', 'Cannot parse rule json');\n }\n\n if (!Array.isArray(value)) {\n throw new RuleError('internal', 'Rule json must be an array');\n }\n return value;\n }\n\n let rule = { ...row };\n rule.conditions = rule.conditions\n ? parseArray(rule.conditions).map(cond => fromInternalField(cond))\n : [];\n rule.actions = rule.actions\n ? parseArray(rule.actions).map(action => fromInternalField(action))\n : [];\n return rule;\n },\n\n fromJS(rule) {\n let row = { ...rule };\n if ('conditions' in row) {\n let conditions = row.conditions.map(cond => toInternalField(cond));\n row.conditions = JSON.stringify(conditions);\n }\n if ('actions' in row) {\n let actions = row.actions.map(action => toInternalField(action));\n row.actions = JSON.stringify(actions);\n }\n return row;\n }\n};\n\nexport function makeRule(data) {\n let rule;\n try {\n rule = new Rule({\n ...ruleModel.toJS(data),\n fieldTypes: FIELD_TYPES\n });\n } catch (e) {\n console.warn('Invalid rule', e);\n if (e instanceof RuleError) {\n return null;\n }\n throw e;\n }\n\n // This is needed because we map ids on the fly, and they might\n // not be persisted into the db. Mappings allow items to\n // transparently merge with other items\n migrateIds(rule, getMappings());\n\n return rule;\n}\n\nexport async function loadRules() {\n resetState();\n\n let rules = await db.all(`\n SELECT * FROM rules\n WHERE conditions IS NOT NULL AND actions IS NOT NULL AND tombstone = 0\n `);\n\n for (let i = 0; i < rules.length; i++) {\n let desc = rules[i];\n // These are old stages, can be removed before release\n if (desc.stage === 'cleanup' || desc.stage === 'modify') {\n desc.stage = 'pre';\n }\n\n let rule = makeRule(desc);\n if (rule) {\n allRules.set(rule.id, rule);\n firstcharIndexer.index(rule);\n payeeIndexer.index(rule);\n }\n }\n\n if (unlistenSync) {\n unlistenSync();\n }\n unlistenSync = addSyncListener(onApplySync);\n}\n\nexport function getRules() {\n // This can simply return the in-memory data\n return [...allRules.values()];\n}\n\nexport async function insertRule(rule) {\n rule = ruleModel.validate(rule);\n return db.insertWithUUID('rules', ruleModel.fromJS(rule));\n}\n\nexport async function updateRule(rule) {\n rule = ruleModel.validate(rule, { update: true });\n return db.update('rules', ruleModel.fromJS(rule));\n}\n\nexport async function deleteRule(rule) {\n let schedule = await db.first('SELECT id FROM schedules WHERE rule = ?', [\n rule.id\n ]);\n\n if (schedule) {\n return false;\n }\n\n return db.delete_('rules', rule.id);\n}\n\n// Sync projections\n\nfunction onApplySync(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table === 'rules') {\n items.forEach(newValue => {\n let oldRule = allRules.get(newValue.id);\n\n if (newValue.tombstone === 1) {\n // Deleted, need to remove it from in-memory\n let rule = allRules.get(newValue.id);\n if (rule) {\n allRules.delete(rule.getId());\n firstcharIndexer.remove(rule);\n payeeIndexer.remove(rule);\n }\n } else {\n // Inserted/updated\n let rule = makeRule(newValue);\n if (rule) {\n if (oldRule) {\n firstcharIndexer.remove(oldRule);\n payeeIndexer.remove(oldRule);\n }\n allRules.set(newValue.id, rule);\n firstcharIndexer.index(rule);\n payeeIndexer.index(rule);\n }\n }\n });\n }\n });\n\n // If any of the mapping tables have changed, we need to refresh the\n // ids\n let tables = [...newValues.keys()];\n if (tables.find(table => table.indexOf('mapping') !== -1)) {\n getRules().forEach(rule => {\n migrateIds(rule, getMappings());\n });\n }\n}\n\n// Runner\nexport function runRules(trans) {\n let finalTrans = { ...trans };\n let allChanges = {};\n\n let rules = rankRules(\n fastSetMerge(\n firstcharIndexer.getApplicableRules(trans),\n payeeIndexer.getApplicableRules(trans)\n )\n );\n\n for (let i = 0; i < rules.length; i++) {\n finalTrans = rules[i].apply(finalTrans);\n }\n\n return finalTrans;\n}\n\n// This does the inverse: finds all the transactions matching a rule\nexport function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) {\n let errors = [];\n\n conditions = conditions\n .map(cond => {\n if (cond instanceof Condition) {\n return cond;\n }\n\n try {\n return new Condition(\n cond.op,\n cond.field,\n cond.value,\n cond.options,\n FIELD_TYPES\n );\n } catch (e) {\n errors.push(e.type || 'internal');\n console.log('conditionsToAQL: invalid condition: ' + e.message);\n return null;\n }\n })\n .filter(Boolean);\n\n // rule -> actualql\n let filters = conditions.map(cond => {\n let { type, field, op, value, options } = cond;\n\n let getValue = value => {\n if (type === 'number') {\n return value.value;\n }\n return value;\n };\n\n let apply = (field, op, value) => {\n if (type === 'number') {\n if (options) {\n if (options.outflow) {\n return {\n $and: [\n { amount: { $lt: 0 } },\n { [field]: { $transform: '$neg', [op]: value } }\n ]\n };\n } else if (options.inflow) {\n return {\n $and: [{ amount: { $gt: 0 } }, { [field]: { [op]: value } }]\n };\n }\n }\n\n return { amount: { [op]: value } };\n } else if (type === 'string') {\n return { [field]: { $transform: '$lower', [op]: value } };\n } else if (type === 'date') {\n return { [field]: { [op]: value.date } };\n }\n return { [field]: { [op]: value } };\n };\n\n switch (op) {\n case 'isapprox':\n case 'is':\n if (type === 'date') {\n if (value.type === 'recur') {\n let dates = value.schedule\n .occurrences({ take: recurDateBounds })\n .toArray()\n .map(d => dayFromDate(d.date));\n\n let compare = d => ({ $eq: d });\n\n return {\n $or: dates.map(d => {\n if (op === 'isapprox') {\n return {\n $and: [\n { date: { $gte: subDays(d, 2) } },\n { date: { $lte: addDays(d, 2) } }\n ]\n };\n }\n return { date: d };\n })\n };\n } else {\n let { date } = value;\n\n if (op === 'isapprox') {\n let fullDate = parseDate(value.date);\n let high = addDays(fullDate, 2);\n let low = subDays(fullDate, 2);\n\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n } else {\n switch (value.type) {\n case 'date':\n return { date: value.date };\n case 'month': {\n let low = value.date + '-00';\n let high = value.date + '-99';\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n }\n case 'year': {\n let low = value.date + '-00-00';\n let high = value.date + '-99-99';\n return {\n $and: [{ date: { $gte: low } }, { date: { $lte: high } }]\n };\n }\n default:\n }\n }\n }\n } else if (type === 'number') {\n let number = value.value;\n if (op === 'isapprox') {\n let threshold = getApproxNumberThreshold(number);\n\n return {\n $and: [\n apply(field, '$gte', number - threshold),\n apply(field, '$lte', number + threshold)\n ]\n };\n }\n return apply(field, '$eq', number);\n }\n\n return apply(field, '$eq', value);\n\n case 'isbetween':\n // This operator is only applicable to the specific `between`\n // number type so we don't use `apply`\n let [low, high] = sortNumbers(value.num1, value.num2);\n return {\n [field]: [{ $gte: low }, { $lte: high }]\n };\n case 'contains':\n // Running contains with id will automatically reach into\n // the `name` of the referenced table and do a string match\n return apply(\n type === 'id' ? field + '.name' : field,\n '$like',\n '%' + value + '%'\n );\n case 'oneOf':\n let values = value;\n if (values.length === 0) {\n // This forces it to match nothing\n return { id: null };\n }\n return { $or: values.map(v => apply(field, '$eq', v)) };\n case 'gt':\n return apply(field, '$gt', getValue(value));\n case 'gte':\n return apply(field, '$gte', getValue(value));\n case 'lt':\n return apply(field, '$lt', getValue(value));\n case 'lte':\n return apply(field, '$lte', getValue(value));\n case 'true':\n return apply(field, '$eq', true);\n case 'false':\n return apply(field, '$eq', false);\n default:\n throw new Error('Unhandled operator: ' + op);\n }\n });\n\n return { filters, errors };\n}\n\nexport function applyActions(transactionIds, actions, handlers) {\n let parsedActions = actions\n .map(action => {\n if (action instanceof Action) {\n return action;\n }\n\n try {\n return new Action(\n action.op,\n action.field,\n action.value,\n action.options,\n FIELD_TYPES\n );\n } catch (e) {\n console.log('Action error', e);\n return null;\n }\n })\n .filter(Boolean);\n\n if (parsedActions.length !== actions.length) {\n // An error happened while parsing\n return null;\n }\n\n let updated = transactionIds.map(id => {\n let update = { id };\n for (let action of parsedActions) {\n action.exec(update);\n }\n return update;\n });\n\n return handlers['transactions-batch-update']({ updated });\n}\n\nexport function getRulesForPayee(payeeId) {\n let rules = new Set();\n iterateIds(getRules(), 'payee', (rule, id) => {\n if (id === payeeId) {\n rules.add(rule);\n }\n });\n\n return rankRules([...rules]);\n}\n\nfunction* getIsSetterRules(\n stage,\n condField,\n actionField,\n { condValue, actionValue }\n) {\n let rules = getRules();\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n\n if (\n rule.stage === stage &&\n rule.actions.length === 1 &&\n rule.actions[0].op === 'set' &&\n rule.actions[0].field === actionField &&\n (actionValue === undefined || rule.actions[0].value === actionValue) &&\n rule.conditions.length === 1 &&\n rule.conditions[0].op === 'is' &&\n rule.conditions[0].field === condField &&\n (condValue === undefined || rule.conditions[0].value === condValue)\n ) {\n yield rule.serialize();\n }\n }\n\n return null;\n}\n\nfunction* getOneOfSetterRules(\n stage,\n condField,\n actionField,\n { condValue, actionValue }\n) {\n let rules = getRules();\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n\n if (\n rule.stage === stage &&\n rule.actions.length === 1 &&\n rule.actions[0].op === 'set' &&\n rule.actions[0].field === actionField &&\n (actionValue == null || rule.actions[0].value === actionValue) &&\n rule.conditions.length === 1 &&\n rule.conditions[0].op === 'oneOf' &&\n rule.conditions[0].field === condField &&\n (condValue == null || rule.conditions[0].value.indexOf(condValue) !== -1)\n ) {\n yield rule.serialize();\n }\n }\n\n return null;\n}\n\nexport async function updatePayeeRenameRule(fromNames, to) {\n let renameRule = getOneOfSetterRules('pre', 'imported_payee', 'payee', {\n actionValue: to\n }).next().value;\n\n // Note that we don't check for existing rules that set this\n // `imported_payee` to something else. It's important to do\n // that for categories because categories will be changes frequently\n // for the same payee, but renames won't be changed much. It's a use\n // case we could improve in the future, but this is fine for now.\n\n if (renameRule) {\n let condition = renameRule.conditions[0];\n let newValue = [\n ...fastSetMerge(\n new Set(condition.value),\n new Set(fromNames.filter(name => name !== ''))\n )\n ];\n let rule = {\n ...renameRule,\n conditions: [{ ...condition, value: newValue }]\n };\n await updateRule(rule);\n return renameRule.id;\n } else {\n let rule = new Rule({\n stage: 'pre',\n conditions: [{ op: 'oneOf', field: 'imported_payee', value: fromNames }],\n actions: [{ op: 'set', field: 'payee', value: to }],\n fieldTypes: FIELD_TYPES\n });\n return insertRule(rule.serialize());\n }\n}\n\nexport function getProbableCategory(transactions) {\n let scores = new Map();\n\n transactions.forEach(trans => {\n if (trans.category) {\n scores.set(trans.category, (scores.get(trans.category) || 0) + 1);\n }\n });\n\n let winner = transactions.reduce((winner, trans) => {\n let score = scores.get(trans.category);\n if (!winner || score > winner.score) {\n return { score, category: trans.category };\n }\n return winner;\n }, null);\n\n return winner.score >= 3 ? winner.category : null;\n}\n\nexport async function updateCategoryRules(transactions) {\n if (transactions.length === 0) {\n return;\n }\n\n let payeeIds = new Set(transactions.map(trans => trans.payee));\n let transIds = new Set(transactions.map(trans => trans.id));\n\n // It's going to be quickest to get the oldest date and then query\n // all transactions since then so we can work in memory\n let oldestDate = null;\n for (let i = 0; i < transactions.length; i++) {\n if (oldestDate === null || transactions[i].date < oldestDate) {\n oldestDate = transactions[i].date;\n }\n }\n\n // We look 6 months behind to include any other transaction. This\n // makes it so we, 1. don't have to load in all transactions ever\n // and 2. \"forget\" really old transactions which might be nice and\n // 3. don't have to individually run a query for each payee\n oldestDate = subDays(oldestDate, 180);\n\n // Also look 180 days in the future to get any future transactions\n // (this might change when we think about scheduled transactions)\n let register = await db.all(\n `SELECT t.* FROM v_transactions t\n LEFT JOIN accounts a ON a.id = t.account\n WHERE date >= ? AND date <= ? AND is_parent = 0 AND a.closed = 0`,\n [toDateRepr(oldestDate), toDateRepr(addDays(currentDay(), 180))]\n );\n\n let allTransactions = partitionByField(register, 'payee');\n let categoriesToSet = new Map();\n\n for (let payeeId of payeeIds) {\n // Don't do anything if payee is null\n if (payeeId) {\n let latestTrans = (allTransactions.get(payeeId) || []).slice(0, 5);\n\n // Check if one of the latest transactions was one that was\n // updated. We only want to update anything if so.\n if (latestTrans.find(trans => transIds.has(trans.id))) {\n let category = getProbableCategory(latestTrans);\n if (category) {\n categoriesToSet.set(payeeId, category);\n }\n }\n }\n }\n\n await batchMessages(async () => {\n for (let [payeeId, category] of categoriesToSet.entries()) {\n let ruleSetters = [\n ...getIsSetterRules(null, 'payee', 'category', {\n condValue: payeeId\n })\n ];\n\n if (ruleSetters.length > 0) {\n // If there are existing rules, change all of them to the new\n // category (if they aren't already using it). We set all of\n // them because it's possible that multiple rules exist\n // because 2 clients made them independently. Not really a big\n // deal, but to make sure our update gets applied set it to\n // all of them\n for (let rule of ruleSetters) {\n let action = rule.actions[0];\n if (action.value !== category) {\n await updateRule({\n ...rule,\n actions: [{ ...action, value: category }]\n });\n }\n }\n } else {\n // No existing rules, so create one\n let newRule = new Rule({\n stage: null,\n conditions: [{ op: 'is', field: 'payee', value: payeeId }],\n actions: [{ op: 'set', field: 'category', value: category }],\n fieldTypes: FIELD_TYPES\n });\n await insertRule(newRule.serialize());\n }\n }\n });\n}\n\n// This can be removed in the future\nexport async function migrateOldRules() {\n let allPayees = await db.all(\n `SELECT p.*, c.id as category FROM payees p\n LEFT JOIN category_mapping cm ON cm.id = p.category\n LEFT JOIN categories c ON (c.id = cm.transferId AND c.tombstone = 0)\n WHERE p.tombstone = 0 AND transfer_acct IS NULL`\n );\n let allRules = await db.all(\n `SELECT pr.*, pm.targetId as payee_id FROM payee_rules pr\n LEFT JOIN payee_mapping pm ON pm.id = pr.payee_id\n WHERE pr.tombstone = 0`\n );\n\n let payeesById = new Map();\n for (let i = 0; i < allPayees.length; i++) {\n payeesById.set(allPayees[i].id, allPayees[i]);\n }\n\n let rulesByPayeeId = new Map();\n for (let i = 0; i < allRules.length; i++) {\n let item = allRules[i];\n let rules = rulesByPayeeId.get(item.payee_id) || [];\n rules.push(item);\n rulesByPayeeId.set(item.payee_id, rules);\n }\n\n let rules = [];\n\n // Convert payee name rules\n for (let [payeeId, payeeRules] of rulesByPayeeId.entries()) {\n let equals = payeeRules.filter(r => {\n let payee = payeesById.get(r.payee_id);\n\n return (\n (r.type === 'equals' || r.type == null) &&\n (!payee || r.value.toLowerCase() !== payee.name.toLowerCase())\n );\n });\n let contains = payeeRules.filter(r => r.type === 'contains');\n let actions = [{ op: 'set', field: 'payee', value: payeeId }];\n\n if (equals.length > 0) {\n rules.push({\n stage: null,\n conditions: [\n {\n op: 'oneOf',\n field: 'imported_payee',\n value: equals.map(payeeRule => payeeRule.value)\n }\n ],\n actions\n });\n }\n\n if (contains.length > 0) {\n rules = rules.concat(\n contains.map(payeeRule => ({\n stage: null,\n conditions: [\n {\n op: 'contains',\n field: 'imported_payee',\n value: payeeRule.value\n }\n ],\n actions\n }))\n );\n }\n }\n\n // Convert category rules\n let catRules = allPayees\n .filter(p => p.category)\n .reduce((map, payee) => {\n let ids = map.get(payee.category) || new Set();\n ids.add(payee.id);\n map.set(payee.category, ids);\n return map;\n }, new Map());\n\n for (let [catId, payeeIds] of catRules) {\n rules.push({\n stage: null,\n conditions: [\n {\n op: 'oneOf',\n field: 'payee',\n value: [...payeeIds]\n }\n ],\n actions: [\n {\n op: 'set',\n field: 'category',\n value: catId\n }\n ]\n });\n }\n\n // Very important: we never want to sync migration changes, but it\n // still has to run through the syncing layer to make sure\n // projections are correct. This is only OK because we require a\n // sync reset after this.\n let prevMode = setSyncingMode('disabled');\n await batchMessages(async () => {\n for (let rule of rules) {\n await insertRule({\n stage: rule.stage,\n conditions: rule.conditions,\n actions: rule.actions\n });\n }\n\n await db.runQuery('DELETE FROM payee_rules', []);\n });\n setSyncingMode(prevMode);\n}\n","import * as sheet from '../sheet';\nimport { batchMessages } from '../sync';\nimport * as db from '../db';\nimport { incrFetch, whereIn } from '../db/util';\nimport * as transfer from './transfer';\nimport * as rules from './transaction-rules';\nconst connection = require('../../platform/server/connection');\n\nasync function idsWithChildren(ids) {\n let whereIds = whereIn(ids, 'parent_id');\n let rows = await db.all(\n `SELECT id FROM v_transactions_internal WHERE ${whereIds}`\n );\n let set = new Set(ids);\n for (let row of rows) {\n set.add(row.id);\n }\n return [...set];\n}\n\nasync function getTransactionsByIds(ids) {\n // TODO: convert to whereIn\n //\n // or better yet, use ActualQL\n return incrFetch(\n (query, params) => db.selectWithSchema('transactions', query, params),\n ids,\n id => `id = '${id}'`,\n where => `SELECT * FROM v_transactions_internal WHERE ${where}`\n );\n}\n\nexport async function batchUpdateTransactions({\n added,\n deleted,\n updated,\n learnCategories = false,\n detectOrphanPayees = true\n}) {\n // Track the ids of each type of transaction change (see below for why)\n let addedIds = [];\n let updatedIds = updated ? updated.map(u => u.id) : [];\n let deletedIds = deleted ? await idsWithChildren(deleted.map(d => d.id)) : [];\n\n let oldPayees = new Set();\n let accounts = await db.all('SELECT * FROM accounts WHERE tombstone = 0');\n\n // We need to get all the payees of updated transactions _before_\n // making changes\n if (updated) {\n let descUpdatedIds = updated\n .filter(update => update.payee)\n .map(update => update.id);\n\n let transactions = await getTransactionsByIds(descUpdatedIds);\n\n for (let i = 0; i < transactions.length; i++) {\n oldPayees.add(transactions[i].payee);\n }\n }\n\n // Apply all the updates. We can batch this now! This is important\n // and makes bulk updates much faster\n await batchMessages(async () => {\n if (added) {\n addedIds = await Promise.all(\n added.map(async t => db.insertTransaction(t))\n );\n }\n\n if (deleted) {\n await Promise.all(\n // It's important to use `deletedIds` and not `deleted` here\n // because we've expanded it to include children above. The\n // inconsistency of the delete APIs is annoying and should\n // be fixed (it should only take an id)\n deletedIds.map(async id => {\n await db.deleteTransaction({ id });\n })\n );\n }\n\n if (updated) {\n await Promise.all(\n updated.map(async t => {\n if (t.account) {\n // Moving transactions off budget should always clear the\n // category\n let account = accounts.find(acct => acct.id === t.account);\n if (account.offbudget === 1) {\n t.category = null;\n }\n }\n\n await db.updateTransaction(t);\n })\n );\n }\n });\n\n // Get all of the full transactions that were changed. This is\n // needed to run any cascading logic that depends on the full\n // transaction. Things like transfers, analyzing rule updates, and\n // more\n let allAdded = await getTransactionsByIds(addedIds);\n let allUpdated = await getTransactionsByIds(updatedIds);\n let allDeleted = await getTransactionsByIds(deletedIds);\n\n // Post-processing phase: first do any updates to transfers.\n // Transfers update the transactions and we need to return updates\n // to the client so that can apply them. Note that added\n // transactions just return the full transaction.\n let resultAdded = allAdded;\n let resultUpdated;\n\n await batchMessages(async () => {\n await Promise.all(allAdded.map(t => transfer.onInsert(t)));\n\n // Return any updates from here\n resultUpdated = (await Promise.all(\n allUpdated.map(t => transfer.onUpdate(t))\n )).filter(Boolean);\n\n await Promise.all(allDeleted.map(t => transfer.onDelete(t)));\n });\n\n if (learnCategories) {\n // Analyze any updated categories and update rules to learn from\n // the user's activity\n let ids = new Set([\n ...(added ? added.filter(add => add.category).map(add => add.id) : []),\n ...(updated\n ? updated.filter(update => update.category).map(update => update.id)\n : [])\n ]);\n await rules.updateCategoryRules(\n allAdded.concat(allUpdated).filter(trans => ids.has(trans.id))\n );\n }\n\n if (detectOrphanPayees) {\n // Look for any orphaned payees and notify the user about merging\n // them\n\n if (updated) {\n let newPayeeIds = updated.map(u => u.payee).filter(Boolean);\n if (newPayeeIds.length > 0) {\n let allOrphaned = new Set(await db.getOrphanedPayees());\n\n let orphanedIds = [...oldPayees].filter(id => allOrphaned.has(id));\n\n if (orphanedIds.length > 0) {\n connection.send('orphaned-payees', {\n orphanedIds,\n updatedPayeeIds: newPayeeIds\n });\n }\n }\n }\n }\n\n return {\n added: resultAdded,\n updated: resultUpdated\n };\n}\n","import * as db from '../db';\n\nasync function getPayee(acct) {\n return db.first('SELECT * FROM payees WHERE transfer_acct = ?', [acct]);\n}\n\nasync function getTransferredAccount(transaction) {\n if (transaction.payee) {\n let { transfer_acct, id } = await db.first(\n 'SELECT id, transfer_acct FROM v_payees WHERE id = ?',\n [transaction.payee]\n );\n return transfer_acct;\n }\n return null;\n}\n\nasync function clearCategory(transaction, transferAcct) {\n const { offbudget: fromOffBudget } = await db.first(\n 'SELECT offbudget FROM accounts WHERE id = ?',\n [transaction.account]\n );\n const { offbudget: toOffBudget } = await db.first(\n 'SELECT offbudget FROM accounts WHERE id = ?',\n [transferAcct]\n );\n\n // We should clear the category to make sure it's not being\n // accounted for in the budget, unless it should be in the case of\n // transferring from an on-budget to off-budget account\n if (fromOffBudget === toOffBudget) {\n await db.updateTransaction({ id: transaction.id, category: null });\n return true;\n }\n return false;\n}\n\nexport async function addTransfer(transaction, transferredAccount) {\n let { id: fromPayee } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [transaction.account]\n );\n\n // We need to enforce certain constraints with child transaction transfers\n if (transaction.parent_id) {\n let row = await db.first(\n `\n SELECT p.id, p.transfer_acct FROM v_transactions t\n LEFT JOIN payees p ON p.id = t.payee\n WHERE t.id = ?\n `,\n [transaction.parent_id]\n );\n\n if (row.transfer_acct) {\n if (row.id !== transaction.payee) {\n // This child transaction is trying to use a transfer payee,\n // but the parent is already using a different transfer payee.\n // This is not allowed, so not only do we do nothing, we clear\n // the payee of the child transaction to make it clear\n await db.updateTransaction({ id: transaction.id, payee: null });\n return { id: transaction.id, payee: null };\n }\n\n // The parent has the same transfer payee, so it \"owns\" the\n // transfer logic\n return null;\n }\n }\n\n const id = await db.insertTransaction({\n account: transferredAccount,\n amount: -transaction.amount,\n payee: fromPayee,\n date: transaction.date,\n transfer_id: transaction.id,\n notes: transaction.notes || null,\n cleared: false\n });\n\n await db.updateTransaction({ id: transaction.id, transfer_id: id });\n const categoryCleared = await clearCategory(transaction, transferredAccount);\n\n return {\n id: transaction.id,\n transfer_id: id,\n ...(categoryCleared ? { category: null } : {})\n };\n}\n\nexport async function removeTransfer(transaction) {\n let transferTrans = await db.getTransaction(transaction.transfer_id);\n if (transferTrans.is_child) {\n // If it's a child transaction, we don't delete it because that\n // would invalidate the whole split transaction. Instead of turn\n // it into a normal transaction\n await db.updateTransaction({\n id: transaction.transfer_id,\n transfer_id: null,\n payee: null\n });\n } else {\n await db.deleteTransaction({ id: transaction.transfer_id });\n }\n await db.updateTransaction({ id: transaction.id, transfer_id: null });\n return { id: transaction.id, transfer_id: null };\n}\n\nexport async function updateTransfer(transaction, transferredAccount) {\n let payee = await getPayee(transaction.account);\n\n await db.updateTransaction({\n id: transaction.transfer_id,\n account: transferredAccount,\n // Make sure to update the payee on the other side in case the\n // user moved this transaction into another account\n payee: payee.id,\n date: transaction.date,\n notes: transaction.notes,\n amount: -transaction.amount\n });\n\n const categoryCleared = await clearCategory(transaction, transferredAccount);\n if (categoryCleared) {\n return { id: transaction.id, category: null };\n }\n}\n\nexport async function onInsert(transaction) {\n let transferredAccount = await getTransferredAccount(transaction);\n\n if (transferredAccount) {\n return addTransfer(transaction, transferredAccount);\n }\n}\n\nexport async function onDelete(transaction) {\n if (transaction.transfer_id) {\n await removeTransfer(transaction);\n }\n}\n\nexport async function onUpdate(transaction) {\n const transferredAccount = await getTransferredAccount(transaction);\n\n if (transferredAccount && !transaction.transfer_id) {\n return addTransfer(transaction, transferredAccount);\n }\n\n if (!transferredAccount && transaction.transfer_id) {\n return removeTransfer(transaction);\n }\n\n if (transferredAccount && transaction.transfer_id) {\n return updateTransfer(transaction, transferredAccount);\n }\n}\n","import * as models from './models';\n\nexport const transactionModel = {\n ...models.transactionModel,\n\n toExternal(transactions, idx, payees) {\n return transactions;\n // function convert(t, payee) {\n // return {\n // id: t.id,\n // account_id: t.acct,\n // amount: t.amount,\n // payee_id: payee ? payee.id : null,\n // payee: payee ? payee.name : null,\n // imported_payee: t.imported_description,\n // category_id: t.category,\n // date: t.date,\n // notes: t.notes,\n // imported_id: t.financial_id,\n // transfer_id: t.transferred_id,\n // cleared: t.cleared\n // };\n // }\n\n // let splits = getAllSplitTransactions(transactions, idx);\n // if (splits) {\n // let payee =\n // splits.parent.description && payees[splits.parent.description];\n\n // return {\n // ...convert(splits.parent, payee),\n // subtransactions: splits.children.map(child => convert(child, payee))\n // };\n // }\n\n // let transaction = transactions[idx];\n // let payee = transaction.description && payees[transaction.description];\n // return convert(transaction, payee);\n },\n\n fromExternal(transaction) {\n let result = {};\n if ('id' in transaction) {\n result.id = transaction.id;\n }\n if ('account_id' in transaction) {\n result.acct = transaction.account_id;\n }\n if ('amount' in transaction) {\n result.amount = transaction.amount;\n }\n if ('payee_id' in transaction) {\n result.description = transaction.payee_id;\n }\n if ('imported_payee' in transaction) {\n result.imported_description = transaction.imported_payee;\n }\n if ('category_id' in transaction) {\n result.category = transaction.category_id;\n }\n if ('date' in transaction) {\n result.date = transaction.date;\n }\n if ('notes' in transaction) {\n result.notes = transaction.notes;\n }\n if ('imported_id' in transaction) {\n result.financial_id = transaction.imported_id;\n }\n if ('transfer_id' in transaction) {\n result.transferred_id = transaction.transfer_id;\n }\n if ('cleared' in transaction) {\n result.cleared = transaction.cleared;\n }\n return result;\n }\n};\n\nexport const accountModel = {\n ...models.accountModel,\n\n toExternal(account) {\n return {\n id: account.id,\n name: account.name,\n type: account.type,\n offbudget: account.offbudget ? true : false,\n closed: account.closed ? true : false\n };\n },\n\n fromExternal(account) {\n let result = { ...account };\n if ('offbudget' in account) {\n result.offbudget = account.offbudget ? 1 : 0;\n }\n if ('closed' in account) {\n result.closed = account.closed ? 1 : 0;\n }\n return result;\n }\n};\n\nexport const categoryModel = {\n ...models.categoryModel,\n\n toExternal(category) {\n return {\n id: category.id,\n name: category.name,\n is_income: category.is_income ? true : false,\n group_id: category.cat_group\n };\n },\n\n fromExternal(category) {\n let { group_id: _, ...result } = category;\n if ('is_income' in category) {\n result.is_income = category.is_income ? 1 : 0;\n }\n if ('group_id' in category) {\n result.cat_group = category.group_id;\n }\n return result;\n }\n};\n\nexport const categoryGroupModel = {\n ...models.categoryGroupModel,\n\n toExternal(group) {\n return {\n id: group.id,\n name: group.name,\n is_income: group.is_income ? true : false,\n categories: group.categories.map(categoryModel.toExternal)\n };\n },\n\n fromExternal(group) {\n let result = { ...group };\n if ('is_income' in group) {\n result.is_income = group.is_income ? 1 : 0;\n }\n if ('categories' in group) {\n result.categories = group.categories.map(categoryModel.fromExternal);\n }\n return result;\n }\n};\n\nexport const payeeModel = {\n ...models.payeeModel,\n\n toExternal(payee) {\n return {\n id: payee.id,\n name: payee.name,\n category: payee.category,\n transfer_acct: payee.transfer_acct\n };\n },\n\n fromExternal(payee) {\n // No translation is needed\n return payee;\n }\n};\n\nexport const payeeRuleModel = {\n ...models.payeeRuleModel,\n\n toExternal(rule) {\n let { tombstone, ...result } = rule;\n return result;\n },\n\n fromExternal(rule) {\n return rule;\n }\n};\n","import { addTransactions } from './accounts/sync';\nimport {\n transactionModel,\n accountModel,\n categoryModel,\n categoryGroupModel,\n payeeModel,\n payeeRuleModel\n} from './api-models';\nimport {\n ungroupTransactions,\n updateTransaction,\n deleteTransaction\n} from '../shared/transactions';\nimport * as db from './db';\nimport * as sheet from './sheet';\nimport * as prefs from './prefs';\nimport * as monthUtils from '../shared/months';\nimport * as update from './update';\nimport * as cloudStorage from './cloud-storage';\nimport { setSyncingMode, batchMessages } from './sync';\nimport { groupById, cleanUUID } from '../shared/util';\nimport { getClock } from './timestamp';\nimport { runMutator } from './mutators';\nimport { integerToAmount } from '../shared/util';\nimport { runQuery as aqlQuery } from './aql/schema/run-query';\nimport q from '../shared/query';\n\nconst { resolveName } = require('./spreadsheet/util');\nconst connection = require('../platform/server/connection');\n\nlet IMPORT_MODE = false;\n\n// This is duplicate from main.js...\nfunction APIError(msg, meta) {\n return { type: 'APIError', message: msg, meta };\n}\n\n// The API is different in two ways: we never want undo enabled, and\n// we also need to notify the UI manually if stuff has changed (if\n// they are connecting to an already running instance, the UI should\n// update). The wrapper handles that.\nfunction withMutation(handler) {\n return args => {\n return runMutator(\n async () => {\n let latestTimestamp = getClock().timestamp.toString();\n let result = await handler(args);\n\n let rows = await db.all(\n 'SELECT DISTINCT dataset FROM messages_crdt WHERE timestamp > ?',\n [latestTimestamp]\n );\n\n // Only send the sync event if anybody else is connected\n if (connection.getNumClients() > 1) {\n connection.send('sync-event', {\n type: 'success',\n tables: rows.map(row => row.dataset)\n });\n }\n\n return result;\n },\n { undoDisabled: true }\n );\n };\n}\n\nlet handlers = {};\n\nasync function validateMonth(month) {\n if (!month.match(/^\\d{4}-\\d{2}$/)) {\n throw APIError('Invalid month format, use YYYY-MM: ' + month);\n }\n\n if (!IMPORT_MODE) {\n let { start, end } = await handlers['get-budget-bounds']();\n let range = monthUtils.range(start, end);\n if (!range.includes(month)) {\n throw APIError('No budget exists for month: ' + month);\n }\n }\n}\n\nasync function validateExpenseCategory(debug, id) {\n if (id == null) {\n throw APIError(`${debug}: category id is required`);\n }\n\n let row = await db.first('SELECT is_income FROM categories WHERE id = ?', [\n id\n ]);\n\n if (!row) {\n throw APIError(`${debug}: category \"${id}\" does not exist`);\n }\n\n if (row.is_income !== 0) {\n throw APIError(`${debug}: category \"${id}\" is not an expense category`);\n }\n}\n\nlet batchPromise = null;\n\nhandlers['api/batch-budget-start'] = async function() {\n if (batchPromise) {\n throw APIError('Cannot start a batch process: batch already started');\n }\n\n // If we are importing, all we need to do is start a raw database\n // transaction. Updating spreadsheet cells doesn't go through the\n // syncing layer in that case.\n if (IMPORT_MODE) {\n db.asyncTransaction(() => {\n return new Promise((resolve, reject) => {\n batchPromise = { resolve, reject };\n });\n });\n } else {\n batchMessages(() => {\n return new Promise((resolve, reject) => {\n batchPromise = { resolve, reject };\n });\n });\n }\n};\n\nhandlers['api/batch-budget-end'] = async function() {\n if (!batchPromise) {\n throw APIError('Cannot end a batch process: no batch started');\n }\n\n batchPromise.resolve();\n batchPromise = null;\n};\n\nhandlers['api/load-budget'] = async function({ id }) {\n let { id: currentId } = prefs.getPrefs() || {};\n\n if (currentId !== id) {\n connection.send('start-load');\n let { error } = await handlers['load-budget']({ id });\n\n if (!error) {\n connection.send('finish-load');\n } else {\n connection.send('show-budgets');\n\n if (error === 'out-of-sync-migrations' || error === 'out-of-sync-data') {\n throw new Error(\n 'This budget cannot be loaded with this version of the app.'\n );\n } else if (error === 'budget-not-found') {\n throw new Error(\n 'Budget \"' +\n id +\n '\" not found. Check the id of your budget in the \"Advanced\" section of the settings page.'\n );\n } else {\n throw new Error('We had an unknown problem opening \"' + id + '\".');\n }\n }\n }\n};\n\nhandlers['api/start-import'] = async function({ budgetName }) {\n // Notify UI to close budget\n await handlers['close-budget']();\n\n // Create the budget\n await handlers['create-budget']({ budgetName, avoidUpload: true });\n\n // Clear out the default expense categories\n await db.runQuery('DELETE FROM categories WHERE is_income = 0');\n await db.runQuery('DELETE FROM category_groups WHERE is_income = 0');\n\n // Turn syncing off\n setSyncingMode('import');\n\n connection.send('start-import');\n IMPORT_MODE = true;\n};\n\nhandlers['api/finish-import'] = async function() {\n sheet.get().markCacheDirty();\n\n // We always need to fully reload the app. Importing doesn't touch\n // the spreadsheet, but we can't just recreate the spreadsheet\n // either; there is other internal state that isn't created\n let { id } = prefs.getPrefs();\n await handlers['close-budget']();\n await handlers['load-budget']({ id });\n\n await handlers['get-budget-bounds']();\n await sheet.waitOnSpreadsheet();\n\n await cloudStorage.upload().catch(err => {});\n\n connection.send('finish-import');\n IMPORT_MODE = false;\n};\n\nhandlers['api/abort-import'] = async function() {\n if (IMPORT_MODE) {\n let { id } = prefs.getPrefs();\n\n await handlers['close-budget']();\n await handlers['delete-budget']({ id });\n connection.send('show-budgets');\n }\n\n IMPORT_MODE = false;\n};\n\nhandlers['api/query'] = async function({ query }) {\n return aqlQuery(query);\n};\n\nhandlers['api/budget-months'] = async function() {\n let { start, end } = await handlers['get-budget-bounds']();\n return monthUtils.range(start, end);\n};\n\nhandlers['api/budget-month'] = async function({ month }) {\n await validateMonth(month);\n\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.get().getCellValue(sheetName, name);\n return v === '' ? 0 : v;\n }\n\n // This is duplicated from main.js because the return format is\n // different (for now)\n return {\n month,\n incomeAvailable: value('available-funds'),\n lastMonthOverspent: value('last-month-overspent'),\n forNextMonth: value('buffered'),\n totalBudgeted: value('total-budgeted'),\n toBudget: value('to-budget'),\n\n fromLastMonth: value('from-last-month'),\n totalIncome: value('total-income'),\n totalSpent: value('total-spent'),\n totalBalance: value('total-leftover'),\n\n categoryGroups: groups.map(group => {\n if (group.is_income) {\n return {\n ...categoryGroupModel.toExternal(group),\n received: value('total-income'),\n\n categories: group.categories.map(cat => ({\n ...categoryModel.toExternal(cat),\n received: value(`sum-amount-${cat.id}`)\n }))\n };\n }\n\n return {\n ...categoryGroupModel.toExternal(group),\n budgeted: value(`group-budget-${group.id}`),\n spent: value(`group-sum-amount-${group.id}`),\n balance: value(`group-leftover-${group.id}`),\n\n categories: group.categories.map(cat => ({\n ...categoryModel.toExternal(cat),\n budgeted: value(`budget-${cat.id}`),\n spent: value(`sum-amount-${cat.id}`),\n balance: value(`leftover-${cat.id}`),\n carryover: value(`carryover-${cat.id}`)\n }))\n };\n })\n };\n};\n\nhandlers['api/budget-set-amount'] = withMutation(async function({\n month,\n categoryId,\n amount\n}) {\n return handlers['budget/budget-amount']({\n month,\n category: categoryId,\n amount\n });\n});\n\nhandlers['api/budget-set-carryover'] = withMutation(async function({\n month,\n categoryId,\n flag\n}) {\n await validateMonth(month);\n await validateExpenseCategory('budget-set-carryover', categoryId);\n return handlers['budget/set-carryover']({\n startMonth: month,\n category: categoryId,\n flag\n });\n});\n\nhandlers['api/transactions-export'] = async function({\n transactions,\n categoryGroups,\n payees\n}) {\n return handlers['transactions-export']({\n transactions,\n categoryGroups,\n payees\n });\n};\n\nhandlers['api/transactions-import'] = withMutation(async function({\n accountId,\n transactions\n}) {\n return handlers['transactions-import']({ accountId, transactions });\n});\n\nhandlers['api/transactions-add'] = withMutation(async function({\n accountId,\n transactions\n}) {\n await addTransactions(accountId, transactions, { runTransfers: false });\n return 'ok';\n});\n\nhandlers['api/transactions-get'] = async function({\n accountId,\n startDate,\n endDate\n}) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({\n $and: [\n accountId && { account: accountId },\n startDate && { date: { $gte: startDate } },\n endDate && { date: { $lte: endDate } }\n ].filter(Boolean)\n })\n .select('*')\n .options({ splits: 'grouped' })\n );\n return data;\n};\n\nhandlers['api/transactions-filter'] = async function({ text, accountId }) {\n throw new Error('`filterTransactions` is deprecated, use `runQuery` instead');\n};\n\nhandlers['api/transaction-update'] = withMutation(async function({\n id,\n fields\n}) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ id })\n .select('*')\n .options({ splits: 'grouped' })\n );\n let transactions = ungroupTransactions(data);\n\n if (transactions.length === 0) {\n return [];\n }\n\n let { diff } = updateTransaction(transactions, fields);\n return handlers['transactions-batch-update'](diff);\n});\n\nhandlers['api/transaction-delete'] = withMutation(async function({ id }) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ id })\n .select('*')\n .options({ splits: 'grouped' })\n );\n let transactions = ungroupTransactions(data);\n\n if (transactions.length === 0) {\n return [];\n }\n\n let { diff } = deleteTransaction(transactions, id);\n return handlers['transactions-batch-update'](diff);\n});\n\nhandlers['api/accounts-get'] = async function() {\n let accounts = await db.getAccounts();\n return accounts.map(account => accountModel.toExternal(account));\n};\n\nhandlers['api/account-create'] = withMutation(async function({\n account,\n initialBalance = null\n}) {\n return handlers['account-create']({\n name: account.name,\n type: account.type,\n offBudget: account.offbudget,\n closed: account.closed,\n // Current the API expects an amount but it really should expect\n // an integer\n balance: initialBalance != null ? integerToAmount(initialBalance) : null\n });\n});\n\nhandlers['api/account-update'] = withMutation(async function({ id, fields }) {\n return db.updateAccount({ id, ...accountModel.fromExternal(fields) });\n});\n\nhandlers['api/account-close'] = withMutation(async function({\n id,\n transferAccountId,\n transferCategoryId\n}) {\n return handlers['account-close']({\n id,\n transferAccountId,\n categoryId: transferCategoryId\n });\n});\n\nhandlers['api/account-reopen'] = withMutation(async function({ id }) {\n return handlers['account-reopen']({ id });\n});\n\nhandlers['api/account-delete'] = withMutation(async function({ id }) {\n return handlers['account-close']({ id, forced: true });\n});\n\nhandlers['api/categories-get'] = async function({ grouped } = {}) {\n let result = await handlers['get-categories']();\n return grouped\n ? result.grouped.map(categoryGroupModel.toExternal)\n : result.list.map(categoryModel.toExternal);\n};\n\nhandlers['api/category-group-create'] = withMutation(async function({ group }) {\n return handlers['category-group-create']({ name: group.name });\n});\n\nhandlers['api/category-group-update'] = withMutation(async function({\n id,\n fields\n}) {\n return handlers['category-group-update']({\n id,\n ...categoryGroupModel.fromExternal(fields)\n });\n});\n\nhandlers['api/category-group-delete'] = withMutation(async function({\n id,\n transferCategoryId\n}) {\n return handlers['category-group-delete']({\n id,\n transferId: transferCategoryId\n });\n});\n\nhandlers['api/category-create'] = withMutation(async function({ category }) {\n return handlers['category-create']({\n name: category.name,\n groupId: category.group_id,\n isIncome: category.is_income\n });\n});\n\nhandlers['api/category-update'] = withMutation(async function({ id, fields }) {\n return handlers['category-update']({\n id,\n ...categoryModel.fromExternal(fields)\n });\n});\n\nhandlers['api/category-delete'] = withMutation(async function({\n id,\n transferCategoryId\n}) {\n return handlers['category-delete']({\n id,\n transferId: transferCategoryId\n });\n});\n\nhandlers['api/payees-get'] = async function() {\n let payees = await handlers['payees-get']();\n return payees.map(payeeModel.toExternal);\n};\n\nhandlers['api/payee-create'] = withMutation(async function({ payee }) {\n return handlers['payee-create']({ name: payee.name });\n});\n\nhandlers['api/payee-update'] = withMutation(async function({ id, fields }) {\n return handlers['payees-batch-change']({\n updated: [{ id, ...payeeModel.fromExternal(fields) }]\n });\n});\n\nhandlers['api/payee-delete'] = withMutation(async function({ id }) {\n return handlers['payees-batch-change']({ deleted: [{ id }] });\n});\n\nhandlers['api/payee-rules-get'] = async function({ payeeId }) {\n let rules = await handlers['payees-get-rules']({ id: payeeId });\n return rules.map(payeeRuleModel.toExternal);\n};\n\nhandlers['api/payee-rule-create'] = withMutation(async function({\n payee_id,\n rule\n}) {\n return handlers['payees-add-rule']({\n payee_id,\n type: rule.type,\n value: rule.value || null\n });\n});\n\nhandlers['api/payee-rule-update'] = withMutation(async function({\n id,\n fields\n}) {\n return handlers['payees-update-rule']({\n id,\n ...payeeRuleModel.fromExternal(fields)\n });\n});\n\nhandlers['api/payee-rule-delete'] = withMutation(async function({ id }) {\n return handlers['payees-delete-rule']({ id });\n});\n\nexport default function(serverHandlers) {\n handlers = Object.assign({}, serverHandlers, handlers);\n return handlers;\n}\n","import mitt from 'mitt';\nimport { captureException } from '../platform/exceptions';\n\n// This is a simple helper abstraction for defining methods exposed to\n// the client. It doesn't do much, but checks for naming conflicts and\n// makes it cleaner to combine methods. We call a group of related\n// methods an \"app\".\n\nclass App {\n constructor() {\n this.handlers = {};\n this.services = [];\n this.events = mitt();\n this.unlistenServices = [];\n }\n\n method(name, func) {\n if (this.handlers[name] != null) {\n throw new Error(\n 'Conflicting method name, names must be globally unique: ' + name\n );\n }\n this.handlers[name] = func;\n }\n\n service(func) {\n this.services.push(func);\n }\n\n combine(...apps) {\n for (let app of apps) {\n Object.keys(app.handlers).forEach(name => {\n this.method(name, app.handlers[name]);\n });\n\n app.services.forEach(service => {\n this.service(service);\n });\n\n for (let [name, listeners] of app.events.all.entries()) {\n for (let listener of listeners) {\n this.events.on(name, listener);\n }\n }\n }\n }\n\n startServices() {\n if (this.unlistenServices.length > 0) {\n captureException(\n new Error(\n 'App: startServices called while services are already running'\n )\n );\n }\n this.unlistenServices = this.services.map(service => service());\n }\n\n stopServices() {\n this.unlistenServices.forEach(unlisten => {\n if (unlisten) {\n unlisten();\n }\n });\n this.unlistenServices = [];\n }\n}\n\nexport function createApp() {\n return new App();\n}\n","let _uid = 0;\nfunction resetUid() {\n _uid = 0;\n}\n\nfunction uid(tableName) {\n _uid++;\n return tableName + _uid;\n}\n\nclass CompileError extends Error {}\n\nfunction nativeDateToInt(date) {\n let pad = x => (x < 10 ? '0' : '') + x;\n return date.getFullYear() + pad(date.getMonth() + 1) + pad(date.getDate());\n}\n\nfunction dateToInt(date) {\n return parseInt(date.replace(/-/g, ''));\n}\n\nexport function addTombstone(schema, tableName, tableId, whereStr) {\n let hasTombstone = schema[tableName].tombstone != null;\n return hasTombstone ? `${whereStr} AND ${tableId}.tombstone = 0` : whereStr;\n}\n\nfunction popPath(path) {\n let parts = path.split('.');\n return { path: parts.slice(0, -1).join('.'), field: parts[parts.length - 1] };\n}\n\nfunction isKeyword(str) {\n return str === 'group';\n}\n\nexport function quoteAlias(alias) {\n return alias.indexOf('.') === -1 && !isKeyword(alias) ? alias : `\"${alias}\"`;\n}\n\nfunction typed(value, type, { literal = false } = {}) {\n return { value, type, literal };\n}\n\nfunction getFieldDescription(schema, tableName, field) {\n if (schema[tableName] == null) {\n throw new CompileError(`Table \"${tableName}\" does not exist in the schema`);\n }\n\n let fieldDesc = schema[tableName][field];\n if (fieldDesc == null) {\n throw new CompileError(\n `Field \"${field}\" does not exist in table \"${tableName}\"`\n );\n }\n return fieldDesc;\n}\n\nfunction makePath(state, path) {\n let { schema, paths } = state;\n\n let parts = path.split('.');\n if (parts.length < 2) {\n throw new CompileError('Invalid path: ' + path);\n }\n\n let initialTable = parts[0];\n\n let tableName = parts.slice(1).reduce((tableName, field) => {\n let table = schema[tableName];\n\n if (table == null) {\n throw new CompileError(`Path error: ${tableName} table does not exist`);\n }\n\n if (!table[field] || table[field].ref == null) {\n throw new CompileError(\n `Field not joinable on table ${tableName}: \"${field}\"`\n );\n }\n\n return table[field].ref;\n }, initialTable);\n\n let joinTable;\n let parentParts = parts.slice(0, -1);\n if (parentParts.length === 1) {\n joinTable = parentParts[0];\n } else {\n let parentPath = parentParts.join('.');\n let parentDesc = paths.get(parentPath);\n if (!parentDesc) {\n throw new CompileError('Path does not exist: ' + parentPath);\n }\n joinTable = parentDesc.tableId;\n }\n\n return {\n tableName: tableName,\n tableId: uid(tableName),\n joinField: parts[parts.length - 1],\n joinTable\n };\n}\n\nfunction resolvePath(state, path) {\n let paths = path.split('.');\n let tableId;\n\n paths = paths.reduce(\n (acc, name) => {\n let fullName = acc.context + '.' + name;\n return {\n context: fullName,\n path: [...acc.path, fullName]\n };\n },\n { context: state.implicitTableName, path: [] }\n ).path;\n\n paths.forEach(path => {\n if (!state.paths.get(path)) {\n state.paths.set(path, makePath(state, path));\n }\n });\n\n let pathInfo = state.paths.get(paths[paths.length - 1]);\n return pathInfo;\n}\n\nfunction transformField(state, name) {\n if (typeof name !== 'string') {\n throw new CompileError('Invalid field name, must be a string');\n }\n\n let { path, field } = popPath(name);\n\n let pathInfo;\n if (path === '') {\n pathInfo = {\n tableName: state.implicitTableName,\n tableId: state.implicitTableId\n };\n } else {\n pathInfo = resolvePath(state, path);\n }\n\n let fieldDesc = getFieldDescription(state.schema, pathInfo.tableName, field);\n\n // If this is a field that references an item in another table, that\n // item could have been deleted. If that's the case, we want to\n // return `null` instead of an id pointing to a deleted item. This\n // converts an id reference into a path that pulls the id through a\n // table join which will filter out dead items, resulting in a\n // `null` id if the item is deleted\n if (\n state.validateRefs &&\n fieldDesc.ref &&\n fieldDesc.type === 'id' &&\n field !== 'id'\n ) {\n let refPath = state.implicitTableName + '.' + name;\n let refPathInfo = state.paths.get(refPath);\n\n if (!refPathInfo) {\n refPathInfo = makePath(state, refPath);\n refPathInfo.noMapping = true;\n state.paths.set(refPath, refPathInfo);\n }\n\n field = 'id';\n pathInfo = refPathInfo;\n }\n\n let fieldStr = pathInfo.tableId + '.' + field;\n return typed(fieldStr, fieldDesc.type);\n}\n\nfunction parseDate(str) {\n let m = str.match(/^(\\d{4}-\\d{2}-\\d{2})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction parseMonth(str) {\n let m = str.match(/^(\\d{4}-\\d{2})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction parseYear(str) {\n let m = str.match(/^(\\d{4})$/);\n if (m) {\n return typed(dateToInt(m[1]), 'date', { literal: true });\n }\n return null;\n}\n\nfunction badDateFormat(str, type) {\n throw new CompileError(`Bad ${type} format: ${str}`);\n}\n\nfunction inferParam(param, type) {\n let existingType = param.paramType;\n if (existingType) {\n let casts = {\n date: ['string'],\n 'date-month': ['date'],\n 'date-year': ['date', 'date-month'],\n id: ['string'],\n float: ['integer']\n };\n\n if (\n existingType !== type &&\n (!casts[type] || !casts[type].includes(existingType))\n ) {\n throw new Error(\n `Parameter \"${name}\" can't convert to ${type} (already inferred as ${existingType})`\n );\n }\n } else {\n param.paramType = type;\n }\n}\n\nfunction castInput(state, expr, type) {\n if (expr.type === type) {\n return expr;\n } else if (expr.type === 'param') {\n inferParam(expr, type);\n return typed(expr.value, type);\n } else if (expr.type === 'null') {\n if (!expr.literal) {\n throw new CompileError(\"A non-literal null doesn't make sense\");\n }\n\n if (type === 'boolean') {\n return typed(0, 'boolean', { literal: true });\n }\n return expr;\n }\n\n // These are all things that can be safely casted automatically\n if (type === 'date') {\n if (expr.type === 'string') {\n if (expr.literal) {\n return parseDate(expr.value) || badDateFormat(expr.value, 'date');\n } else {\n throw new CompileError(\n 'Casting string fields to dates is not supported'\n );\n }\n }\n\n throw new CompileError(`Can't cast ${expr.type} to date`);\n } else if (type === 'date-month') {\n let expr2;\n if (expr.type === 'date') {\n expr2 = expr;\n } else if (expr.type === 'string' || expr.type === 'any') {\n expr2 =\n parseMonth(expr.value) ||\n parseDate(expr.value) ||\n badDateFormat(expr.value, 'date-month');\n } else {\n throw new CompileError(`Can't cast ${expr.type} to date-month`);\n }\n\n if (expr2.literal) {\n return typed(\n dateToInt(expr2.value.toString().slice(0, 6)),\n 'date-month',\n { literal: true }\n );\n } else {\n return typed(\n `CAST(SUBSTR(${expr2.value}, 1, 6) AS integer)`,\n 'date-month'\n );\n }\n } else if (type === 'date-year') {\n let expr2;\n if (expr.type === 'date' || expr.type === 'date-month') {\n expr2 = expr;\n } else if (expr.type === 'string') {\n expr2 =\n parseYear(expr.value) ||\n parseMonth(expr.value) ||\n parseDate(expr.value) ||\n badDateFormat(expr.value, 'date-year');\n } else {\n throw new CompileError(`Can't cast ${expr.type} to date-year`);\n }\n\n if (expr2.literal) {\n return typed(dateToInt(expr2.value.toString().slice(0, 4)), 'date-year', {\n literal: true\n });\n } else {\n return typed(\n `CAST(SUBSTR(${expr2.value}, 1, 4) AS integer)`,\n 'date-year'\n );\n }\n } else if (type === 'id') {\n if (expr.type === 'string') {\n return typed(expr.value, 'id', { literal: expr.literal });\n }\n } else if (type === 'float') {\n if (expr.type === 'integer') {\n return typed(expr.value, 'float', { literal: expr.literal });\n }\n }\n\n if (expr.type === 'any') {\n return typed(expr.value, type, { literal: expr.literal });\n }\n\n throw new CompileError(`Can't convert ${expr.type} to ${type}`);\n}\n\n// TODO: remove state from these functions\nfunction val(state, expr, type) {\n let castedExpr = expr;\n\n // Cast the type if necessary\n if (type) {\n castedExpr = castInput(state, expr, type);\n }\n\n if (castedExpr.literal) {\n if (castedExpr.type === 'id') {\n return `'${castedExpr.value}'`;\n } else if (castedExpr.type === 'string') {\n // Escape quotes\n let value = castedExpr.value.replace(/'/g, \"''\");\n return `'${value}'`;\n }\n }\n\n return castedExpr.value;\n}\n\nfunction valArray(state, arr, types) {\n return arr.map((value, idx) => val(state, value, types ? types[idx] : null));\n}\n\nfunction validateArgLength(arr, min, max) {\n if (max == null) {\n max = min;\n }\n\n if (min != null && arr.length < min) {\n throw new CompileError('Too few arguments');\n }\n if (max != null && arr.length > max) {\n throw new CompileError('Too many arguments');\n }\n}\n\n//// Nice errors\n\nfunction saveStack(type, func) {\n return (state, ...args) => {\n if (state == null || state.compileStack == null) {\n throw new CompileError(\n 'This function cannot track error data. ' +\n 'It needs to accept the compiler state as the first argument.'\n );\n }\n\n state.compileStack.push({ type, args });\n let ret = func(state, ...args);\n state.compileStack.pop();\n return ret;\n };\n}\n\nfunction prettyValue(value) {\n if (typeof value === 'string') {\n return value;\n } else if (value === undefined) {\n return 'undefined';\n }\n\n let str = JSON.stringify(value);\n if (str.length > 70) {\n let expanded = JSON.stringify(value, null, 2);\n return expanded.split('\\n').join('\\n ');\n }\n return str;\n}\n\nfunction getCompileError(error, stack) {\n if (stack.length === 0) {\n return error;\n }\n\n let stackStr = stack\n .slice(1)\n .reverse()\n .map(entry => {\n switch (entry.type) {\n case 'expr':\n case 'function':\n return prettyValue(entry.args[0]);\n case 'op': {\n let [fieldRef, opData] = entry.args;\n return prettyValue({ [fieldRef]: opData });\n }\n case 'value':\n return prettyValue(entry.value);\n default:\n return '';\n }\n })\n .map(str => '\\n ' + str)\n .join('');\n\n const rootMethod = stack[0].type;\n const methodArgs = stack[0].args[0];\n stackStr += `\\n ${rootMethod}(${prettyValue(\n methodArgs.length === 1 ? methodArgs[0] : methodArgs\n )})`;\n\n // In production, hide internal stack traces\n if (process.env.NODE_ENV === 'production') {\n const err = new CompileError();\n err.message = `${error.message}\\n\\nExpression stack:` + stackStr;\n err.stack = null;\n return err;\n }\n\n error.message = `${error.message}\\n\\nExpression stack:` + stackStr;\n return error;\n}\n\n//// Compiler\n\nfunction compileLiteral(value) {\n if (value === undefined) {\n throw new CompileError('`undefined` is not a valid query value');\n } else if (value === null) {\n return typed('NULL', 'null', { literal: true });\n } else if (value instanceof Date) {\n return typed(nativeDateToInt(value), 'date', { literal: true });\n } else if (typeof value === 'string') {\n // Allow user to escape $, and quote the string to make it a\n // string literal in the output\n value = value.replace(/\\\\\\$/g, '$');\n return typed(value, 'string', { literal: true });\n } else if (typeof value === 'boolean') {\n return typed(value ? 1 : 0, 'boolean', { literal: true });\n } else if (typeof value === 'number') {\n return typed(value, (value | 0) === value ? 'integer' : 'float', {\n literal: true\n });\n } else if (Array.isArray(value)) {\n return typed(value, 'array', { literal: true });\n } else {\n throw new CompileError(\n 'Unsupported type of expression: ' + JSON.stringify(value)\n );\n }\n}\n\nconst compileExpr = saveStack('expr', (state, expr) => {\n if (typeof expr === 'string') {\n // Field reference\n if (expr[0] === '$') {\n let fieldRef = expr === '$' ? state.implicitField : expr.slice(1);\n\n if (fieldRef == null || fieldRef === '') {\n throw new CompileError('Invalid field reference: ' + expr);\n }\n\n return transformField(state, fieldRef);\n }\n\n // Named parameter\n if (expr[0] === ':') {\n let param = { value: '?', type: 'param', paramName: expr.slice(1) };\n state.namedParameters.push(param);\n return param;\n }\n }\n\n if (expr !== null) {\n if (Array.isArray(expr)) {\n return compileLiteral(expr);\n } else if (\n typeof expr === 'object' &&\n Object.keys(expr).find(k => k[0] === '$')\n ) {\n // It's a function call\n return compileFunction(state, expr);\n }\n }\n\n return compileLiteral(expr);\n});\n\nfunction assertType(name, data, acceptedTypes) {\n if (acceptedTypes.indexOf(data.type) === -1) {\n throw new CompileError(\n `Invalid type of expression to ${name}, must be one of ${JSON.stringify(\n acceptedTypes\n )}: ${JSON.stringify(data.value)}`\n );\n }\n}\n\nfunction assertArgLength(name, args, len) {\n if (args.length !== len) {\n throw new CompileError(\n `Invalid number of args to ${name}: expected ${len} but received ${args.length}`\n )();\n }\n}\n\nconst compileFunction = saveStack('function', (state, func) => {\n let [name] = Object.keys(func);\n let argExprs = func[name];\n if (!Array.isArray(argExprs)) {\n argExprs = [argExprs];\n }\n\n if (name[0] !== '$') {\n throw new CompileError(\n `Unknown property \"${name}\". Did you mean to call a function? Try prefixing it with $`\n );\n }\n\n let args = argExprs;\n // `$condition` is a special-case where it will be evaluated later\n if (name !== '$condition') {\n args = argExprs.map(arg => compileExpr(state, arg));\n }\n\n switch (name) {\n // aggregate functions\n case '$sum': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`SUM(${arg1})`, args[0].type);\n }\n\n case '$sumOver': {\n let [arg1] = valArray(state, args, ['float']);\n let order = state.orders\n ? 'ORDER BY ' + compileOrderBy(state, state.orders)\n : '';\n\n return typed(\n `(SUM(${arg1}) OVER (${order} ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING))`,\n args[0].type\n );\n }\n\n case '$count': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args);\n return typed(`COUNT(${arg1})`, 'integer');\n }\n\n // string functions\n case '$substr': {\n validateArgLength(args, 2, 3);\n let [arg1, arg2, arg3] = valArray(state, args, [\n 'string',\n 'integer',\n 'integer'\n ]);\n return typed(`SUBSTR(${arg1}, ${arg2}, ${arg3})`, 'string');\n }\n case '$lower': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['string']);\n return typed(`LOWER(${arg1})`, 'string');\n }\n\n // integer/float functions\n case '$neg': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`(-${val(state, args[0])})`, args[0].type);\n }\n case '$abs': {\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['float']);\n return typed(`ABS(${val(state, args[0])})`, args[0].type);\n }\n case '$idiv': {\n validateArgLength(args, 2);\n let [arg1, arg2] = valArray(state, args, ['integer', 'integer']);\n return typed(\n `(${val(state, args[0])} / ${val(state, args[1])})`,\n args[0].type\n );\n }\n\n // date functions\n case '$month': {\n validateArgLength(args, 1);\n return castInput(state, args[0], 'date-month');\n }\n case '$year': {\n validateArgLength(args, 1);\n return castInput(state, args[0], 'date-year');\n }\n\n // various functions\n case '$condition':\n validateArgLength(args, 1);\n let conds = compileConditions(state, args[0]);\n return typed(conds.join(' AND '), 'boolean');\n\n case '$nocase':\n validateArgLength(args, 1);\n let [arg1] = valArray(state, args, ['string']);\n return typed(`${arg1} COLLATE NOCASE`, args[0].type);\n\n case '$literal': {\n validateArgLength(args, 1);\n if (!args[0].literal) {\n throw new CompileError('Literal not passed to $literal');\n }\n return args[0];\n }\n default:\n throw new CompileError(`Unknown function: ${name}`);\n }\n});\n\nconst compileOp = saveStack('op', (state, fieldRef, opData) => {\n let { $transform, ...opExpr } = opData;\n let [op] = Object.keys(opExpr);\n\n let rhs = compileExpr(state, opData[op]);\n\n let lhs;\n if ($transform) {\n lhs = compileFunction(\n { ...state, implicitField: fieldRef },\n typeof $transform === 'string' ? { [$transform]: '$' } : $transform\n );\n } else {\n lhs = compileExpr(state, '$' + fieldRef);\n }\n\n switch (op) {\n case '$gte': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} >= ${right}`;\n }\n case '$lte': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} <= ${right}`;\n }\n case '$gt': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} > ${right}`;\n }\n case '$lt': {\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n return `${left} < ${right}`;\n }\n case '$eq': {\n if (castInput(state, rhs, lhs.type).type === 'null') {\n return `${val(state, lhs)} IS NULL`;\n }\n\n let [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]);\n\n if (rhs.type === 'param') {\n let orders = state.namedParameters.map(param => {\n return param === rhs || param === lhs ? [param, { ...param }] : param;\n });\n state.namedParameters = [].concat.apply([], orders);\n\n return `CASE\n WHEN ${left} IS NULL THEN ${right} IS NULL\n ELSE ${left} = ${right}\n END`;\n }\n\n return `${left} = ${right}`;\n }\n case '$oneof': {\n let [left, right] = valArray(state, [lhs, rhs], [null, 'array']);\n // Dedupe the ids\n let ids = [...new Set(right)];\n return `${left} IN (` + ids.map(id => `'${id}'`).join(',') + ')';\n }\n case '$like': {\n let [left, right] = valArray(state, [lhs, rhs], ['string', 'string']);\n return `${left} LIKE ${right}`;\n }\n default:\n throw new CompileError(`Unknown operator: ${op}`);\n }\n});\n\nfunction compileConditions(state, conds) {\n if (!Array.isArray(conds)) {\n // Convert the object form `{foo: 1, bar:2}` into the array form\n // `[{foo: 1}, {bar:2}]`\n conds = Object.entries(conds).map(cond => {\n return { [cond[0]]: cond[1] };\n });\n }\n\n return conds.filter(Boolean).reduce((res, condsObj) => {\n let compiled = Object.entries(condsObj)\n .map(([field, cond]) => {\n // Allow a falsy value in the lhs of $and and $or to allow for\n // quick forms like `$or: amount != 0 && ...`\n if (field === '$and') {\n if (!cond) {\n return null;\n }\n return compileAnd(state, cond);\n } else if (field === '$or') {\n if (!cond) {\n return null;\n }\n return compileOr(state, cond);\n }\n\n if (\n typeof cond === 'string' ||\n typeof cond === 'number' ||\n typeof cond === 'boolean' ||\n cond instanceof Date ||\n cond == null\n ) {\n return compileOp(state, field, { $eq: cond });\n }\n\n if (Array.isArray(cond)) {\n // An array of conditions for a field is implicitly an `and`\n return cond.map(c => compileOp(state, field, c)).join(' AND ');\n }\n return compileOp(state, field, cond);\n })\n .filter(Boolean);\n\n return [...res, ...compiled];\n }, []);\n}\n\nfunction compileOr(state, conds) {\n // Same as above\n if (!conds) {\n return '0';\n }\n let res = compileConditions(state, conds);\n if (res.length === 0) {\n return '0';\n }\n return '(' + res.join('\\n OR ') + ')';\n}\n\nfunction compileAnd(state, conds) {\n // Same as above\n if (!conds) {\n return '1';\n }\n let res = compileConditions(state, conds);\n if (res.length === 0) {\n return '1';\n }\n return '(' + res.join('\\n AND ') + ')';\n}\n\nconst compileWhere = saveStack('filter', (state, conds) => {\n return compileAnd(state, conds);\n});\n\nfunction compileJoins(state, tableRef, internalTableFilters) {\n let joins = [];\n state.paths.forEach((desc, path) => {\n let {\n tableName,\n tableId,\n joinField,\n joinTable,\n noMapping\n } = state.paths.get(path);\n\n let on = `${tableId}.id = ${tableRef(joinTable)}.${quoteAlias(joinField)}`;\n\n let filters = internalTableFilters(tableName);\n if (filters.length > 0) {\n on +=\n ' AND ' +\n compileAnd(\n { ...state, implicitTableName: tableName, implicitTableId: tableId },\n filters\n );\n }\n\n joins.push(\n `LEFT JOIN ${\n noMapping ? tableName : tableRef(tableName, true)\n } ${tableId} ON ${addTombstone(state.schema, tableName, tableId, on)}`\n );\n\n if (state.dependencies.indexOf(tableName) === -1) {\n state.dependencies.push(tableName);\n }\n });\n return joins.join('\\n');\n}\n\nfunction expandStar(state, expr) {\n let path;\n let pathInfo;\n if (expr === '*') {\n pathInfo = {\n tableName: state.implicitTableName,\n tableId: state.implicitTableId\n };\n } else if (expr.match(/\\.\\*$/)) {\n let result = popPath(expr);\n path = result.path;\n pathInfo = resolvePath(state, result.path);\n }\n\n let table = state.schema[pathInfo.tableName];\n if (table == null) {\n throw new Error(`Table \"${pathInfo.tableName}\" does not exist`);\n }\n\n return Object.keys(table).map(field => (path ? `${path}.${field}` : field));\n}\n\nconst compileSelect = saveStack(\n 'select',\n (state, exprs, isAggregate, orders) => {\n // Always include the id if it's not an aggregate\n if (!isAggregate && !exprs.includes('id') && !exprs.includes('*')) {\n exprs = exprs.concat(['id']);\n }\n\n let select = exprs.map(expr => {\n if (typeof expr === 'string') {\n if (expr.indexOf('*') !== -1) {\n let fields = expandStar(state, expr);\n\n return fields\n .map(field => {\n let compiled = compileExpr(state, '$' + field);\n state.outputTypes.set(field, compiled.type);\n return compiled.value + ' AS ' + quoteAlias(field);\n })\n .join(', ');\n }\n\n let compiled = compileExpr(state, '$' + expr);\n state.outputTypes.set(expr, compiled.type);\n return compiled.value + ' AS ' + quoteAlias(expr);\n }\n\n let [name, value] = Object.entries(expr)[0];\n if (name[0] === '$') {\n state.compileStack.push({ type: 'value', value: expr });\n throw new CompileError(\n `Invalid field \"${name}\", are you trying to select a function? You need to name the expression`\n );\n }\n\n if (typeof value === 'string') {\n let compiled = compileExpr(state, '$' + value);\n state.outputTypes.set(name, compiled.type);\n return `${compiled.value} AS ${quoteAlias(name)}`;\n }\n\n let compiled = compileFunction({ ...state, orders }, value);\n state.outputTypes.set(name, compiled.type);\n return compiled.value + ` AS ${quoteAlias(name)}`;\n });\n\n return select.join(', ');\n }\n);\n\nconst compileGroupBy = saveStack('groupBy', (state, exprs) => {\n let groupBy = exprs.map(expr => {\n if (typeof expr === 'string') {\n return compileExpr(state, '$' + expr).value;\n }\n\n return compileFunction(state, expr).value;\n });\n\n return groupBy.join(', ');\n});\n\nconst compileOrderBy = saveStack('orderBy', (state, exprs) => {\n let orderBy = exprs.map(expr => {\n let compiled;\n let dir = null;\n\n if (typeof expr === 'string') {\n compiled = compileExpr(state, '$' + expr).value;\n } else {\n let entries = Object.entries(expr);\n let entry = entries[0];\n\n // Check if this is a field reference\n if (entries.length === 1 && entry[0][0] !== '$') {\n dir = entry[1];\n compiled = compileExpr(state, '$' + entry[0]).value;\n } else {\n // Otherwise it's a function\n let { $dir, ...func } = expr;\n dir = $dir;\n compiled = compileFunction(state, func).value;\n }\n }\n\n if (dir != null) {\n if (dir !== 'desc' && dir !== 'asc') {\n throw new CompileError('Invalid order direction: ' + dir);\n }\n return `${compiled} ${dir}`;\n }\n return compiled;\n });\n\n return orderBy.join(', ');\n});\n\nlet AGGREGATE_FUNCTIONS = ['$sum', '$count'];\nfunction isAggregateFunction(expr) {\n if (typeof expr !== 'object' || Array.isArray(expr)) {\n return false;\n }\n\n let [name, argExprs] = Object.entries(expr)[0];\n if (!Array.isArray(argExprs)) {\n argExprs = [argExprs];\n }\n\n if (AGGREGATE_FUNCTIONS.indexOf(name) !== -1) {\n return true;\n }\n\n return argExprs.find(ex => isAggregateFunction(ex));\n}\n\nexport function isAggregateQuery(queryState) {\n // it's aggregate if:\n // either an aggregate function is used in `select`\n // or a `groupBy` exists\n\n if (queryState.groupExpressions.length > 0) {\n return true;\n }\n\n return queryState.selectExpressions.find(expr => {\n if (typeof expr !== 'string') {\n let [name, value] = Object.entries(expr)[0];\n return isAggregateFunction(value);\n }\n return false;\n });\n}\n\nexport function compileQuery(queryState, schema, schemaConfig = {}) {\n let { withDead, validateRefs = true, tableOptions, rawMode } = queryState;\n\n let {\n tableViews = {},\n tableFilters = name => [],\n customizeQuery = queryState => queryState\n } = schemaConfig;\n\n let internalTableFilters = name => {\n let filters = tableFilters(name);\n // These filters cannot join tables and must be simple strings\n for (let filter of filters) {\n if (Array.isArray(filter)) {\n throw new CompileError(\n 'Invalid internal table filter: only object filters are supported'\n );\n }\n if (Object.keys(filter)[0].indexOf('.') !== -1) {\n throw new CompileError(\n 'Invalid internal table filter: field names cannot contain paths'\n );\n }\n }\n return filters;\n };\n\n let tableRef = (name, isJoin) => {\n let view =\n typeof tableViews === 'function'\n ? tableViews(name, { withDead, isJoin, tableOptions })\n : tableViews[name];\n return view || name;\n };\n\n let tableName = queryState.table;\n\n let {\n filterExpressions,\n selectExpressions,\n groupExpressions,\n orderExpressions,\n limit,\n offset,\n calculation\n } = customizeQuery(queryState);\n\n let select = '';\n let where = '';\n let joins = '';\n let groupBy = '';\n let orderBy = '';\n let dependences = [];\n let state = {\n schema,\n implicitTableName: tableName,\n implicitTableId: tableRef(tableName),\n paths: new Map(),\n dependencies: [tableName],\n compileStack: [],\n outputTypes: new Map(),\n validateRefs,\n namedParameters: []\n };\n\n resetUid();\n\n try {\n select = compileSelect(\n state,\n selectExpressions,\n isAggregateQuery(queryState),\n orderExpressions\n );\n\n if (filterExpressions.length > 0) {\n let result = compileWhere(state, filterExpressions);\n where = 'WHERE ' + result;\n } else {\n where = 'WHERE 1';\n }\n\n if (!rawMode) {\n let filters = internalTableFilters(tableName);\n if (filters.length > 0) {\n where += ' AND ' + compileAnd(state, filters);\n }\n }\n\n if (groupExpressions.length > 0) {\n let result = compileGroupBy(state, groupExpressions);\n groupBy = 'GROUP BY ' + result;\n }\n\n // Orders don't matter if doing a single calculation\n if (orderExpressions.length > 0) {\n let result = compileOrderBy(state, orderExpressions);\n orderBy = 'ORDER BY ' + result;\n }\n\n if (state.paths.size > 0) {\n joins = compileJoins(state, tableRef, internalTableFilters);\n }\n } catch (e) {\n if (e instanceof CompileError) {\n throw getCompileError(e, state.compileStack);\n }\n\n throw e;\n }\n\n let sqlPieces = {\n select,\n from: tableRef(tableName),\n joins,\n where,\n groupBy,\n orderBy,\n limit,\n offset\n };\n\n return {\n sqlPieces,\n state\n };\n}\n\nexport function defaultConstructQuery(queryState, state, sqlPieces) {\n let s = sqlPieces;\n\n let where = queryState.withDead\n ? s.where\n : addTombstone(\n state.schema,\n state.implicitTableName,\n state.implicitTableId,\n s.where\n );\n\n return `\n SELECT ${s.select} FROM ${s.from}\n ${s.joins}\n ${where}\n ${s.groupBy}\n ${s.orderBy}\n ${s.limit != null ? `LIMIT ${s.limit}` : ''}\n ${s.offset != null ? `OFFSET ${s.offset}` : ''}\n `;\n}\n\nexport function generateSQLWithState(queryState, schema, schemaConfig) {\n let { sqlPieces, state } = compileQuery(queryState, schema, schemaConfig);\n return { sql: defaultConstructQuery(queryState, state, sqlPieces), state };\n}\n\nexport function generateSQL(queryState) {\n return generateSQLWithState(queryState).sql;\n}\n","import * as db from '../db';\nimport { compileQuery, defaultConstructQuery } from './compiler';\nimport { convertInputType, convertOutputType } from './schema-helpers';\n\n// TODO (compiler):\n// * Properly safeguard all inputs against SQL injection\n// * Functions for incr/decr dates\n// * Support HAVING\n// * Allow creating in-memory tables to run queries against static\n// data\n// * For aggregate functions on selected ids, manually implement\n// them only only support a specific few (sum amount / etc)\n// * Select expressions should be evaluated first, and added to a\n// global \"field lookup\" table that other filter/groupBy/etc\n// expressions can reference\n\nfunction applyTypes(data, outputTypes) {\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n Object.keys(item).forEach(name => {\n item[name] = convertOutputType(item[name], outputTypes.get(name));\n });\n }\n}\n\nexport async function execQuery(\n queryState,\n state,\n sqlPieces,\n params,\n outputTypes\n) {\n let sql = defaultConstructQuery(queryState, state, sqlPieces);\n let data = await db.all(sql, params);\n applyTypes(data, outputTypes);\n return data;\n}\n\nexport async function runCompiledQuery(\n query,\n pieces,\n state,\n { params = {}, executors = {} } = {}\n) {\n let paramArray = state.namedParameters.map(param => {\n let name = param.paramName;\n if (params[name] === undefined) {\n throw new Error(`Parameter ${name} not provided to query`);\n }\n return convertInputType(params[name], param.paramType);\n });\n\n let data;\n if (executors[state.implicitTableName]) {\n data = await executors[state.implicitTableName](\n state,\n query,\n pieces,\n paramArray,\n state.outputTypes\n );\n } else {\n data = await execQuery(query, state, pieces, paramArray, state.outputTypes);\n }\n\n if (query.calculation) {\n if (data.length > 0) {\n let row = data[0];\n let k = Object.keys(row)[0];\n // TODO: the function being run should be the one to\n // determine the default value, not hardcoded as 0\n data = row[k] || 0;\n } else {\n data = null;\n }\n }\n return data;\n}\n\nexport async function runQuery(schema, schemaConfig, query, options) {\n let { sqlPieces, state } = compileQuery(query, schema, schemaConfig);\n let data = await runCompiledQuery(query, sqlPieces, state, options);\n return { data, dependencies: state.dependencies };\n}\n","import { toDateRepr, fromDateRepr } from '../models';\nimport { dayFromDate } from '../../shared/months';\n\nfunction isRequired(name, fieldDesc) {\n return fieldDesc.required || name === 'id';\n}\n\n// TODO: All of the data type needs to check the input value. This\n// doesn't just convert, it casts. See integer handling.\nexport function convertInputType(value, type) {\n if (value === undefined) {\n throw new Error('Query value cannot be undefined');\n } else if (value === null) {\n if (type === 'boolean') {\n return 0;\n }\n\n return null;\n }\n\n switch (type) {\n case 'date':\n if (value instanceof Date) {\n return toDateRepr(dayFromDate(value));\n } else if (\n value.match(/^\\d{4}-\\d{2}-\\d{2}$/) == null ||\n value.date < '2000-01-01'\n ) {\n throw new Error('Invalid date: ' + value);\n }\n\n return toDateRepr(value);\n case 'date-month':\n return toDateRepr(value.slice(0, 7));\n case 'date-year':\n return toDateRepr(value.slice(0, 4));\n case 'boolean':\n return value ? 1 : 0;\n case 'id':\n if (typeof value !== 'string' && value !== null) {\n throw new Error('Invalid id, must be string: ' + value);\n }\n return value;\n case 'integer':\n if (typeof value === 'number' && (value | 0) === value) {\n return value;\n } else {\n throw new Error(\"Can't convert to integer: \" + JSON.stringify(value));\n }\n case 'json':\n return JSON.stringify(value);\n default:\n }\n return value;\n}\n\nexport function convertOutputType(value, type) {\n if (value === null) {\n if (type === 'boolean') {\n return false;\n }\n return null;\n }\n\n switch (type) {\n case 'date':\n return fromDateRepr(value);\n case 'date-month':\n return fromDateRepr(value).slice(0, 7);\n case 'date-year':\n return fromDateRepr(value).slice(0, 4);\n case 'boolean':\n return value === 1;\n case 'json':\n case 'json/fallback':\n try {\n return JSON.parse(value);\n } catch (e) {\n return type === 'json/fallback' ? value : null;\n }\n default:\n }\n\n return value;\n}\n\nexport function conform(schema, schemaConfig, table, obj, { skipNull } = {}) {\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Table \"${table}\" does not exist`);\n }\n\n let views = schemaConfig.views || {};\n\n // Rename fields if necessary\n let fieldRef = field => {\n if (views[table] && views[table].fields) {\n return views[table].fields[field] || field;\n }\n return field;\n };\n\n return Object.fromEntries(\n Object.keys(obj)\n .map(field => {\n // Fields that start with an underscore are ignored\n if (field[0] === '_') {\n return null;\n }\n\n let fieldDesc = tableSchema[field];\n if (fieldDesc == null) {\n throw new Error(\n `Field \"${field}\" does not exist on table ${table}: ${JSON.stringify(\n obj\n )}`\n );\n }\n\n if (isRequired(field, fieldDesc) && obj[field] == null) {\n throw new Error(\n `\"${field}\" is required for table \"${table}\": ${JSON.stringify(\n obj\n )}`\n );\n }\n\n // This option removes null values (see `convertForInsert`)\n if (skipNull && obj[field] == null) {\n return null;\n }\n\n return [fieldRef(field), convertInputType(obj[field], fieldDesc.type)];\n })\n .filter(Boolean)\n );\n}\n\nexport function convertForInsert(schema, schemaConfig, table, rawObj) {\n let obj = { ...rawObj };\n\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Error inserting: table \"${table}\" does not exist`);\n }\n\n // Inserting checks all the fields in the table and adds any default\n // values necessary\n Object.keys(tableSchema).forEach(field => {\n let fieldDesc = tableSchema[field];\n\n if (obj[field] == null) {\n if (fieldDesc.default !== undefined) {\n obj[field] =\n typeof fieldDesc.default === 'function'\n ? fieldDesc.default()\n : fieldDesc.default;\n } else if (isRequired(field, fieldDesc)) {\n // Although this check is also done in `conform`, it only\n // checks the fields in `obj`. For insert, we need to do it\n // here to check that all required fields in the table exist\n throw new Error(\n `\"${field}\" is required for table \"${table}\": ${JSON.stringify(obj)}`\n );\n }\n }\n });\n\n // We use `skipNull` to remove any null values. There's no need to\n // set those when inserting, that will be the default and it reduces\n // the amount of messages generated to sync\n return conform(schema, schemaConfig, table, obj, { skipNull: true });\n}\n\nexport function convertForUpdate(schema, schemaConfig, table, rawObj) {\n let obj = { ...rawObj };\n\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Error updating: table \"${table}\" does not exist`);\n }\n\n return conform(schema, schemaConfig, table, obj);\n}\n\nexport function convertFromSelect(schema, schemaConfig, table, obj) {\n let tableSchema = schema[table];\n if (tableSchema == null) {\n throw new Error(`Table \"${table}\" does not exist`);\n }\n\n let fields = Object.keys(tableSchema);\n let result = {};\n for (let i = 0; i < fields.length; i++) {\n let fieldName = fields[i];\n let fieldDesc = tableSchema[fieldName];\n\n result[fieldName] = convertOutputType(obj[fieldName], fieldDesc.type);\n }\n return result;\n}\n","import * as db from '../../db';\nimport { whereIn } from '../../db/util';\nimport { groupBy } from '../../../shared/util';\nimport { isAggregateQuery } from '../compiler';\nimport { convertOutputType } from '../schema-helpers';\nimport { execQuery } from '../exec';\n\n// Transactions executor\n\nexport function toGroup(parents, children, mapper = x => x) {\n return parents.reduce((list, parent) => {\n let childs = children.get(parent.id) || [];\n list.push({\n ...mapper(parent),\n subtransactions: childs.map(mapper)\n });\n return list;\n }, []);\n}\n\n// These two queries will return very different things:\n//\n// q('transactions').select({ $count: 'id' })\n// q('transactions', { splits: \"grouped\" }).select({ $count: 'id' })\n//\n// The first will return the count of non-split and child\n// transactions, and the second will return the count of all parent\n// (or non-split) transactions\n\nfunction execTransactions(state, query, sql, params, outputTypes) {\n let tableOptions = query.tableOptions || {};\n let splitType = tableOptions.splits || 'inline';\n\n if (['all', 'inline', 'none', 'grouped'].indexOf(splitType) === -1) {\n throw new Error(`Invalid \"splits\" option for transactions: \"${splitType}\"`);\n }\n\n if (splitType === 'all' || splitType === 'inline' || splitType === 'none') {\n return execTransactionsBasic(\n state,\n query,\n sql,\n params,\n splitType,\n outputTypes\n );\n } else if (splitType === 'grouped') {\n return execTransactionsGrouped(\n state,\n query,\n sql,\n params,\n splitType,\n outputTypes\n );\n }\n}\n\nfunction _isUnhappy(filter) {\n // These fields can be filtered - all split transactions will\n // still be returned regardless\n for (let key of Object.keys(filter)) {\n if (key === '$or' || key === '$and') {\n if (filter[key] && _isUnhappy(filter[key])) {\n return true;\n }\n } else if (!(key.indexOf('account') === 0 || key === 'date')) {\n return true;\n }\n }\n return false;\n}\n\nexport function isHappyPathQuery(queryState) {\n return queryState.filterExpressions.find(_isUnhappy) == null;\n}\n\nasync function execTransactionsGrouped(\n state,\n queryState,\n sql,\n params,\n splitType,\n outputTypes\n) {\n let { table: tableName, withDead } = queryState;\n let whereDead = withDead ? '' : `AND ${sql.from}.tombstone = 0`;\n\n if (isAggregateQuery(queryState)) {\n let allSql = `\n SELECT ${sql.select}\n FROM ${sql.from}\n ${sql.joins}\n ${sql.where} AND is_parent = 0 ${whereDead}\n ${sql.groupBy}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n return db.all(allSql);\n }\n\n let rows;\n let matched = null;\n\n if (isHappyPathQuery(queryState)) {\n // This is just an optimization - we can just filter out children\n // directly and only list parents\n let rowSql = `\n SELECT ${sql.from}.id as group_id\n FROM ${sql.from}\n ${sql.joins}\n ${sql.where} AND is_child = 0 ${whereDead}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n rows = await db.all(rowSql, params);\n } else {\n // TODO: phew, what a doozy. write docs why it works this way\n //\n // prettier-ignore\n let rowSql = `\n SELECT group_id, matched FROM (\n SELECT\n group_id,\n GROUP_CONCAT(id) as matched\n FROM (\n SELECT ${sql.from}.id, IFNULL(${sql.from}.parent_id, ${sql.from}.id) as group_id\n FROM ${sql.from}\n LEFT JOIN transactions _t2 ON ${sql.from}.is_child = 1 AND _t2.id = ${sql.from}.parent_id\n ${sql.joins}\n ${sql.where} AND ${sql.from}.tombstone = 0 AND IFNULL(_t2.tombstone, 0) = 0\n )\n GROUP BY group_id\n )\n LEFT JOIN ${sql.from} ON ${sql.from}.id = group_id\n ${sql.joins}\n ${sql.orderBy}\n ${sql.limit != null ? `LIMIT ${sql.limit}` : ''}\n ${sql.offset != null ? `OFFSET ${sql.offset}` : ''}\n `;\n\n rows = await db.all(rowSql, params);\n matched = new Set(\n [].concat.apply([], rows.map(row => row.matched.split(',')))\n );\n }\n\n let where = whereIn(\n rows.map(row => row.group_id),\n `IFNULL(${sql.from}.parent_id, ${sql.from}.id)`\n );\n let finalSql = `\n SELECT ${sql.select}, parent_id AS _parent_id FROM ${sql.from}\n ${sql.joins}\n WHERE ${where} ${whereDead}\n ${sql.orderBy}\n `;\n\n let start = Date.now();\n let allRows = await db.all(finalSql);\n\n // Group the parents and children up\n let { parents, children } = allRows.reduce(\n (acc, trans) => {\n let pid = trans._parent_id;\n delete trans._parent_id;\n\n if (pid == null) {\n acc.parents.push(trans);\n } else {\n let arr = acc.children.get(pid) || [];\n arr.push(trans);\n acc.children.set(pid, arr);\n }\n return acc;\n },\n { parents: [], children: new Map() }\n );\n\n let mapper = trans => {\n Object.keys(trans).forEach(name => {\n trans[name] = convertOutputType(trans[name], outputTypes.get(name));\n });\n\n if (matched && !matched.has(trans.id)) {\n trans._unmatched = true;\n }\n return trans;\n };\n\n return toGroup(parents, children, mapper);\n}\n\nasync function execTransactionsBasic(\n state,\n queryState,\n sql,\n params,\n splitType,\n outputTypes\n) {\n let s = { ...sql };\n\n if (splitType !== 'all') {\n if (splitType === 'none') {\n s.where = `${s.where} AND ${s.from}.parent_id IS NULL`;\n } else {\n s.where = `${s.where} AND ${s.from}.is_parent = 0`;\n }\n }\n\n return execQuery(queryState, state, s, params, outputTypes);\n}\n\nexport default {\n transactions: execTransactions\n};\n","function f(type, opts) {\n return { type, ...opts };\n}\n\n// This is the table schema!\n//\n// The schema itself is the public API for querying and updating data.\n// The schema config provides a lot of control over how queries are\n// constructed other metadata used by the executors. The goal is to\n// provide a simple interface to the app, but allow the backend to\n// highly optimize how queries are run.\n//\n// A few notes:\n//\n// * `transactions` is a special table and is has a highly customized\n// executor (see `executors.js`) for performace. It should mostly be\n// transparent to you, but it's worth reading the comments in there if\n// requirements change, especially regarding split transactions.\n//\n// * You should rarely change the schema and only add to it, but it is\n// relatively safe to change if needed. The only problem is changing a\n// public API, but that could be mitigated with an option in schema\n// config to map field name for backwards compatibility.\n//\n// * It's important that the table names here in the schema map to the\n// real tables in sqlite that are updated. Otherwise subscriptions\n// might not work because the dependencies are wrong. If needed in the\n// future, we can provide another option in the schema config to map a\n// table name the internal table that is updated.\n\nexport const schema = {\n transactions: {\n id: f('id'),\n is_parent: f('boolean'),\n is_child: f('boolean'),\n parent_id: f('id'),\n account: f('id', { ref: 'accounts', required: true }),\n category: f('id', { ref: 'categories' }),\n amount: f('integer', { default: 0, required: true }),\n payee: f('id', { ref: 'payees' }),\n notes: f('string'),\n date: f('date', { required: true }),\n imported_id: f('string'),\n error: f('json'),\n imported_payee: f('string'),\n starting_balance_flag: f('boolean'),\n transfer_id: f('id'),\n sort_order: f('float', { default: () => Date.now() }),\n cleared: f('boolean', { default: true }),\n tombstone: f('boolean'),\n schedule: f('id', { ref: 'schedules' })\n // subtransactions is a special field added if the table has the\n // `splits: grouped` option\n },\n payees: {\n id: f('id'),\n name: f('string', { required: true }),\n transfer_acct: f('id', { ref: 'accounts' }),\n tombstone: f('boolean')\n },\n accounts: {\n id: f('id'),\n name: f('string', { required: true }),\n // TODO: enum\n type: f('string'),\n offbudget: f('boolean'),\n closed: f('boolean'),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n categories: {\n id: f('id'),\n name: f('string'),\n is_income: f('boolean'),\n group: f('id', { ref: 'category_groups' }),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n category_groups: {\n id: f('id'),\n name: f('string'),\n is_income: f('boolean'),\n sort_order: f('float'),\n tombstone: f('boolean')\n },\n schedules: {\n id: f('id'),\n rule: f('id', { ref: 'rules', required: true }),\n next_date: f('date'),\n completed: f('boolean'),\n posts_transaction: f('boolean'),\n tombstone: f('boolean'),\n\n // These are special fields that are actually pulled from the\n // underlying rule\n _payee: f('id', { ref: 'payees' }),\n _account: f('id', { ref: 'accounts' }),\n _amount: f('json/fallback'),\n _amountOp: f('string'),\n _date: f('json/fallback'),\n _conditions: f('json'),\n _actions: f('json')\n },\n rules: {\n id: f('id'),\n stage: f('string'),\n conditions: f('json'),\n actions: f('json'),\n tombstone: f('boolean')\n },\n notes: {\n id: f('id'),\n note: f('string')\n }\n};\n\nexport const schemaConfig = {\n // Note: these views *must* represent the underlying table that we\n // are mapping here. The compiler makes optimizations with this\n // assumption\n tableViews(name, { isJoin, withDead, tableOptions = {} }) {\n switch (name) {\n case 'transactions': {\n // If joining, we always only show alive transactions. There's\n // no way to configure join behavior yet\n if (isJoin) {\n return 'v_transactions_internal_alive';\n }\n\n let splitType = tableOptions.splits || 'inline';\n // Use the view to exclude dead transactions if using `inline` or `none`\n if (!withDead && (splitType === 'inline' || splitType === 'none')) {\n return 'v_transactions_internal_alive';\n }\n\n // Otherwse we disregard the `withDead` option here and handle\n // that in the executors to improve performance\n return 'v_transactions_internal';\n }\n\n case 'schedules':\n return 'v_schedules';\n\n case 'categories':\n return 'v_categories';\n\n case 'payees':\n return 'v_payees';\n\n default:\n }\n return name;\n },\n\n customizeQuery(queryState) {\n let { table: tableName, tableOptions = {} } = queryState;\n\n function orderBy(orders) {\n // If order was specified, always add id as the last sort to make\n // it deterministic\n if (orders.length > 0) {\n return orders.concat(['id']);\n }\n\n // Otherwise, these are the default orders for each table\n switch (tableName) {\n case 'transactions':\n return [\n { date: 'desc' },\n 'starting_balance_flag',\n { sort_order: 'desc' },\n 'id'\n ];\n case 'payees':\n return [\n { $condition: { transfer_acct: null }, $dir: 'desc' },\n { $nocase: '$name' }\n ];\n case 'accounts':\n return ['sort_order', 'name'];\n case 'schedules':\n return [{ $condition: { completed: true } }, 'next_date'];\n default:\n }\n\n return [];\n }\n\n return {\n ...queryState,\n orderExpressions: orderBy(queryState.orderExpressions)\n };\n },\n\n views: {\n payees: {\n v_payees: internalFields => {\n let fields = internalFields({\n name: 'COALESCE(__accounts.name, _.name)'\n });\n\n return `\n SELECT ${fields} FROM payees _\n LEFT JOIN accounts __accounts ON (_.transfer_acct = __accounts.id AND __accounts.tombstone = 0)\n -- We never want to show transfer payees that are pointing to deleted accounts.\n -- Either this isn't a transfer payee, if the account exists\n WHERE _.transfer_acct IS NULL OR __accounts.id IS NOT NULL\n `;\n }\n },\n\n categories: {\n fields: {\n group: 'cat_group'\n },\n\n v_categories: internalFields => {\n let fields = internalFields({ group: 'cat_group' });\n return `SELECT ${fields} FROM categories _`;\n }\n },\n\n schedules: {\n v_schedules: internalFields => {\n let fields = internalFields({\n next_date: `\n CASE\n WHEN _nd.local_next_date_ts = _nd.base_next_date_ts THEN _nd.local_next_date\n ELSE _nd.base_next_date\n END\n `,\n _payee: `pm.targetId`,\n _account: `json_extract(_rules.conditions, _paths.account || '.value')`,\n _amount: `json_extract(_rules.conditions, _paths.amount || '.value')`,\n _amountOp: `json_extract(_rules.conditions, _paths.amount || '.op')`,\n _date: `json_extract(_rules.conditions, _paths.date || '.value')`,\n _conditions: '_rules.conditions',\n _actions: '_rules.actions'\n });\n\n return `\n SELECT ${fields} FROM schedules _\n LEFT JOIN schedules_next_date _nd ON _nd.schedule_id = _.id\n LEFT JOIN schedules_json_paths _paths ON _paths.schedule_id = _.id\n LEFT JOIN rules _rules ON _rules.id = _.rule\n LEFT JOIN payee_mapping pm ON pm.id = json_extract(_rules.conditions, _paths.payee || '.value')\n `;\n }\n },\n\n transactions: {\n fields: {\n is_parent: 'isParent',\n is_child: 'isChild',\n account: 'acct',\n imported_id: 'financial_id',\n imported_payee: 'imported_description',\n transfer_id: 'transferred_id',\n payee: 'description'\n },\n\n v_transactions_internal: internalFields => {\n // Override some fields to make custom stuff\n let fields = internalFields({\n payee: 'pm.targetId',\n category: `CASE WHEN _.isParent = 1 THEN NULL ELSE cm.transferId END`,\n amount: `IFNULL(_.amount, 0)`,\n parent_id: 'CASE WHEN _.isChild = 0 THEN NULL ELSE _.parent_id END'\n });\n\n return `\n SELECT ${fields} FROM transactions _\n LEFT JOIN category_mapping cm ON cm.id = _.category\n LEFT JOIN payee_mapping pm ON pm.id = _.description\n WHERE\n _.date IS NOT NULL AND\n _.acct IS NOT NULL AND\n (_.isChild = 0 OR _.parent_id IS NOT NULL)\n `;\n },\n\n // We join on t2 to only include valid child transactions. We\n // want to only include ones with valid parents, which is when\n // an alive parent transaction exists\n v_transactions_internal_alive: `\n SELECT _.* FROM v_transactions_internal _\n LEFT JOIN transactions t2 ON (_.is_child = 1 AND t2.id = _.parent_id)\n WHERE IFNULL(_.tombstone, 0) = 0 AND (_.is_child = 0 OR t2.tombstone = 0)\n `,\n\n v_transactions: (_, publicFields) => {\n let fields = publicFields({\n payee: 'p.id',\n category: 'c.id',\n account: 'a.id'\n });\n\n // This adds an order, and also validates any id references by\n // selecting the ids through a join which return null if they\n // are dead\n return `\n SELECT ${fields} FROM v_transactions_internal_alive _\n LEFT JOIN payees p ON (p.id = _.payee AND p.tombstone = 0)\n LEFT JOIN categories c ON (c.id = _.category AND c.tombstone = 0)\n LEFT JOIN accounts a ON (a.id = _.account AND a.tombstone = 0)\n ORDER BY _.date desc, _.starting_balance_flag, _.sort_order desc, _.id;\n `;\n }\n }\n }\n};\n","import { schema, schemaConfig } from './index';\nimport schemaExecutors from './executors';\nimport {\n runQuery as _runQuery,\n runCompiledQuery as _runCompiledQuery\n} from '../exec';\nimport { Query } from '../../../shared/query';\n\nexport function runCompiledQuery(query, sqlPieces, state, params) {\n return _runCompiledQuery(query, sqlPieces, state, {\n params,\n executors: schemaExecutors\n });\n}\n\nexport function runQuery(query, params) {\n if (query instanceof Query) {\n query = query.serialize();\n }\n\n return _runQuery(schema, schemaConfig, query, {\n params,\n executors: schemaExecutors\n });\n}\n","import { quoteAlias } from './compiler';\n\nfunction selectFields(fields) {\n return Object.keys(fields)\n .map(as => {\n let field = fields[as];\n let needsAs = field !== as;\n // If it's just an identifier, we automatically prefix it with\n // `_.` which makes sure it references the root table\n if (!field.match(/[ .]/)) {\n field = `_.${field}`;\n }\n return needsAs ? `${field} AS ${quoteAlias(as)}` : `${field}`;\n })\n .join(', ');\n}\n\nexport function makeViews(schema, schemaConfig) {\n let views = schemaConfig.views;\n let viewStrs = [];\n\n Object.keys(views).forEach(table => {\n let { fields: fieldMappings = {}, ...tableViews } = views[table];\n\n let publicFields = Object.fromEntries(\n Object.keys(schema[table]).map(name => [name, name])\n );\n let internalFields = { ...publicFields, ...fieldMappings };\n\n Object.keys(tableViews).forEach(viewName => {\n let publicMaker = overrides => {\n let fields = { ...publicFields, ...overrides };\n return selectFields(fields);\n };\n let internalMaker = overrides => {\n let fields = { ...internalFields, ...overrides };\n return selectFields(fields);\n };\n\n let sql;\n if (typeof tableViews[viewName] === 'function') {\n sql = tableViews[viewName](internalMaker, publicMaker);\n } else {\n sql = tableViews[viewName];\n }\n sql = sql.trim().replace(/;$/, '');\n\n viewStrs.push(`\n DROP VIEW IF EXISTS ${viewName};\n CREATE VIEW ${viewName} AS ${sql};\n `);\n });\n });\n\n return viewStrs.join('\\n');\n}\n","import fs from '../platform/server/fs';\nimport * as monthUtils from '../shared/months';\nimport * as sqlite from '../platform/server/sqlite';\nimport * as prefs from './prefs';\nimport * as cloudStorage from './cloud-storage';\nconst connection = require('../platform/server/connection');\nconst uuid = require('../platform/uuid');\nconst dateFns = require('date-fns');\n\n// A special backup that represents the latest version of the db that\n// can be reverted to after loading a backup\nconst LATEST_BACKUP_FILENAME = 'db.latest.sqlite';\nlet serviceInterval = null;\n\nexport async function getBackups(id) {\n const budgetDir = fs.getBudgetDir(id);\n const backupDir = fs.join(budgetDir, 'backups');\n\n let paths = [];\n if (await fs.exists(backupDir)) {\n paths = await fs.listDir(backupDir);\n paths = paths.filter(file => file.match(/\\.sqlite$/));\n }\n\n const backups = await Promise.all(\n paths.map(async path => {\n const mtime = await fs.getModifiedTime(fs.join(backupDir, path));\n return {\n id: path,\n date: new Date(mtime)\n };\n })\n );\n\n backups.sort((b1, b2) => {\n if (b1.date < b2.date) {\n return 1;\n } else if (b1.date > b2.date) {\n return -1;\n }\n return 0;\n });\n\n return backups;\n}\n\nexport async function getLatestBackup(id) {\n const budgetDir = fs.getBudgetDir(id);\n if (await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME))) {\n return {\n id: LATEST_BACKUP_FILENAME,\n date: null,\n isLatest: true\n };\n }\n return null;\n}\n\nexport async function getAvailableBackups(id) {\n let backups = await getBackups(id);\n\n let latestBackup = await getLatestBackup(id);\n if (latestBackup) {\n backups.unshift(latestBackup);\n }\n\n backups = backups.map(backup => ({\n ...backup,\n date: backup.date ? dateFns.format(backup.date, 'yyyy-MM-dd h:mm') : null\n }));\n\n return backups;\n}\n\nexport async function updateBackups(backups) {\n const byDay = backups.reduce((groups, backup) => {\n const day = dateFns.format(backup.date, 'yyyy-MM-dd');\n groups[day] = groups[day] || [];\n groups[day].push(backup);\n return groups;\n }, {});\n\n const removed = [];\n for (let day of Object.keys(byDay)) {\n const dayBackups = byDay[day];\n const isToday = day === monthUtils.currentDay();\n // Allow 3 backups of the current day (so fine-grained edits are\n // kept around). Otherwise only keep around one backup per day.\n // And only keep a total of 10 backups.\n for (let backup of dayBackups.slice(isToday ? 3 : 1)) {\n removed.push(backup.id);\n }\n }\n\n // Get the list of remaining backups and only keep the latest 10\n const currentBackups = backups.filter(backup => !removed.includes(backup.id));\n return removed.concat(currentBackups.slice(10).map(backup => backup.id));\n}\n\nexport async function makeBackup(id) {\n const budgetDir = fs.getBudgetDir(id);\n\n // When making a backup, we no longer consider the user to be\n // viewing any backups. If there exists a \"latest backup\" we should\n // delete it and consider whatever is current as the latest\n if (await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME))) {\n await fs.removeFile(fs.join(fs.getBudgetDir(id), LATEST_BACKUP_FILENAME));\n }\n\n let backupId = `${uuid.v4Sync()}.sqlite`;\n let backupPath = fs.join(budgetDir, 'backups', backupId);\n\n if (!(await fs.exists(fs.join(budgetDir, 'backups')))) {\n await fs.mkdir(fs.join(budgetDir, 'backups'));\n }\n\n await fs.copyFile(fs.join(budgetDir, 'db.sqlite'), backupPath);\n\n // Remove all the messages from the backup\n const db = sqlite.openDatabase(backupPath);\n await sqlite.runQuery(db, 'DELETE FROM messages_crdt');\n await sqlite.runQuery(db, 'DELETE FROM messages_clock');\n sqlite.closeDatabase(db);\n\n const toRemove = await updateBackups(await getBackups(id));\n for (let id of toRemove) {\n await fs.removeFile(fs.join(budgetDir, 'backups', id));\n }\n\n connection.send('backups-updated', await getAvailableBackups(id));\n}\n\nexport async function loadBackup(id, backupId) {\n const budgetDir = fs.getBudgetDir(id);\n\n if (!(await fs.exists(fs.join(budgetDir, LATEST_BACKUP_FILENAME)))) {\n // If this is the first time we're loading a backup, save the\n // current version so the user can easily revert back to it\n await fs.copyFile(\n fs.join(budgetDir, 'db.sqlite'),\n fs.join(budgetDir, LATEST_BACKUP_FILENAME)\n );\n\n await fs.copyFile(\n fs.join(budgetDir, 'metadata.json'),\n fs.join(budgetDir, 'metadata.latest.json')\n );\n\n // Restart the backup service to make sure the user has the full\n // amount of time to figure out which one they want\n stopBackupService();\n startBackupService(id);\n\n await prefs.loadPrefs(id);\n }\n\n if (backupId === LATEST_BACKUP_FILENAME) {\n console.log('Reverting backup');\n\n // If reverting back to the latest, copy and delete the latest\n // backup\n await fs.copyFile(\n fs.join(budgetDir, LATEST_BACKUP_FILENAME),\n fs.join(budgetDir, 'db.sqlite')\n );\n await fs.copyFile(\n fs.join(budgetDir, 'metadata.latest.json'),\n fs.join(budgetDir, 'metadata.json')\n );\n await fs.removeFile(fs.join(budgetDir, LATEST_BACKUP_FILENAME));\n await fs.removeFile(fs.join(budgetDir, 'metadata.latest.json'));\n\n // Re-upload the new file\n try {\n await cloudStorage.upload();\n } catch (e) {}\n prefs.unloadPrefs();\n } else {\n console.log('Loading backup', backupId);\n\n // This function is only ever called when a budget isn't loaded,\n // so it's safe to load our prefs in. We need to forget about any\n // syncing data if we are loading a backup (the current sync data\n // will be restored if the user reverts to the original version)\n await prefs.loadPrefs(id);\n await prefs.savePrefs({\n groupId: null,\n lastSyncedTimestamp: null,\n lastUploaded: null\n });\n\n // Re-upload the new file\n try {\n await cloudStorage.upload();\n } catch (e) {}\n\n prefs.unloadPrefs();\n\n await fs.copyFile(\n fs.join(budgetDir, 'backups', backupId),\n fs.join(budgetDir, 'db.sqlite')\n );\n }\n}\n\nexport function startBackupService(id) {\n if (serviceInterval) {\n clearInterval(serviceInterval);\n }\n\n // Make a backup every 15 minutes\n serviceInterval = setInterval(async () => {\n console.log('Making backup');\n await makeBackup(id);\n }, 1000 * 60 * 15);\n}\n\nexport function stopBackupService() {\n clearInterval(serviceInterval);\n serviceInterval = null;\n}\n","import * as monthUtils from '../../shared/months';\nimport * as db from '../db';\nimport { batchMessages } from '../sync';\nimport { groupBySingle } from '../../shared/util';\nimport * as prefs from '../prefs';\nimport * as sheet from '../sheet';\n\nasync function getSheetValue(sheetName, cell) {\n const node = await sheet.getCell(sheetName, cell);\n return typeof node.value === 'number' ? node.value : 0;\n}\n\n// We want to only allow the positive movement of money back and\n// forth. buffered should never be allowed to go into the negative,\n// and you shouldn't be allowed to pull non-existant money from\n// leftover.\nfunction calcBufferedAmount(toBudget, buffered, amount) {\n amount = Math.min(Math.max(amount, -buffered), Math.max(toBudget, 0));\n return buffered + amount;\n}\n\nfunction getBudgetTable() {\n let { budgetType } = prefs.getPrefs() || {};\n return budgetType === 'report' ? 'reflect_budgets' : 'zero_budgets';\n}\n\nfunction isReflectBudget() {\n let { budgetType } = prefs.getPrefs();\n return budgetType === 'report';\n}\n\nfunction isZeroBudget() {\n let { budgetType } = prefs.getPrefs();\n return budgetType === 'rollover';\n}\n\nfunction dbMonth(month) {\n return parseInt(month.replace('-', ''));\n}\n\nfunction getBudgetData(table, month) {\n return db.all(\n `\n SELECT b.*, c.is_income FROM v_categories c\n LEFT JOIN ${table} b ON b.category = c.id\n WHERE c.tombstone = 0 AND b.month = ?\n `,\n [month]\n );\n}\n\nfunction getAllMonths(startMonth) {\n let { createdMonths } = sheet.get().meta();\n let latest = null;\n for (let month of createdMonths) {\n if (latest == null || month > latest) {\n latest = month;\n }\n }\n return monthUtils.rangeInclusive(startMonth, latest);\n}\n\n// TODO: Valid month format in all the functions below\n\nexport function getBudget({ category, month }) {\n let table = getBudgetTable();\n let existing = db.firstSync(\n `SELECT * FROM ${table} WHERE month = ? AND category = ?`,\n [dbMonth(month), category]\n );\n return existing ? existing.amount || 0 : 0;\n}\n\nexport function setBudget({ category, month, amount }) {\n if (typeof amount !== 'number') {\n amount = 0;\n }\n const table = getBudgetTable();\n\n let existing = db.firstSync(\n `SELECT id FROM ${table} WHERE month = ? AND category = ?`,\n [dbMonth(month), category]\n );\n if (existing) {\n return db.update(table, { id: existing.id, amount });\n }\n return db.insert(table, {\n id: `${dbMonth(month)}-${category}`,\n month: dbMonth(month),\n category,\n amount\n });\n}\n\nexport function setBuffer(month, amount) {\n let existing = db.firstSync(\n `SELECT id FROM zero_budget_months WHERE id = ?`,\n [month]\n );\n if (existing) {\n return db.update('zero_budget_months', {\n id: existing.id,\n buffered: amount\n });\n }\n return db.insert('zero_budget_months', { id: month, buffered: amount });\n}\n\nfunction setCarryover(table, category, month, flag) {\n let existing = db.firstSync(\n `SELECT id FROM ${table} WHERE month = ? AND category = ?`,\n [month, category]\n );\n if (existing) {\n return db.update(table, { id: existing.id, carryover: flag ? 1 : 0 });\n }\n return db.insert(table, {\n id: `${month}-${category}`,\n month,\n category,\n carryover: flag ? 1 : 0\n });\n}\n\n// Actions\n\nexport async function copyPreviousMonth({ month }) {\n let prevMonth = dbMonth(monthUtils.prevMonth(month));\n let table = getBudgetTable();\n let budgetData = await getBudgetData(table, prevMonth);\n\n await batchMessages(() => {\n budgetData.forEach(prevBudget => {\n if (prevBudget.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({\n category: prevBudget.category,\n month,\n amount: prevBudget.amount\n });\n });\n });\n}\n\nexport async function setZero({ month }) {\n let categories = await db.all(\n 'SELECT * FROM v_categories WHERE tombstone = 0'\n );\n\n await batchMessages(() => {\n categories.forEach(cat => {\n if (cat.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({ category: cat.id, month, amount: 0 });\n });\n });\n}\n\nexport async function set3MonthAvg({ month }) {\n let categories = await db.all(\n 'SELECT * FROM v_categories WHERE tombstone = 0'\n );\n\n let prevMonth1 = monthUtils.prevMonth(month);\n let prevMonth2 = monthUtils.prevMonth(prevMonth1);\n let prevMonth3 = monthUtils.prevMonth(prevMonth2);\n\n await batchMessages(async () => {\n for (let cat of categories) {\n if (cat.is_income === 1 && !isReflectBudget()) {\n continue;\n }\n\n let spent1 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth1),\n 'sum-amount-' + cat.id\n );\n let spent2 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth2),\n 'sum-amount-' + cat.id\n );\n let spent3 = await getSheetValue(\n monthUtils.sheetForMonth(prevMonth3),\n 'sum-amount-' + cat.id\n );\n\n const avg = ((spent1 + spent2 + spent3) / 3) | 0;\n setBudget({ category: cat.id, month, amount: -avg });\n }\n });\n}\n\nexport async function setAllFuture({ startMonth }) {\n if (!isReflectBudget()) {\n throw new Error('setAllFuture only applies to report budget type');\n }\n let table = getBudgetTable();\n let budgetData = await getBudgetData(table, dbMonth(startMonth));\n let months = getAllMonths(monthUtils.addMonths(startMonth, 1));\n\n batchMessages(() => {\n for (let month of months) {\n budgetData.forEach(budget => {\n if (budget.is_income === 1 && !isReflectBudget()) {\n return;\n }\n setBudget({ category: budget.category, month, amount: budget.amount });\n });\n }\n });\n}\n\nexport async function holdForNextMonth({ month, amount }) {\n let row = await db.first(\n 'SELECT buffered FROM zero_budget_months WHERE id = ?',\n [month]\n );\n\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudget = await getSheetValue(sheetName, 'to-budget');\n\n if (toBudget > 0) {\n let bufferedAmount = calcBufferedAmount(\n toBudget,\n (row && row.buffered) || 0,\n amount\n );\n\n await setBuffer(month, bufferedAmount);\n return true;\n }\n return false;\n}\n\nexport async function holdForFutureMonths({ startMonth, amount }) {\n let months = getAllMonths(startMonth);\n\n await batchMessages(async () => {\n for (let month of months) {\n if (!(await holdForNextMonth({ month, amount }))) {\n break;\n }\n }\n });\n}\n\nexport async function resetHold({ month }) {\n await setBuffer(month, 0);\n}\n\nexport async function coverOverspending({ month, to, from }) {\n let sheetName = monthUtils.sheetForMonth(month);\n let toBudgeted = await getSheetValue(sheetName, 'budget-' + to);\n let leftover = await getSheetValue(sheetName, 'leftover-' + to);\n let leftoverFrom = await getSheetValue(\n sheetName,\n from === 'to-be-budgeted' ? 'to-budget' : 'leftover-' + from\n );\n\n if (leftover >= 0 || leftoverFrom <= 0) {\n return;\n }\n\n let amountCovered = Math.min(-leftover, leftoverFrom);\n\n // If we are covering it from the to be budgeted amount, ignore this\n if (from !== 'to-be-budgeted') {\n const fromBudgeted = await getSheetValue(sheetName, 'budget-' + from);\n await setBudget({\n category: from,\n month,\n amount: fromBudgeted - amountCovered\n });\n }\n\n await setBudget({ category: to, month, amount: toBudgeted + amountCovered });\n}\n\nexport async function transferAvailable({ month, amount, category }) {\n let sheetName = monthUtils.sheetForMonth(month);\n let leftover = await getSheetValue(sheetName, 'to-budget');\n amount = Math.max(Math.min(amount, leftover), 0);\n\n let budgeted = await getSheetValue(sheetName, 'budget-' + category);\n await setBudget({ category, month, amount: budgeted + amount });\n}\n\nexport async function transferCategory({ month, amount, from, to }) {\n const sheetName = monthUtils.sheetForMonth(month);\n const fromBudgeted = await getSheetValue(sheetName, 'budget-' + from);\n\n await setBudget({ category: from, month, amount: fromBudgeted - amount });\n\n // If we are simply moving it back into available cash to budget,\n // don't do anything else\n if (to !== 'to-be-budgeted') {\n const toBudgeted = await getSheetValue(sheetName, 'budget-' + to);\n await setBudget({ category: to, month, amount: toBudgeted + amount });\n }\n}\n\nexport async function setCategoryCarryover({ startMonth, category, flag }) {\n let table = getBudgetTable();\n let months = getAllMonths(startMonth);\n\n await batchMessages(() => {\n for (let month of months) {\n setCarryover(table, category, dbMonth(month), flag);\n }\n });\n}\n","import { createApp } from '../app';\nimport { mutator } from '../mutators';\nimport { undoable } from '../undo';\nimport * as actions from './actions';\n\n\nlet app = createApp();\n\napp.method('budget/budget-amount', mutator(undoable(actions.setBudget)));\napp.method(\n 'budget/copy-previous-month',\n mutator(undoable(actions.copyPreviousMonth))\n);\napp.method('budget/set-zero', mutator(undoable(actions.setZero)));\napp.method('budget/set-3month-avg', mutator(undoable(actions.set3MonthAvg)));\napp.method('budget/set-all-future', mutator(undoable(actions.setAllFuture)));\napp.method(\n 'budget/hold-for-next-month',\n mutator(undoable(actions.holdForNextMonth))\n);\napp.method(\n 'budget/hold-for-future-months',\n mutator(undoable(actions.holdForFutureMonths))\n);\napp.method('budget/reset-hold', mutator(undoable(actions.resetHold)));\napp.method(\n 'budget/cover-overspending',\n mutator(undoable(actions.coverOverspending))\n);\napp.method(\n 'budget/transfer-available',\n mutator(undoable(actions.transferAvailable))\n);\napp.method(\n 'budget/transfer-category',\n mutator(undoable(actions.transferCategory))\n);\napp.method(\n 'budget/set-carryover',\n mutator(undoable(actions.setCategoryCarryover))\n);\n\nexport default app;\n","import * as sheet from '../sheet';\nimport * as db from '../db';\nimport * as monthUtils from '../../shared/months';\nimport { getChangedValues } from '../../shared/util';\nimport { resolveName } from '../spreadsheet/util';\nimport * as report from './report';\nimport * as rollover from './rollover';\nimport { sumAmounts } from './util';\nimport * as budgetActions from '../budget/actions';\n\nfunction mergeUpdates(updates) {\n const merged = {};\n updates.forEach(update => {\n Object.keys(update).forEach(sheet => {\n if (merged[sheet]) {\n merged[sheet] = { ...merged[sheet], ...update[sheet] };\n } else {\n merged[sheet] = update[sheet];\n }\n });\n });\n return merged;\n}\n\nexport function getBudgetType() {\n let meta = sheet.get().meta();\n return meta.budgetType || 'rollover';\n}\n\nexport function getBudgetRange(start, end) {\n start = monthUtils.getMonth(start);\n end = monthUtils.getMonth(end);\n\n // The start date should never be after the end date. If that\n // happened, the month range might be a valid range and weird\n // things happen\n if (start > end) {\n start = end;\n }\n\n // Budgets should exist 3 months before the earliest needed date\n // (either the oldest transaction or the current month if no\n // transactions yet), and a year from the current date. There's no\n // need to ever have budgets outside that range.\n start = monthUtils.subMonths(start, 3);\n end = monthUtils.addMonths(end, 12);\n\n return { start, end, range: monthUtils.rangeInclusive(start, end) };\n}\n\nfunction createCategory(cat, sheetName, prevSheetName, start, end) {\n sheet.get().createDynamic(sheetName, 'sum-amount-' + cat.id, {\n initialValue: 0,\n run: () => {\n // Making this sync is faster!\n let rows = db.runQuery(\n `SELECT SUM(amount) as amount FROM v_transactions_internal_alive t\n LEFT JOIN accounts a ON a.id = t.account\n WHERE t.date >= ${start} AND t.date <= ${end}\n AND category = '${cat.id}' AND a.offbudget = 0`,\n [],\n true\n );\n let row = rows[0];\n let amount = row ? row.amount : 0;\n return amount || 0;\n }\n });\n\n if (getBudgetType() === 'rollover') {\n rollover.createCategory(cat, sheetName, prevSheetName);\n } else {\n report.createCategory(cat, sheetName, prevSheetName);\n }\n}\n\nfunction createCategoryGroup(group, sheetName) {\n sheet.get().createDynamic(sheetName, 'group-sum-amount-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `sum-amount-${cat.id}`),\n run: sumAmounts\n });\n\n if (!group.is_income || getBudgetType() !== 'rollover') {\n sheet.get().createDynamic(sheetName, 'group-budget-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `budget-${cat.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'group-leftover-' + group.id, {\n initialValue: 0,\n dependencies: group.categories.map(cat => `leftover-${cat.id}`),\n run: sumAmounts\n });\n }\n}\n\nfunction handleAccountChange(months, oldValue, newValue) {\n if (!oldValue || oldValue.offbudget !== newValue.offbudget) {\n let rows = db.runQuery(\n `\n SELECT DISTINCT(category) as category FROM transactions\n WHERE acct = ?\n `,\n [newValue.id],\n true\n );\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n\n rows.forEach(row => {\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + row.category));\n });\n });\n }\n}\n\nfunction handleTransactionChange(transaction, changedFields) {\n if (\n (changedFields.has('date') ||\n changedFields.has('acct') ||\n changedFields.has('amount') ||\n changedFields.has('category') ||\n changedFields.has('tombstone') ||\n changedFields.has('isParent')) &&\n transaction.date &&\n transaction.category\n ) {\n let month = monthUtils.monthFromDate(db.fromDateRepr(transaction.date));\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + transaction.category));\n }\n}\n\nfunction handleCategoryMappingChange(months, oldValue, newValue) {\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, getBudgetType());\n if (oldValue) {\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + oldValue.transferId));\n }\n sheet\n .get()\n .recompute(resolveName(sheetName, 'sum-amount-' + newValue.transferId));\n });\n}\n\nfunction handleCategoryChange(months, oldValue, newValue) {\n function addDeps(sheetName, groupId, catId) {\n sheet\n .get()\n .addDependencies(sheetName, `group-sum-amount-${groupId}`, [\n `sum-amount-${catId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, `group-budget-${groupId}`, [\n `budget-${catId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, `group-leftover-${groupId}`, [\n `leftover-${catId}`\n ]);\n }\n\n function removeDeps(sheetName, groupId, catId) {\n sheet\n .get()\n .removeDependencies(sheetName, `group-sum-amount-${groupId}`, [\n `sum-amount-${catId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, `group-budget-${groupId}`, [\n `budget-${catId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, `group-leftover-${groupId}`, [\n `leftover-${catId}`\n ]);\n }\n\n let budgetType = getBudgetType();\n\n if (oldValue && oldValue.tombstone === 0 && newValue.tombstone === 1) {\n let id = newValue.id;\n let groupId = newValue.cat_group;\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month);\n removeDeps(sheetName, groupId, id);\n });\n } else if (\n newValue.tombstone === 0 &&\n (!oldValue || oldValue.tombstone === 1)\n ) {\n if (budgetType === 'rollover') {\n rollover.createBlankCategory(newValue, months);\n }\n\n months.forEach(month => {\n let prevMonth = monthUtils.prevMonth(month);\n let prevSheetName = monthUtils.sheetForMonth(prevMonth, budgetType);\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n let { start, end } = monthUtils.bounds(month);\n\n createCategory(newValue, sheetName, prevSheetName, start, end);\n\n let id = newValue.id;\n let groupId = newValue.cat_group;\n\n if (getBudgetType() === 'rollover') {\n sheet\n .get()\n .addDependencies(sheetName, 'last-month-overspent', [\n `${prevSheetName}!leftover-${id}`,\n `${prevSheetName}!carryover-${id}`\n ]);\n }\n\n addDeps(sheetName, groupId, id);\n });\n } else if (oldValue && oldValue.cat_group !== newValue.cat_group) {\n // The category moved so we need to update the dependencies\n let id = newValue.id;\n\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n removeDeps(sheetName, oldValue.cat_group, id);\n addDeps(sheetName, newValue.cat_group, id);\n });\n }\n}\n\nfunction handleCategoryGroupChange(months, oldValue, newValue) {\n let budgetType = getBudgetType();\n\n function addDeps(sheetName, groupId) {\n sheet\n .get()\n .addDependencies(sheetName, 'total-budgeted', [\n `group-budget-${groupId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, 'total-spent', [\n `group-sum-amount-${groupId}`\n ]);\n sheet\n .get()\n .addDependencies(sheetName, 'total-leftover', [\n `group-leftover-${groupId}`\n ]);\n }\n\n function removeDeps(sheetName, groupId) {\n sheet\n .get()\n .removeDependencies(sheetName, 'total-budgeted', [\n `group-budget-${groupId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, 'total-spent', [\n `group-sum-amount-${groupId}`\n ]);\n sheet\n .get()\n .removeDependencies(sheetName, 'total-leftover', [\n `group-leftover-${groupId}`\n ]);\n }\n\n if (newValue.tombstone === 1 && oldValue && oldValue.tombstone === 0) {\n let id = newValue.id;\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n removeDeps(sheetName, id);\n });\n } else if (\n newValue.tombstone === 0 &&\n (!oldValue || oldValue.tombstone === 1)\n ) {\n let group = newValue;\n\n if (!group.is_income || budgetType !== 'rollover') {\n months.forEach(month => {\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n\n // Dirty, dirty hack. These functions should not be async, but this is\n // OK because we're leveraging the sync nature of queries. Ideally we\n // wouldn't be querying here. But I think we have to. At least for now\n // we do\n let categories = db.runQuery(\n 'SELECT * FROM categories WHERE tombstone = 0 AND cat_group = ?',\n [group.id],\n true\n );\n createCategoryGroup({ ...group, categories }, sheetName);\n\n addDeps(sheetName, group.id);\n });\n }\n }\n}\n\nfunction handleBudgetMonthChange(budget) {\n let sheetName = monthUtils.sheetForMonth(budget.id);\n sheet.get().set(`${sheetName}!buffered`, budget.buffered);\n}\n\nfunction handleBudgetChange(budget) {\n if (budget.category) {\n let sheetName = monthUtils.sheetForMonth(budget.month.toString());\n sheet\n .get()\n .set(`${sheetName}!budget-${budget.category}`, budget.amount || 0);\n sheet\n .get()\n .set(\n `${sheetName}!carryover-${budget.category}`,\n budget.carryover === 1 ? true : false\n );\n }\n}\n\nexport function triggerBudgetChanges(oldValues, newValues) {\n let { createdMonths = new Set() } = sheet.get().meta();\n sheet.startTransaction();\n\n try {\n newValues.forEach((items, table) => {\n let old = oldValues.get(table);\n\n items.forEach(newValue => {\n let oldValue = old && old.get(newValue.id);\n\n if (table === 'zero_budget_months') {\n handleBudgetMonthChange(newValue);\n } else if (table === 'zero_budgets' || table === 'reflect_budgets') {\n handleBudgetChange(newValue);\n } else if (table === 'transactions') {\n let changed = new Set(\n Object.keys(getChangedValues(oldValue || {}, newValue) || {})\n );\n\n if (oldValue) {\n handleTransactionChange(oldValue, changed);\n }\n handleTransactionChange(newValue, changed);\n } else if (table === 'category_mapping') {\n handleCategoryMappingChange(createdMonths, oldValue, newValue);\n } else if (table === 'categories') {\n handleCategoryChange(createdMonths, oldValue, newValue);\n } else if (table === 'category_groups') {\n handleCategoryGroupChange(createdMonths, oldValue, newValue);\n } else if (table === 'accounts') {\n handleAccountChange(createdMonths, oldValue, newValue);\n }\n });\n });\n } finally {\n sheet.endTransaction();\n }\n}\n\nexport async function doTransfer(categoryIds, transferId) {\n let { createdMonths: months } = sheet.get().meta();\n\n [...months].map(month => {\n let totalValue = categoryIds\n .map(id => {\n return budgetActions.getBudget({ month, category: id });\n })\n .reduce((total, value) => total + value, 0);\n\n let transferValue = budgetActions.getBudget({\n month,\n category: transferId\n });\n\n budgetActions.setBudget({\n month,\n category: transferId,\n amount: totalValue + transferValue\n });\n });\n}\n\nexport async function createBudget(months) {\n const categories = await db.getCategories();\n const groups = await db.getCategoriesGrouped();\n\n sheet.startTransaction();\n let meta = sheet.get().meta();\n meta.createdMonths = meta.createdMonths || new Set();\n\n let budgetType = getBudgetType();\n\n if (budgetType === 'rollover') {\n rollover.createBudget(meta, categories, months);\n }\n\n months.forEach(month => {\n if (!meta.createdMonths.has(month)) {\n let prevMonth = monthUtils.prevMonth(month);\n let { start, end } = monthUtils.bounds(month);\n let sheetName = monthUtils.sheetForMonth(month, budgetType);\n let prevSheetName = monthUtils.sheetForMonth(prevMonth, budgetType);\n\n categories.forEach(cat => {\n createCategory(cat, sheetName, prevSheetName, start, end);\n });\n groups.forEach(group => {\n createCategoryGroup(group, sheetName);\n });\n\n if (budgetType === 'rollover') {\n rollover.createSummary(groups, categories, prevSheetName, sheetName);\n } else {\n report.createSummary(groups, categories, sheetName);\n }\n\n meta.createdMonths.add(month);\n }\n });\n\n sheet.get().setMeta(meta);\n sheet.endTransaction();\n\n // Wait for the spreadsheet to finish computing. Normally this won't\n // do anything (as values are cached) but on first run this need to\n // show the loading screen while it initially sets up.\n await sheet.waitOnSpreadsheet();\n}\n\nexport async function createAllBudgets() {\n let earliestTransaction = await db.first(\n 'SELECT * FROM transactions WHERE isChild=0 AND date IS NOT NULL ORDER BY date ASC LIMIT 1'\n );\n let earliestDate =\n earliestTransaction && db.fromDateRepr(earliestTransaction.date);\n let currentMonth = monthUtils.currentMonth();\n\n // Get the range based off of the earliest transaction and the\n // current month. If no transactions currently exist the current\n // month is also used as the starting month\n let { start, end, range } = getBudgetRange(\n earliestDate || currentMonth,\n currentMonth\n );\n\n let meta = sheet.get().meta();\n let createdMonths = meta.createdMonths || new Set();\n let newMonths = range.filter(m => !createdMonths.has(m));\n\n if (newMonths.length > 0) {\n await createBudget(range);\n }\n\n return { start, end };\n}\n\nexport async function setType(type) {\n let meta = sheet.get().meta();\n if (type === meta.budgetType) {\n return;\n }\n\n meta.budgetType = type;\n meta.createdMonths = new Set();\n\n // Go through and force all the cells to be recomputed\n let nodes = sheet.get().getNodes();\n db.transaction(() => {\n for (let name of nodes.keys()) {\n let [sheetName, cellName] = name.split('!');\n if (sheetName.match(/^budget\\d+/)) {\n sheet.get().deleteCell(sheetName, cellName);\n }\n }\n });\n\n sheet.get().startCacheBarrier();\n sheet.loadUserBudgets(db);\n let bounds = await createAllBudgets();\n sheet.get().endCacheBarrier();\n\n return bounds;\n}\n","import * as sheet from '../sheet';\nimport * as monthUtils from '../../shared/months';\nimport { number, sumAmounts } from './util';\nconst { resolveName } = require('../spreadsheet/util');\n\nexport async function createCategory(cat, sheetName, prevSheetName) {\n sheet.get().createStatic(sheetName, `budget-${cat.id}`, 0);\n\n // This makes the app more robust by \"fixing up\" null budget values.\n // Those should not be allowed, but in case somehow a null value\n // ends up there, we are resilient to it. Preferrably the\n // spreadsheet would have types and be more strict about what is\n // allowed to be set.\n if (sheet.get().getCellValue(sheetName, `budget-${cat.id}`) == null) {\n sheet.get().set(resolveName(sheetName, `budget-${cat.id}`), 0);\n }\n\n sheet.get().createDynamic(sheetName, `leftover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`,\n `${prevSheetName}!leftover-${cat.id}`\n ],\n run: (budgeted, sumAmount, prevCarryover, prevLeftover) => {\n if (cat.is_income) {\n return (\n number(budgeted) -\n number(sumAmount) +\n (prevCarryover ? number(prevLeftover) : 0)\n );\n }\n\n return (\n number(budgeted) +\n number(sumAmount) +\n (prevCarryover ? number(prevLeftover) : 0)\n );\n }\n });\n sheet.get().createDynamic(sheetName, `spent-with-carryover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `carryover-${cat.id}`\n ],\n // TODO: Why refresh??\n refresh: true,\n run: (budgeted, sumAmount, carryover) => {\n return carryover\n ? Math.max(0, number(budgeted) + number(sumAmount))\n : sumAmount;\n }\n });\n\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n}\n\nexport function createSummary(groups, categories, sheetName) {\n let incomeGroup = groups.filter(group => group.is_income)[0];\n let expenseCategories = categories.filter(cat => !cat.is_income);\n\n sheet.get().createDynamic(sheetName, 'total-budgeted', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-budget-${group.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-spent', {\n initialValue: 0,\n refresh: true,\n dependencies: expenseCategories.map(\n cat => `${sheetName}!spent-with-carryover-${cat.id}`\n ),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-income', {\n initialValue: 0,\n dependencies: [`group-sum-amount-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'total-leftover', {\n initialValue: 0,\n dependencies: ['total-budgeted', 'total-spent'],\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-budget-income', {\n initialValue: 0,\n dependencies: [`group-budget-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'total-saved', {\n initialValue: 0,\n dependencies: ['total-budget-income', 'total-budgeted'],\n run: (income, budgeted) => {\n return income - budgeted;\n }\n });\n\n sheet.get().createDynamic(sheetName, 'real-saved', {\n initialValue: 0,\n dependencies: ['total-income', 'total-spent'],\n run: (income, spent) => {\n return income - -spent;\n }\n });\n}\n","import * as sheet from '../sheet';\nimport * as monthUtils from '../../shared/months';\nimport { number, sumAmounts, flatten2, unflatten2 } from './util';\nconst { resolveName } = require('../spreadsheet/util');\n\nfunction getBlankSheet(months) {\n let blankMonth = monthUtils.prevMonth(months[0]);\n return monthUtils.sheetForMonth(blankMonth, 'rollover');\n}\n\nexport function createBlankCategory(cat, months) {\n if (months.length > 0) {\n let sheetName = getBlankSheet(months);\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n sheet.get().createStatic(sheetName, `leftover-${cat.id}`, 0);\n sheet.get().createStatic(sheetName, `leftover-pos-${cat.id}`, 0);\n }\n}\n\nfunction createBlankMonth(categories, sheetName, months) {\n sheet.get().createStatic(sheetName, 'is-blank', true);\n sheet.get().createStatic(sheetName, 'to-budget', 0);\n sheet.get().createStatic(sheetName, 'buffered', 0);\n\n categories.forEach(cat => createBlankCategory(cat, months));\n}\n\nexport function createCategory(cat, sheetName, prevSheetName) {\n if (!cat.is_income) {\n sheet.get().createStatic(sheetName, `budget-${cat.id}`, 0);\n\n // This makes the app more robust by \"fixing up\" null budget values.\n // Those should not be allowed, but in case somehow a null value\n // ends up there, we are resilient to it. Preferrably the\n // spreadsheet would have types and be more strict about what is\n // allowed to be set.\n if (sheet.get().getCellValue(sheetName, `budget-${cat.id}`) == null) {\n sheet.get().set(resolveName(sheetName, `budget-${cat.id}`), 0);\n }\n\n sheet.get().createStatic(sheetName, `carryover-${cat.id}`, false);\n\n sheet.get().createDynamic(sheetName, `leftover-${cat.id}`, {\n initialValue: 0,\n dependencies: [\n `budget-${cat.id}`,\n `sum-amount-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`,\n `${prevSheetName}!leftover-${cat.id}`,\n `${prevSheetName}!leftover-pos-${cat.id}`\n ],\n run: (budgeted, spent, prevCarryover, prevLeftover, prevLeftoverPos) => {\n return (\n number(budgeted) +\n number(spent) +\n (prevCarryover ? number(prevLeftover) : number(prevLeftoverPos))\n );\n }\n });\n\n sheet.get().createDynamic(sheetName, 'leftover-pos-' + cat.id, {\n initialValue: 0,\n dependencies: [`leftover-${cat.id}`],\n run: leftover => {\n return leftover < 0 ? 0 : leftover;\n }\n });\n }\n}\n\nexport function createSummary(groups, categories, prevSheetName, sheetName) {\n let incomeGroup = groups.filter(group => group.is_income)[0];\n let expenseCategories = categories.filter(cat => !cat.is_income);\n\n sheet.get().createStatic(sheetName, 'buffered', 0);\n\n sheet.get().createDynamic(sheetName, 'from-last-month', {\n initialValue: 0,\n dependencies: [`${prevSheetName}!to-budget`, `${prevSheetName}!buffered`],\n run: (toBudget, buffered) => number(toBudget) + number(buffered)\n });\n\n // Alias the group income total to `total-income`\n sheet.get().createDynamic(sheetName, 'total-income', {\n initialValue: 0,\n dependencies: [`group-sum-amount-${incomeGroup.id}`],\n run: amount => amount\n });\n\n sheet.get().createDynamic(sheetName, 'available-funds', {\n initialValue: 0,\n dependencies: ['total-income', 'from-last-month'],\n run: (income, fromLastMonth) => number(income) + number(fromLastMonth)\n });\n\n sheet.get().createDynamic(sheetName, 'last-month-overspent', {\n initialValue: 0,\n dependencies: flatten2(\n expenseCategories.map(cat => [\n `${prevSheetName}!leftover-${cat.id}`,\n `${prevSheetName}!carryover-${cat.id}`\n ])\n ),\n run: (...data) => {\n data = unflatten2(data);\n return data.reduce((total, [leftover, carryover]) => {\n if (carryover) {\n return total;\n }\n return total + Math.min(0, number(leftover));\n }, 0);\n }\n });\n\n sheet.get().createDynamic(sheetName, 'total-budgeted', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-budget-${group.id}`),\n run: (...amounts) => {\n // Negate budgeted amount\n return -sumAmounts(...amounts);\n }\n });\n\n sheet.get().createDynamic(sheetName, 'buffered', { initialValue: 0 });\n\n sheet.get().createDynamic(sheetName, 'to-budget', {\n initialValue: 0,\n dependencies: [\n 'available-funds',\n 'last-month-overspent',\n 'total-budgeted',\n 'buffered'\n ],\n run: (available, lastOverspent, totalBudgeted, buffered) => {\n return (\n number(available) +\n number(lastOverspent) +\n number(totalBudgeted) -\n number(buffered)\n );\n }\n });\n\n sheet.get().createDynamic(sheetName, 'total-spent', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-sum-amount-${group.id}`),\n run: sumAmounts\n });\n\n sheet.get().createDynamic(sheetName, 'total-leftover', {\n initialValue: 0,\n dependencies: groups\n .filter(group => !group.is_income)\n .map(group => `group-leftover-${group.id}`),\n run: sumAmounts\n });\n}\n\nexport function createBudget(meta, categories, months) {\n // The spreadsheet is now strict - so we need to fill in some\n // default values for the month before the first month. Only do this\n // if it doesn't already exist\n let blankSheet = getBlankSheet(months);\n if (meta.blankSheet !== blankSheet) {\n sheet.get().clearSheet(meta.blankSheet);\n createBlankMonth(categories, blankSheet, months);\n meta.blankSheet = blankSheet;\n }\n}\n","import { number } from '../spreadsheet/globals';\n\nexport { number } from '../spreadsheet/globals';\n\nexport function sumAmounts(...amounts) {\n return amounts.reduce((total, amount) => {\n return total + number(amount);\n }, 0);\n}\n\nexport function flatten2(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n\nexport function unflatten2(arr) {\n let res = [];\n for (let i = 0; i < arr.length; i += 2) {\n res.push([arr[i], arr[i + 1]]);\n }\n return res;\n}\n\n","import fs from '../platform/server/fs';\nimport asyncStorage from '../platform/server/asyncStorage';\nimport { fetch } from '../platform/server/fetch';\nimport * as monthUtils from '../shared/months';\nimport * as sqlite from '../platform/server/sqlite';\nimport * as prefs from './prefs';\nimport { getConfig } from './config';\nimport { runMutator } from './mutators';\nimport {\n HTTPError,\n PostError,\n FileDownloadError,\n FileUploadError\n} from './errors';\nimport encryption from './encryption';\nimport { post } from './post';\nlet uuid = require('../platform/uuid');\nlet AdmZip = require('adm-zip');\n\nlet UPLOAD_FREQUENCY_IN_DAYS = 7;\n\nasync function checkHTTPStatus(res) {\n if (res.status !== 200) {\n return res.text().then(str => {\n throw new HTTPError(res.status, str);\n });\n } else {\n return res;\n }\n}\n\nasync function fetchJSON(...args) {\n let res = await fetch(...args);\n res = await checkHTTPStatus(res);\n return res.json();\n}\n\nexport async function checkKey() {\n let userToken = await asyncStorage.getItem('user-token');\n\n let { cloudFileId, encryptKeyId } = prefs.getPrefs();\n\n let res;\n try {\n res = await post(getConfig().SYNC_SERVER + '/user-get-key', {\n token: userToken,\n fileId: cloudFileId\n });\n } catch (e) {\n console.log(e);\n return { error: { reason: 'network' } };\n }\n\n // This == comparison is important, they could be null or undefined\n // eslint-disable-next-line\n return {\n valid:\n res.id == encryptKeyId && // eslint-disable-line\n (encryptKeyId == null || encryption.hasKey(encryptKeyId))\n };\n}\n\nexport async function resetSyncState(newKeyState) {\n let userToken = await asyncStorage.getItem('user-token');\n\n let { cloudFileId } = prefs.getPrefs();\n\n if (process.env.IS_BETA) {\n return { error: { reason: 'beta-version' } };\n }\n\n try {\n await post(getConfig().SYNC_SERVER + '/reset-user-file', {\n token: userToken,\n fileId: cloudFileId\n });\n } catch (e) {\n if (e instanceof PostError) {\n return {\n error: {\n reason: e.reason === 'unauthorized' ? 'unauthorized' : 'network'\n }\n };\n }\n return { error: { reason: 'internal' } };\n }\n\n if (newKeyState) {\n try {\n await post(getConfig().SYNC_SERVER + '/user-create-key', {\n token: userToken,\n fileId: cloudFileId,\n keyId: newKeyState.key.getId(),\n keySalt: newKeyState.salt,\n testContent: newKeyState.testContent\n });\n } catch (e) {\n if (e instanceof PostError) {\n return { error: { reason: 'network' } };\n }\n return { error: { reason: 'internal' } };\n }\n }\n\n return {};\n}\n\nexport async function exportBuffer() {\n let { id, budgetName } = prefs.getPrefs();\n if (!budgetName) {\n return null;\n }\n\n let budgetDir = fs.getBudgetDir(id);\n\n // create zip\n let zipped = new AdmZip();\n\n // We run this in a mutator even though its not mutating anything\n // because we are reading the sqlite file from disk. We want to make\n // sure that we get a valid snapshot of it so we want this to be\n // serialized with all other mutations.\n await runMutator(async () => {\n let rawDbContent = await fs.readFile(\n fs.join(budgetDir, 'db.sqlite'),\n 'binary'\n );\n\n // Do some post-processing of the database. We NEVER upload the cache with\n // the database; this forces new downloads to always recompute everything\n // which is not only safer, but reduces the filesize a lot.\n let memDb = await sqlite.openDatabase(rawDbContent);\n sqlite.execQuery(\n memDb,\n `\n DELETE FROM kvcache;\n DELETE FROM kvcache_key;\n `\n );\n\n let dbContent = sqlite.exportDatabase(memDb);\n sqlite.closeDatabase(memDb);\n\n // mark it as a file that needs a new clock so when a new client\n // downloads it, it'll get set to a unique node\n let meta = JSON.parse(\n await fs.readFile(fs.join(budgetDir, 'metadata.json'))\n );\n\n meta.resetClock = true;\n let metaContent = Buffer.from(JSON.stringify(meta), 'utf8');\n\n zipped.addFile('db.sqlite', dbContent);\n zipped.addFile('metadata.json', metaContent);\n });\n\n return zipped.toBuffer();\n}\n\nexport async function upload() {\n let userToken = await asyncStorage.getItem('user-token');\n if (!userToken) {\n throw FileUploadError('unauthorized');\n }\n\n // We never change the server from the beta version\n if (process.env.IS_BETA) {\n throw FileUploadError('beta-version');\n }\n\n let zipContent = await exportBuffer();\n if (zipContent == null) {\n return;\n }\n\n let { id, groupId, budgetName, cloudFileId, encryptKeyId } = prefs.getPrefs();\n let uploadContent = zipContent;\n let uploadMeta = null;\n\n // The upload process encrypts with the key tagged in the prefs for\n // the file. It will upload the file and the server is responsible\n // for checking that the key is up-to-date and rejecting it if not\n if (encryptKeyId) {\n let encrypted;\n try {\n encrypted = await encryption.encrypt(zipContent, encryptKeyId);\n } catch (e) {\n throw FileUploadError('encrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n uploadContent = encrypted.value;\n uploadMeta = encrypted.meta;\n }\n\n if (!cloudFileId) {\n cloudFileId = uuid.v4Sync();\n }\n\n let res;\n try {\n res = await fetchJSON(getConfig().SYNC_SERVER + '/upload-user-file', {\n method: 'POST',\n headers: {\n 'Content-Length': uploadContent.length,\n 'Content-Type': 'application/encrypted-file',\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': cloudFileId,\n 'X-ACTUAL-NAME': encodeURIComponent(budgetName),\n 'X-ACTUAL-FORMAT': 2,\n ...(uploadMeta\n ? { 'X-ACTUAL-ENCRYPT-META': JSON.stringify(uploadMeta) }\n : null),\n ...(groupId ? { 'X-ACTUAL-GROUP-ID': groupId } : null)\n },\n body: uploadContent\n });\n } catch (err) {\n console.log('Upload failure', err);\n\n let reason = err instanceof PostError ? err.reason : 'network';\n\n if (err instanceof PostError) {\n throw new FileUploadError(\n err.reason === 'unauthorized' ? 'unauthorized' : err.reason || 'network'\n );\n }\n\n throw FileUploadError('internal');\n }\n\n if (res.status === 'ok') {\n // Only save it if we are still working on the same file\n if (prefs.getPrefs() && prefs.getPrefs().id === id) {\n await prefs.savePrefs({\n lastUploaded: monthUtils.currentDay(),\n cloudFileId,\n groupId: res.groupId\n });\n }\n } else {\n throw FileUploadError('internal');\n }\n}\n\nexport async function possiblyUpload() {\n let { cloudFileId, groupId, lastUploaded, id } = prefs.getPrefs();\n\n let threshold =\n lastUploaded && monthUtils.addDays(lastUploaded, UPLOAD_FREQUENCY_IN_DAYS);\n let currentDay = monthUtils.currentDay();\n\n // We only want to try to upload every UPLOAD_FREQUENCY_IN_DAYS days\n if (lastUploaded && currentDay < threshold) {\n return;\n }\n\n // We only want to upload existing cloud files that are part of a\n // valid group\n if (!cloudFileId || !groupId) {\n return;\n }\n\n // Don't block on uploading\n upload().catch(err => {});\n}\n\nexport async function removeFile(fileId) {\n const [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n await post(getConfig().SYNC_SERVER + '/delete-user-file', {\n userId,\n key: userKey,\n fileId\n });\n}\n\nexport async function listRemoteFiles() {\n let userToken = await asyncStorage.getItem('user-token');\n if (!userToken) {\n return null;\n }\n\n let res;\n try {\n res = await fetchJSON(getConfig().SYNC_SERVER + '/list-user-files', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken\n }\n });\n } catch (e) {\n console.log('Error', e);\n return null;\n }\n\n if (res.status === 'error') {\n return null;\n }\n\n console.log(res.data);\n\n return res.data.map(file => ({\n ...file,\n hasKey: encryption.hasKey(file.encryptKeyId)\n }));\n}\n\nexport async function download(fileId, replace) {\n let userToken = await asyncStorage.getItem('user-token');\n\n let buffer;\n try {\n buffer = await fetch(getConfig().SYNC_SERVER + '/download-user-file', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': fileId\n }\n })\n .then(checkHTTPStatus)\n .then(res => {\n if (res.arrayBuffer) {\n return res.arrayBuffer().then(ab => Buffer.from(ab));\n }\n return res.buffer();\n });\n } catch (err) {\n console.log('Download failure', err);\n throw FileDownloadError('download-failure');\n }\n\n let res;\n try {\n res = await fetchJSON(getConfig().SYNC_SERVER + '/get-user-file-info', {\n headers: {\n 'X-ACTUAL-TOKEN': userToken,\n 'X-ACTUAL-FILE-ID': fileId\n }\n });\n } catch (err) {\n throw FileDownloadError('internal', { fileId });\n }\n\n if (res.status !== 'ok') {\n throw FileDownloadError('internal', { fileId });\n }\n let fileData = res.data;\n\n // The download process checks if the server gave us decrypt\n // information. It is assumed that this key has already been loaded\n // in, which is done in a previous step\n if (fileData.encryptMeta) {\n try {\n buffer = await encryption.decrypt(buffer, fileData.encryptMeta);\n } catch (e) {\n throw FileDownloadError('decrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n }\n\n let zipped = new AdmZip(buffer);\n let entries = zipped.getEntries();\n let dbEntry = entries.find(e => e.entryName.includes('db.sqlite'));\n let metaEntry = entries.find(e => e.entryName.includes('metadata.json'));\n\n if (!dbEntry || !metaEntry) {\n throw FileDownloadError('invalid-zip-file');\n }\n\n let dbContent = zipped.readFile(dbEntry);\n let metaContent = zipped.readFile(metaEntry);\n\n let meta;\n try {\n meta = JSON.parse(metaContent.toString('utf8'));\n } catch (err) {\n throw FileDownloadError('invalid-meta-file');\n }\n\n // Update the metadata. The stored file on the server might be\n // out-of-date with a few keys\n meta = {\n ...meta,\n cloudFileId: fileData.fileId,\n groupId: fileData.groupId,\n lastUploaded: monthUtils.currentDay(),\n encryptKeyId: fileData.encryptMeta ? fileData.encryptMeta.keyId : null\n };\n\n let budgetDir = fs.getBudgetDir(meta.id);\n\n if (await fs.exists(budgetDir)) {\n if (replace) {\n // Don't remove the directory so that backups are retained\n let dbFile = fs.join(budgetDir, 'db.sqlite');\n let metaFile = fs.join(budgetDir, 'metadata.json');\n\n if (await fs.exists(dbFile)) {\n await fs.removeFile(dbFile);\n }\n if (await fs.exists(metaFile)) {\n await fs.removeFile(metaFile);\n }\n } else {\n throw FileDownloadError('file-exists', { id: meta.id });\n }\n } else {\n await fs.mkdir(budgetDir);\n }\n\n await fs.writeFile(fs.join(budgetDir, 'db.sqlite'), dbContent);\n await fs.writeFile(fs.join(budgetDir, 'metadata.json'), JSON.stringify(meta));\n\n return { id: meta.id };\n}\n","let config = {\n SYNC_SERVER: 'https://sync.actualbudget.com/sync',\n SIGNUP_SERVER: 'https://sync.actualbudget.com/account',\n PLAID_SERVER: 'https://sync.actualbudget.com/plaid'\n};\n\nexport function setConfig(c) {\n config = c;\n}\n\nexport function getConfig() {\n return config;\n}\n","import LRU from 'lru-cache';\nimport * as sqlite from '../../platform/server/sqlite';\nimport fs from '../../platform/server/fs';\nimport { sendMessages, batchMessages } from '../sync';\nimport { schema, schemaConfig } from '../aql/schema';\nimport {\n accountModel,\n categoryModel,\n categoryGroupModel,\n payeeModel,\n payeeRuleModel\n} from '../models';\nimport { groupById } from '../../shared/util';\nimport Timestamp, {\n makeClock,\n setClock,\n serializeClock,\n deserializeClock,\n makeClientId\n} from '../timestamp';\nimport {\n convertForInsert,\n convertForUpdate,\n convertFromSelect\n} from '../aql/schema-helpers';\nimport { shoveSortOrders, SORT_INCREMENT } from './sort';\n\nexport { toDateRepr, fromDateRepr } from '../models';\n\nconst uuid = require('../../platform/uuid');\n\nlet dbPath;\nlet db;\n\n// Util\n\nexport function getDatabasePath() {\n return dbPath;\n}\n\nexport async function openDatabase(id) {\n if (db) {\n await sqlite.closeDatabase(db);\n }\n\n dbPath = fs.join(fs.getBudgetDir(id), 'db.sqlite');\n setDatabase(await sqlite.openDatabase(dbPath));\n\n // await execQuery('PRAGMA journal_mode = WAL');\n}\n\nexport async function reopenDatabase() {\n await sqlite.closeDatabase(db);\n setDatabase(await sqlite.openDatabase(dbPath));\n}\n\nexport async function closeDatabase() {\n if (db) {\n await sqlite.closeDatabase(db);\n setDatabase(null);\n }\n}\n\nexport function setDatabase(db_) {\n db = db_;\n resetQueryCache();\n}\n\nexport function getDatabase() {\n return db;\n}\n\nexport async function loadClock() {\n let row = await first('SELECT * FROM messages_clock');\n if (row) {\n let clock = deserializeClock(row.clock);\n setClock(clock);\n } else {\n // No clock exists yet (first run of the app), so create a default\n // one.\n let timestamp = new Timestamp(0, 0, makeClientId());\n let clock = makeClock(timestamp);\n setClock(clock);\n\n await runQuery('INSERT INTO messages_clock (id, clock) VALUES (?, ?)', [\n 1,\n serializeClock(clock)\n ]);\n }\n}\n\n// Functions\n\nexport function runQuery(sql, params, fetchAll) {\n // const unrecord = perf.record('sqlite');\n const result = sqlite.runQuery(db, sql, params, fetchAll);\n // unrecord();\n return result;\n}\n\nexport function execQuery(sql) {\n sqlite.execQuery(db, sql);\n}\n\n// This manages an LRU cache of prepared query statements. This is\n// only needed in hot spots when you are running lots of queries.\nlet _queryCache = new LRU({ max: 100 });\nexport function cache(sql) {\n let cached = _queryCache.get(sql);\n if (cached) {\n return cached;\n }\n\n let prepared = sqlite.prepare(db, sql);\n _queryCache.set(sql, prepared);\n return prepared;\n}\n\nfunction resetQueryCache() {\n _queryCache = new LRU({ max: 100 });\n}\n\nexport function transaction(fn) {\n return sqlite.transaction(db, fn);\n}\n\nexport function asyncTransaction(fn) {\n return sqlite.asyncTransaction(db, fn);\n}\n\n// This function is marked as async because `runQuery` is no longer\n// async. We return a promise here until we've audited all the code to\n// make sure nothing calls `.then` on this.\nexport async function all(sql, params) {\n return runQuery(sql, params, true);\n}\n\nexport async function first(sql, params) {\n const arr = await runQuery(sql, params, true);\n return arr.length === 0 ? null : arr[0];\n}\n\n// The underlying sql system is now sync, but we can't update `first` yet\n// without auditing all uses of it\nexport function firstSync(sql, params) {\n const arr = runQuery(sql, params, true);\n return arr.length === 0 ? null : arr[0];\n}\n\n// This function is marked as async because `runQuery` is no longer\n// async. We return a promise here until we've audited all the code to\n// make sure nothing calls `.then` on this.\nexport async function run(sql, params) {\n return runQuery(sql, params);\n}\n\nexport async function select(table, id) {\n const rows = await runQuery(\n 'SELECT * FROM ' + table + ' WHERE id = ?',\n [id],\n true\n );\n return rows[0];\n}\n\nexport async function update(table, params) {\n let fields = Object.keys(params).filter(k => k !== 'id');\n\n if (params.id == null) {\n throw new Error('update: id is required');\n }\n\n await sendMessages(\n fields.map(k => {\n return {\n dataset: table,\n row: params.id,\n column: k,\n value: params[k],\n timestamp: Timestamp.send()\n };\n })\n );\n}\n\nexport async function insertWithUUID(table, row) {\n if (!row.id) {\n row = { ...row, id: uuid.v4Sync() };\n }\n\n await insert(table, row);\n\n // We can't rely on the return value of insert because if the\n // primary key is text, sqlite returns the internal row id which we\n // don't care about. We want to return the generated UUID.\n return row.id;\n}\n\nexport async function insert(table, row) {\n let fields = Object.keys(row).filter(k => k !== 'id');\n\n if (row.id == null) {\n throw new Error('insert: id is required');\n }\n\n await sendMessages(\n fields.map(k => {\n return {\n dataset: table,\n row: row.id,\n column: k,\n value: row[k],\n timestamp: Timestamp.send()\n };\n })\n );\n}\n\nexport async function delete_(table, id) {\n await sendMessages([\n {\n dataset: table,\n row: id,\n column: 'tombstone',\n value: 1,\n timestamp: Timestamp.send()\n }\n ]);\n}\n\nexport async function selectWithSchema(table, sql, params) {\n let rows = await runQuery(sql, params, true);\n return rows\n .map(row => convertFromSelect(schema, schemaConfig, table, row))\n .filter(Boolean);\n}\n\nexport async function selectFirstWithSchema(table, sql, params) {\n let rows = await selectWithSchema(table, sql, params);\n return rows.length > 0 ? rows[0] : null;\n}\n\nexport function insertWithSchema(table, row) {\n // Even though `insertWithUUID` does this, we need to do it here so\n // the schema validation passes\n if (!row.id) {\n row = { ...row, id: uuid.v4Sync() };\n }\n\n return insertWithUUID(\n table,\n convertForInsert(schema, schemaConfig, table, row)\n );\n}\n\nexport function updateWithSchema(table, fields) {\n return update(table, convertForUpdate(schema, schemaConfig, table, fields));\n}\n\n// Data-specific functions. Ideally this would be split up into\n// different files\n\nexport async function getCategories() {\n return all(`\n SELECT c.* FROM categories c\n LEFT JOIN category_groups cg ON c.cat_group = cg.id\n WHERE c.tombstone = 0\n ORDER BY cg.sort_order, cg.id, c.sort_order, c.id\n `);\n}\n\nexport async function getCategoriesGrouped() {\n const groups = await all(\n 'SELECT * FROM category_groups WHERE tombstone = 0 ORDER BY is_income, sort_order, id'\n );\n const rows = await all(`\n SELECT * FROM categories WHERE tombstone = 0\n ORDER BY sort_order, id\n `);\n\n return groups.map(group => {\n return {\n ...group,\n categories: rows.filter(row => row.cat_group === group.id)\n };\n });\n}\n\nexport async function insertCategoryGroup(group) {\n const lastGroup = await first(`\n SELECT sort_order FROM category_groups WHERE tombstone = 0 ORDER BY sort_order DESC, id DESC LIMIT 1\n `);\n const sort_order = (lastGroup ? lastGroup.sort_order : 0) + SORT_INCREMENT;\n\n group = {\n ...categoryGroupModel.validate(group),\n sort_order: sort_order\n };\n return insertWithUUID('category_groups', group);\n}\n\nexport function updateCategoryGroup(group) {\n group = categoryGroupModel.validate(group, { update: true });\n return update('category_groups', group);\n}\n\nexport async function moveCategoryGroup(id, targetId) {\n const groups = await all(\n `SELECT id, sort_order FROM category_groups WHERE tombstone = 0 ORDER BY sort_order, id`\n );\n\n const { updates, sort_order } = shoveSortOrders(groups, targetId);\n for (let info of updates) {\n await update('category_groups', info);\n }\n await update('category_groups', { id, sort_order });\n}\n\nexport async function deleteCategoryGroup(group, transferId) {\n const categories = await all('SELECT * FROM categories WHERE cat_group = ?', [\n group.id\n ]);\n\n // Delete all the categories within a group\n await Promise.all(categories.map(cat => deleteCategory(cat, transferId)));\n await delete_('category_groups', group.id);\n}\n\nexport async function insertCategory(category, { atEnd } = {}) {\n let sort_order;\n\n let id_;\n await batchMessages(async () => {\n if (atEnd) {\n const lastCat = await first(`\n SELECT sort_order FROM categories WHERE tombstone = 0 ORDER BY sort_order DESC, id DESC LIMIT 1\n `);\n sort_order = (lastCat ? lastCat.sort_order : 0) + SORT_INCREMENT;\n } else {\n // Unfortunately since we insert at the beginning, we need to shove\n // the sort orders to make sure there's room for it\n const categories = await all(\n `SELECT id, sort_order FROM categories WHERE cat_group = ? AND tombstone = 0 ORDER BY sort_order, id`,\n [category.cat_group]\n );\n\n const { updates, sort_order: order } = shoveSortOrders(\n categories,\n categories.length > 0 ? categories[0].id : null\n );\n for (let info of updates) {\n await update('categories', info);\n }\n sort_order = order;\n }\n\n category = {\n ...categoryModel.validate(category),\n sort_order: sort_order\n };\n\n const id = await insertWithUUID('categories', category);\n // Create an entry in the mapping table that points it to itself\n await insert('category_mapping', { id, transferId: id });\n id_ = id;\n });\n return id_;\n}\n\nexport function updateCategory(category) {\n category = categoryModel.validate(category, { update: true });\n return update('categories', category);\n}\n\nexport async function moveCategory(id, groupId, targetId) {\n if (!groupId) {\n throw new Error('moveCategory: groupId is required');\n }\n\n const categories = await all(\n `SELECT id, sort_order FROM categories WHERE cat_group = ? AND tombstone = 0 ORDER BY sort_order, id`,\n [groupId]\n );\n\n const { updates, sort_order } = shoveSortOrders(categories, targetId);\n for (let info of updates) {\n await update('categories', info);\n }\n await update('categories', { id, sort_order, cat_group: groupId });\n}\n\nexport async function deleteCategory(category, transferId) {\n if (transferId) {\n // We need to update all the deleted categories that currently\n // point to the one we're about to delete so they all are\n // \"forwarded\" to the new transferred category.\n const existingTransfers = await all(\n 'SELECT * FROM category_mapping WHERE transferId = ?',\n [category.id]\n );\n for (let mapping of existingTransfers) {\n await update('category_mapping', { id: mapping.id, transferId });\n }\n\n // Finally, map the category we're about to delete to the new one\n await update('category_mapping', { id: category.id, transferId });\n }\n\n return delete_('categories', category.id);\n}\n\nexport async function getPayee(id) {\n return first(`SELECT * FROM payees WHERE id = ?`, [id]);\n}\n\nexport async function insertPayee(payee) {\n payee = payeeModel.validate(payee);\n let id;\n await batchMessages(async () => {\n id = await insertWithUUID('payees', payee);\n await insert('payee_mapping', { id, targetId: id });\n });\n return id;\n}\n\nexport async function deletePayee(payee) {\n let { transfer_acct } = await first('SELECT * FROM payees WHERE id = ?', [\n payee.id\n ]);\n if (transfer_acct) {\n // You should never be able to delete transfer payees\n return;\n }\n\n // let mappings = await all('SELECT id FROM payee_mapping WHERE targetId = ?', [\n // payee.id\n // ]);\n // await Promise.all(\n // mappings.map(m => update('payee_mapping', { id: m.id, targetId: null }))\n // );\n\n let rules = await all('SELECT * FROM payee_rules WHERE payee_id = ?', [\n payee.id\n ]);\n await Promise.all(rules.map(rule => deletePayeeRule({ id: rule.id })));\n return delete_('payees', payee.id);\n}\n\nexport async function deleteTransferPayee(payee) {\n // This allows deleting transfer payees\n return delete_('payees', payee.id);\n}\n\nexport function updatePayee(payee) {\n payee = payeeModel.validate(payee, { update: true });\n return update('payees', payee);\n}\n\nexport async function mergePayees(target, ids) {\n // Load in payees so we can check some stuff\n let payees = groupById(await all('SELECT * FROM payees'));\n\n // Filter out any transfer payees\n if (payees[target].transfer_acct != null) {\n return;\n }\n ids = ids.filter(id => payees[id].transfer_acct == null);\n\n await batchMessages(async () => {\n await Promise.all(\n ids.map(async id => {\n let mappings = await all(\n 'SELECT id FROM payee_mapping WHERE targetId = ?',\n [id]\n );\n await Promise.all(\n mappings.map(m =>\n update('payee_mapping', { id: m.id, targetId: target })\n )\n );\n })\n );\n\n return Promise.all(\n ids.map(id =>\n Promise.all([\n update('payee_mapping', { id, targetId: target }),\n delete_('payees', id)\n ])\n )\n );\n });\n}\n\nexport function getPayees() {\n return all(`\n SELECT p.*, COALESCE(a.name, p.name) AS name FROM payees p\n LEFT JOIN accounts a ON (p.transfer_acct = a.id AND a.tombstone = 0)\n WHERE p.tombstone = 0 AND (p.transfer_acct IS NULL OR a.id IS NOT NULL)\n ORDER BY p.transfer_acct IS NULL DESC, p.name COLLATE NOCASE\n `);\n}\n\nexport async function getOrphanedPayees() {\n let rows = await all(`\n SELECT p.id FROM payees p\n LEFT JOIN payee_mapping pm ON pm.id = p.id\n LEFT JOIN v_transactions_internal_alive t ON t.payee = pm.targetId\n WHERE p.tombstone = 0 AND p.transfer_acct IS NULL AND t.id IS NULL\n `);\n return rows.map(row => row.id);\n}\n\nexport async function getPayeeByName(name) {\n return first(`SELECT * FROM payees WHERE LOWER(name) = ? AND tombstone = 0`, [\n name.toLowerCase()\n ]);\n}\n\nexport function insertPayeeRule(rule) {\n rule = payeeRuleModel.validate(rule);\n return insertWithUUID('payee_rules', rule);\n}\n\nexport function deletePayeeRule(rule) {\n return delete_('payee_rules', rule.id);\n}\n\nexport function updatePayeeRule(rule) {\n rule = payeeModel.validate(rule, { update: true });\n return update('payee_rules', rule);\n}\n\nexport function getPayeeRules(id) {\n return all(\n `SELECT pr.* FROM payee_rules pr\n LEFT JOIN payee_mapping pm ON pm.id = pr.payee_id\n WHERE pm.targetId = ? AND pr.tombstone = 0`,\n [id]\n );\n}\n\nexport function getAccounts() {\n return all(\n `SELECT a.*, b.name as bankName, b.id as bankId FROM accounts a\n LEFT JOIN banks b ON a.bank = b.id\n WHERE a.tombstone = 0\n ORDER BY sort_order, name`\n );\n}\n\nexport async function insertAccount(account) {\n // Default to checking. Makes it a lot easier for tests and is\n // generally harmless.\n if (account.type === undefined) {\n account = { ...account, type: 'checking' };\n }\n\n const accounts = await all(\n 'SELECT * FROM accounts WHERE offbudget = ? ORDER BY sort_order, name',\n [account.offbudget != null ? account.offbudget : 0]\n );\n\n // Don't pass a target in, it will default to appending at the end\n let { sort_order } = shoveSortOrders(accounts);\n\n account = accountModel.validate({ ...account, sort_order });\n return insertWithUUID('accounts', account);\n}\n\nexport function updateAccount(account) {\n account = accountModel.validate(account, { update: true });\n return update('accounts', account);\n}\n\nexport function deleteAccount(account) {\n return delete_('accounts', account.id);\n}\n\nexport async function moveAccount(id, targetId) {\n let account = await first('SELECT * FROM accounts WHERE id = ?', [id]);\n let accounts;\n if (account.closed) {\n accounts = await all(\n `SELECT id, sort_order FROM accounts WHERE closed = 1 ORDER BY sort_order, name`\n );\n } else {\n accounts = await all(\n `SELECT id, sort_order FROM accounts WHERE tombstone = 0 AND offbudget = ? ORDER BY sort_order, name`,\n [account.offbudget]\n );\n }\n\n const { updates, sort_order } = shoveSortOrders(accounts, targetId);\n await batchMessages(() => {\n for (let info of updates) {\n update('accounts', info);\n }\n update('accounts', { id, sort_order });\n });\n}\n\nexport async function getTransaction(id) {\n let rows = await selectWithSchema(\n 'transactions',\n 'SELECT * FROM v_transactions WHERE id = ?',\n [id]\n );\n return rows[0];\n}\n\nfunction _addFragmentForAccount(accountId, addWhere, options = {}) {\n let { showClosed = false, showOffbudget = true } = options;\n\n let fragment = addWhere ? ' WHERE (' : ' AND ';\n let params = [];\n\n if (accountId) {\n if (accountId === 'offbudget') {\n fragment += 'a.closed = 0 AND a.offbudget = 1 ';\n } else if (accountId === 'budgeted') {\n fragment += 'a.closed = 0 AND a.offbudget = 0 ';\n } else if (accountId === 'uncategorized') {\n fragment += `\n t.category IS NULL AND a.offbudget = 0 AND isParent = 0 AND (\n ta.offbudget IS NULL OR ta.offbudget = 1\n )\n `;\n } else {\n fragment += 'a.id = ? ';\n params.push(accountId);\n }\n } else {\n fragment += showClosed ? '1' : 'a.closed = 0';\n\n if (!showOffbudget) {\n fragment += ' AND a.offbudget = 0';\n }\n }\n\n return { fragment, params };\n}\n\nexport async function getTransactionsByDate(\n accountId,\n startDate,\n endDate,\n options = {}\n) {\n throw new Error('`getTransactionsByDate` is deprecated');\n}\n\nexport async function getTransactions(accountId, arg2) {\n if (arg2 !== undefined) {\n throw new Error(\n '`getTransactions` was given a second argument, it now only takes a single argument `accountId`'\n );\n }\n\n return selectWithSchema(\n 'transactions',\n 'SELECT * FROM v_transactions WHERE account = ?',\n [accountId]\n );\n}\n\nexport function insertTransaction(transaction) {\n return insertWithSchema('transactions', transaction);\n}\n\nexport function updateTransaction(transaction) {\n return updateWithSchema('transactions', transaction);\n}\n\nexport async function deleteTransaction(transaction) {\n return delete_('transactions', transaction.id);\n}\n","import * as db from './index';\nimport { addSyncListener } from '../sync/index';\n\n// This file keeps all the mappings in memory so we can access it\n// synchronously. This is primarily used in the rules system, but\n// there may be other uses in the future. You don't need to worry\n// about this generally; if you are querying transactions, ids are\n// transparently mapped for you. But if you are building something\n// that stores ids and later uses them, you need to remember to map\n// the ids.\n//\n// IMPORTANT: `loadMappings` must be called first before other modules\n// that listen for sync changes. This must be the first sync listener\n// to run in case other listeners use this mapping table; otherwise\n// they might see stale mappings.\n\nlet allMappings;\nlet unlistenSync;\n\nexport async function loadMappings() {\n // The mappings are separated into tables specific to the type of\n // data. But you know, we really could keep a global mapping table.\n let categories = (await db.all('SELECT * FROM category_mapping')).map(r => [\n r.id,\n r.transferId\n ]);\n let payees = (await db.all('SELECT * FROM payee_mapping')).map(r => [\n r.id,\n r.targetId\n ]);\n\n // All ids are unique, so we can just keep a global table of mappings\n allMappings = new Map(categories.concat(payees));\n\n if (unlistenSync) {\n unlistenSync();\n }\n unlistenSync = addSyncListener(onApplySync);\n}\n\nfunction onApplySync(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table.indexOf('mapping') !== -1) {\n let field = table === 'category_mapping' ? 'transferId' : 'targetId';\n\n items.forEach(newValue => {\n allMappings.set(newValue.id, newValue[field]);\n });\n }\n });\n}\n\nexport function getMappings() {\n return allMappings;\n}\n\nexport function getMapping(id) {\n return allMappings.get(id) || null;\n}\n","export const SORT_INCREMENT = 16384;\n\nfunction midpoint(items, to) {\n const below = items[to - 1];\n const above = items[to];\n\n if (!below) {\n return above.sort_order / 2;\n } else if (!above) {\n return below.sort_order + SORT_INCREMENT;\n } else {\n return (below.sort_order + above.sort_order) / 2;\n }\n}\n\nexport function shoveSortOrders(items, targetId) {\n const to = items.findIndex(item => item.id === targetId);\n const target = items[to];\n const before = items[to - 1];\n let updates = [];\n\n // If no target is specified, append at the end\n if (!targetId || to === -1) {\n let order;\n if (items.length > 0) {\n // Add a new increment to whatever is the latest sort order\n order = items[items.length - 1].sort_order + SORT_INCREMENT;\n } else {\n // If no items exist, the default is to use the first increment\n order = SORT_INCREMENT;\n }\n\n return { updates, sort_order: order };\n } else {\n if (target.sort_order - (before ? before.sort_order : 0) <= 2) {\n let next = to;\n let order = (items[next].sort_order | 0) + SORT_INCREMENT;\n while (next < items.length) {\n // No need to update it if it's already greater than the current\n // order. This can happen because there may already be large\n // gaps\n if (order <= items[next].sort_order) {\n break;\n }\n\n updates.push({ id: items[next].id, sort_order: order });\n\n next++;\n order += SORT_INCREMENT;\n }\n }\n\n return { updates, sort_order: midpoint(items, to) };\n }\n}\n","export async function incrFetch(\n runQuery,\n terms,\n compare,\n makeQuery,\n params = []\n) {\n let pageCount = 500;\n let results = [];\n\n let fetchedIds = new Set();\n\n for (let i = 0; i < terms.length; i += pageCount) {\n let slice = terms.slice(i, i + pageCount).filter(id => !fetchedIds.has(id));\n if (slice.length > 0) {\n let filter = slice.map(id => compare(id)).join(' OR ');\n let query = makeQuery('(' + filter + ')');\n\n let rows = await runQuery(query, params, true);\n fetchedIds = new Set([...fetchedIds, ...slice]);\n results = results.concat(rows);\n }\n }\n\n return results;\n}\n\nexport function whereIn(ids, field) {\n let ids2 = [...new Set(ids)];\n let filter = `${field} IN (` + ids2.map(id => `'${id}'`).join(',') + ')';\n return filter;\n}\n","let crypto = require('crypto');\n\nlet ENCRYPTION_ALGORITHM = 'aes-256-gcm';\n\nexport async function sha256String(str) {\n return crypto\n .createHash('sha256')\n .update(str)\n .digest('base64');\n}\n\nexport function randomBytes(n) {\n return crypto.randomBytes(n);\n}\n\nexport function encrypt(masterKey, value) {\n let masterKeyBuffer = masterKey.getValue().raw;\n // let iv = createKeyBuffer({ numBytes: 12, secret: masterKeyBuffer });\n let iv = crypto.randomBytes(12);\n let cipher = crypto.createCipheriv(ENCRYPTION_ALGORITHM, masterKeyBuffer, iv);\n let encrypted = cipher.update(value);\n encrypted = Buffer.concat([encrypted, cipher.final()]);\n\n let authTag = cipher.getAuthTag();\n\n return {\n value: encrypted,\n meta: {\n keyId: masterKey.getId(),\n algorithm: ENCRYPTION_ALGORITHM,\n iv: iv.toString('base64'),\n authTag: authTag.toString('base64')\n }\n };\n}\n\nexport function decrypt(masterKey, encrypted, meta) {\n let masterKeyBuffer = masterKey.getValue().raw;\n let { algorithm, iv, authTag } = meta;\n iv = Buffer.from(iv, 'base64');\n\n authTag = Buffer.from(authTag, 'base64');\n\n let decipher = crypto.createDecipheriv(algorithm, masterKeyBuffer, iv);\n decipher.setAuthTag(authTag);\n\n let decrypted = decipher.update(encrypted);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted;\n}\n\nexport function createKey({ secret, salt }) {\n let buffer = createKeyBuffer({ secret, salt });\n return {\n raw: buffer,\n base64: buffer.toString('base64')\n };\n}\n\nexport function importKey(str) {\n return {\n raw: Buffer.from(str, 'base64'),\n base64: str\n };\n}\n\n/**\n * Generates a Buffer of a desired byte length to be used as either an encryption key or an initialization vector.\n *\n * @private\n * @param {Integer} [numBytes = 32] - Optional, number of bytes to fill the Buffer with.\n * @param {String} [secret = <random bytes>] - Optional, a secret to use as a basis for the key generation algorithm.\n * @returns {Buffer}\n */\nfunction createKeyBuffer({ numBytes, secret, salt }) {\n return crypto.pbkdf2Sync(\n secret || crypto.randomBytes(128).toString('base64'),\n salt || crypto.randomBytes(32).toString('base64'),\n 10000,\n numBytes || 32,\n 'sha512'\n );\n}\n","import * as internals from './encryption-internals';\nlet uuid = require('../platform/uuid/index.electron.js');\n\n// A map of all possible master encryption keys to use, keyed by\n// unique id\nlet keys = {};\n\nclass Key {\n constructor({ id, value }) {\n this.id = id || uuid.v4Sync();\n }\n\n async createFromPassword({ password, salt }) {\n this.value = await internals.createKey({ secret: password, salt });\n }\n\n async createFromBase64(str) {\n this.value = await internals.importKey(str);\n }\n\n getId() {\n return this.id;\n }\n\n getValue() {\n return this.value;\n }\n\n serialize() {\n return {\n id: this.id,\n base64: this.value.base64\n };\n }\n}\n\nfunction getKey(keyId) {\n if (keyId == null || keys[keyId] == null) {\n throw new Error('missing-key');\n }\n return keys[keyId];\n}\n\nfunction hasKey(keyId) {\n return keyId in keys;\n}\n\nfunction encrypt(value, keyId) {\n return internals.encrypt(getKey(keyId), value);\n}\n\nfunction decrypt(encrypted, meta) {\n return internals.decrypt(getKey(meta.keyId), encrypted, meta);\n}\n\nfunction randomBytes(n) {\n return internals.randomBytes(n);\n}\n\nasync function loadKey(key) {\n let keyInstance;\n if (!(key instanceof Key)) {\n keyInstance = new Key({ id: key.id });\n await keyInstance.createFromBase64(key.base64);\n } else {\n keyInstance = key;\n }\n\n keys[keyInstance.getId()] = keyInstance;\n}\n\nfunction unloadKey(key) {\n delete keys[key.getId()];\n}\n\nfunction unloadAllKeys() {\n keys = {};\n}\n\nasync function createKey({ id, password, salt }) {\n let key = new Key({ id });\n await key.createFromPassword({ password, salt });\n return key;\n}\n\nexport default {\n decrypt,\n encrypt,\n randomBytes,\n createKey,\n loadKey,\n getKey,\n hasKey,\n unloadKey,\n unloadAllKeys\n};\n","// TODO: normalize error types\nexport class PostError extends Error {\n constructor(reason, meta) {\n super('PostError: ' + reason);\n this.type = 'PostError';\n this.reason = reason;\n this.meta = meta;\n }\n}\n\nexport class HTTPError extends Error {\n constructor(code, body) {\n super(`HTTPError: unsuccessful status code (${code}): ${body}`);\n this.statusCode = code;\n this.responseBody = body;\n }\n}\n\nexport class SyncError extends Error {\n constructor(reason, meta) {\n super('SyncError: ' + reason);\n this.reason = reason;\n this.meta = meta;\n }\n}\n\nexport class TransactionError extends Error {\n // eslint-disable-next-line\n constructor(message) {\n super(message);\n }\n}\n\nexport class RuleError extends Error {\n constructor(type, message) {\n super('RuleError: ' + message);\n this.type = type;\n }\n}\n\nexport function APIError(msg, meta) {\n return { type: 'APIError', message: msg, meta };\n}\n\nexport function FileDownloadError(reason, meta) {\n return { type: 'FileDownloadError', reason, meta };\n}\n\nexport function FileUploadError(reason, meta) {\n return { type: 'FileUploadError', reason, meta };\n}\n\nexport function isCodeError(err) {\n return err instanceof ReferenceError || err instanceof SyntaxError;\n}\n","import { createApp } from './app';\nconst connection = require('../platform/server/connection');\n\n// Main app\nconst app = createApp();\n\napp.events.on('sync', info => {\n connection.send('sync-event', info);\n});\n\nexport default app;\n","import './polyfills';\nimport { differenceInDays } from 'date-fns';\nimport asyncStorage from '../platform/server/asyncStorage';\nimport { captureException, captureBreadcrumb } from '../platform/exceptions';\nimport * as prefs from './prefs';\nimport fs from '../platform/server/fs';\nimport * as sqlite from '../platform/server/sqlite';\nimport logger from '../platform/server/log';\nimport Platform from './platform';\nimport * as db from './db';\nimport * as sheet from './sheet';\nimport { withUndo, clearUndo, undo, redo } from './undo';\nimport { updateVersion } from './update';\nimport { Condition, Action, rankRules } from './accounts/rules';\nimport * as rules from './accounts/transaction-rules';\nimport * as mappings from './db/mappings';\nimport { batchUpdateTransactions } from './accounts/transactions';\nimport { FIELD_TYPES as ruleFieldTypes } from '../shared/rules';\nimport {\n getAvailableBackups,\n loadBackup,\n makeBackup,\n startBackupService,\n stopBackupService\n} from './backups';\nimport { amountToInteger, stringToInteger } from '../shared/util';\nimport * as monthUtils from '../shared/months';\nimport { fromPlaidAccountType } from '../shared/accounts';\nimport * as budget from './budget/base';\nimport * as bankSync from './accounts/sync';\nimport * as link from './accounts/link';\nimport { uniqueFileName, idFromFileName } from './util/budget-name';\nimport { mutator, runHandler } from './mutators';\nimport * as timestamp from './timestamp';\nimport * as merkle from './merkle';\nimport {\n initialFullSync,\n fullSync,\n batchMessages,\n setSyncingMode,\n makeTestMessage,\n clearFullSyncTimeout,\n syncAndReceiveMessages,\n resetSync,\n repairSync\n} from './sync';\nimport * as syncMigrations from './sync/migrate';\nimport { getStartingBalancePayee } from './accounts/payees';\nimport { parseFile } from './accounts/parse-file';\nimport { exportToCSV, exportQueryToCSV } from './accounts/export-to-csv';\nimport { getConfig, setConfig } from './config';\nimport installAPI from './api';\nimport injectAPI from '@actual-app/api/injected';\nimport * as cloudStorage from './cloud-storage';\nimport encryption from './encryption';\nimport * as tracking from './tracking/events';\nimport { post } from './post';\nimport { APIError, TransactionError, PostError, RuleError } from './errors';\nimport { createTestBudget } from '../mocks/budget';\nimport { runQuery as aqlQuery } from './aql/schema/run-query';\nimport { Query } from '../shared/query';\nimport q from '../shared/query';\nimport app from './main-app';\n\n// Apps\nimport schedulesApp from './schedules/app';\nimport budgetApp from './budget/app';\nimport notesApp from './notes/app';\nimport toolsApp from './tools/app';\n\nconst YNAB4 = require('@actual-app/import-ynab4/importer');\nconst YNAB5 = require('@actual-app/import-ynab5/importer');\nconst uuid = require('../platform/uuid');\nconst connection = require('../platform/server/connection');\nconst { resolveName, unresolveName } = require('./spreadsheet/util');\nconst SyncPb = require('./sync/proto/sync_pb');\n\n// let indexeddb = require('../platform/server/indexeddb');\n\nlet VERSION;\nlet DEMO_BUDGET_ID = '_demo-budget';\nlet TEST_BUDGET_ID = '_test-budget';\n\n// util\n\nfunction onSheetChange({ names }) {\n const nodes = names.map(name => {\n let node = sheet.get()._getNode(name);\n return { name: node.name, value: node.value };\n });\n connection.send('cells-changed', nodes);\n}\n\nfunction joinURL(base, ...paths) {\n let url = new URL(base);\n url.pathname = fs.join(paths);\n return url.toString();\n}\n\n// handlers\n\nexport let handlers = {};\n\nhandlers['undo'] = mutator(async function() {\n return undo();\n});\n\nhandlers['redo'] = mutator(function() {\n return redo();\n});\n\nhandlers['transactions-batch-update'] = mutator(async function({\n added,\n deleted,\n updated,\n learnCategories\n}) {\n return withUndo(async () => {\n let result = await batchUpdateTransactions({\n added,\n updated,\n deleted,\n learnCategories\n });\n\n // Return all data updates to the frontend\n return result.updated;\n });\n});\n\nhandlers['transaction-add'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ added: [transaction] });\n return {};\n});\n\nhandlers['transaction-update'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ updated: [transaction] });\n return {};\n});\n\nhandlers['transaction-delete'] = mutator(async function(transaction) {\n await handlers['transactions-batch-update']({ deleted: [transaction] });\n return {};\n});\n\nhandlers['transactions-filter'] = async function({\n term,\n accountId,\n latestDate,\n count,\n notPaged,\n options = {}\n}) {\n return db.getTransactions(\n term,\n accountId,\n latestDate,\n notPaged ? null : count == null ? undefined : count,\n options\n );\n};\n\nhandlers['transactions-parse-file'] = async function({ filepath, options }) {\n return parseFile(filepath, options);\n};\n\nhandlers['transactions-export'] = async function({\n transactions,\n accounts,\n categoryGroups,\n payees\n}) {\n return exportToCSV(transactions, accounts, categoryGroups, payees);\n};\n\nhandlers['transactions-export-query'] = async function({ query: queryState }) {\n return exportQueryToCSV(new Query(queryState));\n};\n\nhandlers['get-categories'] = async function() {\n return {\n grouped: await db.getCategoriesGrouped(),\n list: await db.getCategories()\n };\n};\n\nhandlers['get-earliest-transaction'] = async function() {\n let { data } = await aqlQuery(\n q('transactions')\n .options({ splits: 'none' })\n .orderBy({ date: 'asc' })\n .select('*')\n .limit(1)\n );\n return data[0] || null;\n};\n\nhandlers['get-budget-bounds'] = async function() {\n return budget.createAllBudgets();\n};\n\nhandlers['rollover-budget-month'] = async function({ month }) {\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.getCellValue(sheetName, name);\n return { value: v === '' ? 0 : v, name: resolveName(sheetName, name) };\n }\n\n let values = [\n value('available-funds'),\n value('last-month-overspent'),\n value('buffered'),\n value('total-budgeted'),\n value('to-budget'),\n\n value('from-last-month'),\n value('total-income'),\n value('total-spent'),\n value('total-leftover')\n ];\n\n for (let group of groups) {\n if (group.is_income) {\n values.push(value('total-income'));\n\n for (let cat of group.categories) {\n values.push(value(`sum-amount-${cat.id}`));\n }\n } else {\n values = values.concat([\n value(`group-budget-${group.id}`),\n value(`group-sum-amount-${group.id}`),\n value(`group-leftover-${group.id}`)\n ]);\n\n for (let cat of group.categories) {\n values = values.concat([\n value(`budget-${cat.id}`),\n value(`sum-amount-${cat.id}`),\n value(`leftover-${cat.id}`),\n value(`carryover-${cat.id}`)\n ]);\n }\n }\n }\n\n return values;\n};\n\nhandlers['report-budget-month'] = async function({ month }) {\n let groups = await db.getCategoriesGrouped();\n let sheetName = monthUtils.sheetForMonth(month);\n\n function value(name) {\n let v = sheet.getCellValue(sheetName, name);\n return { value: v === '' ? 0 : v, name: resolveName(sheetName, name) };\n }\n\n let values = [\n value('total-budgeted'),\n value('total-budget-income'),\n value('total-saved'),\n value('total-income'),\n value('total-spent'),\n value('real-saved'),\n value('total-leftover')\n ];\n\n for (let group of groups) {\n values = values.concat([\n value(`group-budget-${group.id}`),\n value(`group-sum-amount-${group.id}`),\n value(`group-leftover-${group.id}`)\n ]);\n\n for (let cat of group.categories) {\n values = values.concat([\n value(`budget-${cat.id}`),\n value(`sum-amount-${cat.id}`),\n value(`leftover-${cat.id}`)\n ]);\n\n if (!group.is_income) {\n values.push(value(`carryover-${cat.id}`));\n }\n }\n }\n\n return values;\n};\n\nhandlers['budget-set-type'] = async function({ type }) {\n if (type !== 'rollover' && type !== 'report') {\n throw new Error('Invalid budget type: ' + type);\n }\n\n // It's already the same; don't do anything\n if (type === prefs.getPrefs().budgetType) {\n return;\n }\n\n // Save prefs\n return prefs.savePrefs({ budgetType: type });\n};\n\nhandlers['category-create'] = mutator(async function({\n name,\n groupId,\n isIncome\n}) {\n return withUndo(async () => {\n if (!groupId) {\n throw APIError('Creating a category: groupId is required');\n }\n\n return db.insertCategory({\n name,\n cat_group: groupId,\n is_income: isIncome ? 1 : 0\n });\n });\n});\n\nhandlers['category-update'] = mutator(async function(category) {\n return withUndo(async () => {\n try {\n await db.updateCategory(category);\n } catch (e) {\n if (e.message.toLowerCase().includes('unique constraint')) {\n return { error: { type: 'category-exists' } };\n }\n throw e;\n }\n return {};\n });\n});\n\nhandlers['category-move'] = mutator(async function({ id, groupId, targetId }) {\n return withUndo(async () => {\n await batchMessages(async () => {\n await db.moveCategory(id, groupId, targetId);\n });\n return 'ok';\n });\n});\n\nhandlers['category-delete'] = mutator(async function({ id, transferId }) {\n return withUndo(async () => {\n let result = {};\n await batchMessages(async () => {\n let row = await db.first(\n 'SELECT is_income FROM categories WHERE id = ?',\n [id]\n );\n if (!row) {\n result = { error: 'no-categories' };\n return;\n }\n\n let transfer =\n transferId &&\n (await db.first('SELECT is_income FROM categories WHERE id = ?', [\n transferId\n ]));\n\n if (!row || (transferId && !transfer)) {\n result = { error: 'no-categories' };\n return;\n } else if (transferId && row.is_income !== transfer.is_income) {\n result = { error: 'category-type' };\n return;\n }\n\n // Update spreadsheet values if it's an expense category\n // TODO: We should do this for income too if it's a reflect budget\n if (row.is_income === 0) {\n if (transferId) {\n await budget.doTransfer([id], transferId);\n }\n }\n\n await db.deleteCategory({ id }, transferId);\n });\n\n return result;\n });\n});\n\nhandlers['category-group-create'] = mutator(async function({ name, isIncome }) {\n return withUndo(async () => {\n return db.insertCategoryGroup({\n name,\n is_income: isIncome ? 1 : 0\n });\n });\n});\n\nhandlers['category-group-update'] = mutator(async function(group) {\n return withUndo(async () => {\n return db.updateCategoryGroup(group);\n });\n});\n\nhandlers['category-group-move'] = mutator(async function({ id, targetId }) {\n return withUndo(async () => {\n await batchMessages(async () => {\n await db.moveCategoryGroup(id, targetId);\n });\n return 'ok';\n });\n});\n\nhandlers['category-group-delete'] = mutator(async function({ id, transferId }) {\n return withUndo(async () => {\n const groupCategories = await db.all(\n 'SELECT id FROM categories WHERE cat_group = ? AND tombstone = 0',\n [id]\n );\n\n return batchMessages(async () => {\n if (transferId) {\n await budget.doTransfer(groupCategories.map(c => c.id), transferId);\n }\n await db.deleteCategoryGroup({ id }, transferId);\n });\n });\n});\n\nhandlers['must-category-transfer'] = async function({ id }) {\n const res = await db.runQuery(\n `SELECT count(t.id) as count FROM transactions t\n LEFT JOIN category_mapping cm ON cm.id = t.category\n WHERE cm.transferId = ? AND t.tombstone = 0`,\n [id],\n true\n );\n\n // If there are transactions with this category, return early since\n // we already know it needs to be tranferred\n if (res[0].count !== 0) {\n return true;\n }\n\n // If there are any non-zero budget values, also force the user to\n // transfer the category.\n return [...sheet.get().meta().createdMonths].some(month => {\n const sheetName = monthUtils.sheetForMonth(month);\n const value = sheet.get().getCellValue(sheetName, 'budget-' + id);\n\n return value !== 0;\n });\n};\n\nhandlers['payee-create'] = mutator(async function({ name }) {\n return withUndo(async () => {\n return db.insertPayee({ name });\n });\n});\n\nhandlers['payees-get'] = async function() {\n return db.getPayees();\n};\n\nhandlers['payees-get-rule-counts'] = async function() {\n let payeeCounts = {};\n let allRules = rules.getRules();\n\n rules.iterateIds(rules.getRules(), 'payee', (rule, id) => {\n if (payeeCounts[id] == null) {\n payeeCounts[id] = 0;\n }\n payeeCounts[id]++;\n });\n\n return payeeCounts;\n};\n\nhandlers['payees-merge'] = mutator(async function({ targetId, mergeIds }) {\n return withUndo(\n async () => {\n return db.mergePayees(targetId, mergeIds);\n },\n { targetId, mergeIds }\n );\n});\n\nhandlers['payees-batch-change'] = mutator(async function({\n added,\n deleted,\n updated\n}) {\n return withUndo(async () => {\n return batchMessages(async () => {\n if (deleted) {\n await Promise.all(deleted.map(p => db.deletePayee(p)));\n }\n\n if (added) {\n await Promise.all(added.map(p => db.insertPayee(p)));\n }\n\n if (updated) {\n await Promise.all(updated.map(p => db.updatePayee(p)));\n }\n });\n });\n});\n\nhandlers['payees-check-orphaned'] = async function({ ids }) {\n let orphaned = new Set(await db.getOrphanedPayees());\n return ids.filter(id => orphaned.has(id));\n};\n\nhandlers['payees-get-rules'] = async function({ id }) {\n return rules.getRulesForPayee(id).map(rule => rule.serialize());\n};\n\nhandlers['payees-delete-rule'] = mutator(async function({ id, payee_id }) {\n return withUndo(\n async () => {\n return await db.deletePayeeRule({ id });\n },\n { payeeId: payee_id }\n );\n});\n\nhandlers['payees-update-rule'] = mutator(async function(rule) {\n return withUndo(\n async () => {\n return await db.updatePayeeRule(rule);\n },\n { payeeId: rule.payee_id }\n );\n});\n\nhandlers['payees-add-rule'] = mutator(async function(rule) {\n return withUndo(\n async () => {\n let id = await db.insertPayeeRule(rule);\n return { ...rule, id };\n },\n { payeeId: rule.payee_id }\n );\n});\n\nfunction validateRule(rule) {\n // Returns an array of errors, the array is the same link as the\n // passed-in `array`, or null if there are no errors\n function runValidation(array, validate) {\n let result = array.map(item => {\n try {\n validate(item);\n } catch (e) {\n if (e instanceof RuleError) {\n console.warn('Invalid rule', e);\n return e.type;\n }\n throw e;\n }\n return null;\n });\n\n return result.some(Boolean) ? result : null;\n }\n\n let conditionErrors = runValidation(\n rule.conditions,\n cond =>\n new Condition(\n cond.op,\n cond.field,\n cond.value,\n cond.options,\n ruleFieldTypes\n )\n );\n\n let actionErrors = runValidation(\n rule.actions,\n action =>\n new Action(\n action.op,\n action.field,\n action.value,\n action.options,\n ruleFieldTypes\n )\n );\n\n if (conditionErrors || actionErrors) {\n return {\n conditionErrors,\n actionErrors\n };\n }\n\n return null;\n}\n\nhandlers['rule-validate'] = async function(rule) {\n let error = validateRule(rule);\n return { error };\n};\n\nhandlers['rule-add'] = mutator(async function(rule) {\n let error = validateRule(rule);\n if (error) {\n return { error };\n }\n\n let id = await rules.insertRule(rule);\n return { id };\n});\n\nhandlers['rule-update'] = mutator(async function(rule) {\n let error = validateRule(rule);\n if (error) {\n return { error };\n }\n\n await rules.updateRule(rule);\n return {};\n});\n\nhandlers['rule-delete'] = mutator(async function(rule) {\n return rules.deleteRule(rule);\n});\n\nhandlers['rule-delete-all'] = mutator(async function(ids) {\n let someDeletionsFailed = false;\n\n await batchMessages(async () => {\n for (let id of ids) {\n let res = await rules.deleteRule({ id });\n if (res === false) {\n someDeletionsFailed = true;\n }\n }\n });\n\n return { someDeletionsFailed };\n});\n\nhandlers['rule-apply-actions'] = mutator(async function({\n transactionIds,\n actions\n}) {\n return rules.applyActions(transactionIds, actions, handlers);\n});\n\nhandlers['rule-add-payee-rename'] = mutator(async function({ fromNames, to }) {\n return rules.updatePayeeRenameRule(fromNames, to);\n});\n\nhandlers['rules-get'] = async function() {\n return rankRules(rules.getRules()).map(rule => rule.serialize());\n};\n\nhandlers['rule-get'] = async function({ id }) {\n let rule = rules.getRules().find(rule => rule.id === id);\n return rule ? rule.serialize() : null;\n};\n\nhandlers['rules-run'] = async function({ transaction }) {\n return rules.runRules(transaction);\n};\n\nhandlers['rules-migrate'] = async function() {\n await rules.migrateOldRules();\n};\n\nhandlers['make-filters-from-conditions'] = async function({ conditions }) {\n return rules.conditionsToAQL(conditions);\n};\n\nhandlers['getCell'] = async function({ sheetName, name }) {\n // Fields is no longer used - hardcode\n let fields = ['name', 'value'];\n let node = sheet.get()._getNode(resolveName(sheetName, name));\n if (fields) {\n let res = {};\n fields.forEach(field => {\n if (field === 'run') {\n res[field] = node._run ? node._run.toString() : null;\n } else {\n res[field] = node[field];\n }\n });\n return res;\n } else {\n return node;\n }\n};\n\nhandlers['getCells'] = async function({ names }) {\n return names.map(name => ({ value: sheet.get()._getNode(name).value }));\n};\n\nhandlers['getCellNamesInSheet'] = async function({ sheetName }) {\n let names = [];\n for (let name of sheet\n .get()\n .getNodes()\n .keys()) {\n let { sheet: nodeSheet, name: nodeName } = unresolveName(name);\n if (nodeSheet === sheetName) {\n names.push(nodeName);\n }\n }\n return names;\n};\n\nhandlers['debugCell'] = async function({ sheetName, name }) {\n let node = sheet.get().getNode(resolveName(sheetName, name));\n return {\n ...node,\n _run: node._run && node._run.toString()\n };\n};\n\nhandlers['create-query'] = async function({ sheetName, name, query }) {\n // Always run it regardless of cache. We don't know anything has changed\n // between the cache value being saved and now\n sheet.get().createQuery(sheetName, name, query);\n return 'ok';\n};\n\nhandlers['query'] = async function(query) {\n if (query.table == null) {\n throw new Error('query has no table, did you forgot to call `.serialize`?');\n }\n\n return aqlQuery(query);\n};\n\nhandlers['bank-delete'] = async function({ id }) {\n const accts = await db.runQuery(\n 'SELECT * FROM accounts WHERE bank = ?',\n [id],\n true\n );\n\n await db.delete_('banks', id);\n await Promise.all(\n accts.map(async acct => {\n // TODO: This will not sync across devices because we are bypassing\n // the \"recorded\" functions\n await db.runQuery('DELETE FROM transactions WHERE acct = ?', [acct.id]);\n await db.delete_('accounts', acct.id);\n })\n );\n return 'ok';\n};\n\nhandlers['account-update'] = mutator(async function({ id, name }) {\n return withUndo(async () => {\n await db.update('accounts', { id, name });\n return {};\n });\n});\n\nhandlers['accounts-get'] = async function() {\n return db.getAccounts();\n};\n\nhandlers['account-properties'] = async function({ id }) {\n const { balance } = await db.first(\n 'SELECT sum(amount) as balance FROM transactions WHERE acct = ? AND isParent = 0 AND tombstone = 0',\n [id]\n );\n const { count } = await db.first(\n 'SELECT count(id) as count FROM transactions WHERE acct = ? AND tombstone = 0',\n [id]\n );\n\n return { balance: balance || 0, numTransactions: count };\n};\n\nhandlers['accounts-link'] = async function({\n institution,\n publicToken,\n accountId,\n upgradingId\n}) {\n let bankId = await link.handoffPublicToken(institution, publicToken);\n\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n // Get all the available accounts and find the selected one\n let accounts = await bankSync.getAccounts(userId, userKey, bankId);\n let account = accounts.find(acct => acct.account_id === accountId);\n\n await db.update('accounts', {\n id: upgradingId,\n account_id: account.account_id,\n official_name: account.official_name,\n type: fromPlaidAccountType(account.type),\n balance_current: amountToInteger(account.balances.current),\n balance_available: amountToInteger(account.balances.available),\n balance_limit: amountToInteger(account.balances.limit),\n mask: account.mask,\n bank: bankId\n });\n\n await bankSync.syncAccount(\n userId,\n userKey,\n upgradingId,\n account.account_id,\n bankId\n );\n\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions']\n });\n\n return 'ok';\n};\n\nhandlers['accounts-connect'] = async function({\n institution,\n publicToken,\n accountIds,\n offbudgetIds\n}) {\n let bankId = await link.handoffPublicToken(institution, publicToken);\n let ids = await link.addAccounts(bankId, accountIds, offbudgetIds);\n return ids;\n};\n\nhandlers['account-create'] = mutator(async function({\n name,\n type,\n balance,\n offBudget,\n closed\n}) {\n return withUndo(async () => {\n const id = await db.insertAccount({\n name,\n type,\n offbudget: offBudget ? 1 : 0,\n closed: closed ? 1 : 0\n });\n\n await db.insertPayee({\n name: '',\n transfer_acct: id\n });\n\n if (balance != null) {\n let payee = await getStartingBalancePayee();\n\n await db.insertTransaction({\n account: id,\n amount: amountToInteger(balance),\n category: offBudget ? null : payee.category,\n payee: payee.id,\n date: monthUtils.currentDay(),\n cleared: true,\n starting_balance_flag: true\n });\n }\n\n return id;\n });\n});\n\nhandlers['account-close'] = mutator(async function({\n id,\n transferAccountId,\n categoryId,\n forced\n}) {\n // Unlink the account if it's linked. This makes sure to remove it\n // from Plaid. (This should not be undo-able, as it mutates the\n // remote server and the user will have to link the account again)\n await handlers['account-unlink']({ id });\n\n return withUndo(async () => {\n let account = await db.first(\n 'SELECT * FROM accounts WHERE id = ? AND tombstone = 0',\n [id]\n );\n\n // Do nothing if the account doesn't exist or it's already been\n // closed\n if (!account || account.closed === 1) {\n return;\n }\n\n const { balance, numTransactions } = await handlers['account-properties']({\n id\n });\n\n // If there are no transactions, we can simply delete the account\n if (numTransactions === 0) {\n await db.deleteAccount({ id });\n } else if (forced) {\n let rows = await db.runQuery(\n 'SELECT id, transfer_id FROM v_transactions WHERE account = ?',\n [id],\n true\n );\n\n let { id: payeeId } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [id]\n );\n\n await batchMessages(() => {\n // TODO: what this should really do is send a special message that\n // automatically marks the tombstone value for all transactions\n // within an account... or something? This is problematic\n // because another client could easily add new data that\n // should be marked as deleted.\n\n rows.forEach(row => {\n if (row.transfer_id) {\n db.updateTransaction({\n id: row.transfer_id,\n payee: null,\n transfer_id: null\n });\n }\n\n db.deleteTransaction({ id: row.id });\n });\n\n db.deleteAccount({ id });\n db.deleteTransferPayee({ id: payeeId });\n });\n } else {\n if (balance !== 0 && transferAccountId == null) {\n throw APIError('balance is non-zero: transferAccountId is required');\n }\n\n await db.update('accounts', { id, closed: 1 });\n\n // If there is a balance we need to transfer it to the specified\n // account (and possibly categorize it)\n if (balance !== 0) {\n let { id: payeeId } = await db.first(\n 'SELECT id FROM payees WHERE transfer_acct = ?',\n [transferAccountId]\n );\n\n await handlers['transaction-add']({\n id: uuid.v4Sync(),\n payee: payeeId,\n amount: -balance,\n account: id,\n date: monthUtils.currentDay(),\n notes: 'Closing account',\n category: categoryId || null\n });\n }\n }\n });\n});\n\nhandlers['account-reopen'] = mutator(async function({ id }) {\n return withUndo(async () => {\n await db.update('accounts', { id, closed: 0 });\n });\n});\n\nhandlers['account-move'] = mutator(async function({ id, targetId }) {\n return withUndo(async () => {\n await db.moveAccount(id, targetId);\n });\n});\n\nlet stopPolling = false;\n\nhandlers['poll-web-token'] = async function({ token }) {\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n let startTime = Date.now();\n stopPolling = false;\n\n async function getData(cb) {\n if (stopPolling) {\n return;\n }\n\n if (Date.now() - startTime >= 1000 * 60 * 10) {\n cb('timeout');\n return;\n }\n\n let data = await post(\n getConfig().PLAID_SERVER + '/get-web-token-contents',\n {\n userId,\n key,\n token\n }\n );\n\n if (data) {\n if (data.error) {\n cb('unknown');\n } else {\n cb(null, data);\n }\n } else {\n setTimeout(() => getData(cb), 3000);\n }\n }\n\n return new Promise(resolve => {\n getData((error, data) => {\n if (error) {\n resolve({ error });\n } else {\n resolve({ data });\n }\n });\n });\n};\n\nhandlers['poll-web-token-stop'] = async function() {\n stopPolling = true;\n return 'ok';\n};\n\nhandlers['accounts-sync'] = async function({ id }) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n let accounts = await db.runQuery(\n `SELECT a.*, b.id as bankId FROM accounts a\n LEFT JOIN banks b ON a.bank = b.id\n WHERE a.tombstone = 0 AND a.closed = 0`,\n [],\n true\n );\n\n if (id) {\n accounts = accounts.filter(acct => acct.id === id);\n }\n\n let errors = [];\n let newTransactions = [];\n let matchedTransactions = [];\n let updatedAccounts = [];\n\n let { groupId } = prefs.getPrefs();\n\n for (var i = 0; i < accounts.length; i++) {\n const acct = accounts[i];\n if (acct.bankId) {\n try {\n const res = await bankSync.syncAccount(\n userId,\n userKey,\n acct.id,\n acct.account_id,\n acct.bankId\n );\n let { added, updated } = res;\n\n newTransactions = newTransactions.concat(added);\n matchedTransactions = matchedTransactions.concat(updated);\n\n if (added.length > 0 || updated.length > 0) {\n updatedAccounts = updatedAccounts.concat(acct.id);\n }\n } catch (err) {\n if (err.type === 'BankSyncError') {\n errors.push({\n type: 'SyncError',\n accountId: acct.id,\n message: 'Failed syncing account \"' + acct.name + '\".',\n category: err.category,\n code: err.code\n });\n } else if (err instanceof PostError && err.reason !== 'internal') {\n errors.push({\n accountId: acct.id,\n message: `Account \"${\n acct.name\n }\" is not linked properly. Please link it again`\n });\n } else {\n errors.push({\n accountId: acct.id,\n message:\n 'There was an internal error. Please email help@actualbudget.com for support.',\n internal: err.stack\n });\n\n err.message = 'Failed syncing account: ' + err.message;\n\n captureException(err);\n }\n }\n }\n }\n\n if (updatedAccounts.length > 0) {\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions']\n });\n }\n\n return { errors, newTransactions, matchedTransactions, updatedAccounts };\n};\n\nhandlers['transactions-import'] = mutator(function({\n accountId,\n transactions\n}) {\n return withUndo(async () => {\n if (typeof accountId !== 'string') {\n throw APIError('transactions-import: accountId must be an id');\n }\n\n try {\n return await bankSync.reconcileTransactions(accountId, transactions);\n } catch (err) {\n if (err instanceof TransactionError) {\n return { errors: [{ message: err.message }], added: [], updated: [] };\n }\n\n throw err;\n }\n });\n});\n\nhandlers['account-unlink'] = mutator(async function({ id }) {\n let { bank: bankId } = await db.first(\n 'SELECT bank FROM accounts WHERE id = ?',\n [id]\n );\n\n if (!bankId) {\n return 'ok';\n }\n\n await db.updateAccount({\n id,\n account_id: null,\n bank: null,\n balance_current: null,\n balance_available: null,\n balance_limit: null\n });\n\n let { count } = await db.first(\n 'SELECT COUNT(*) as count FROM accounts WHERE bank = ?',\n [bankId]\n );\n\n if (count === 0) {\n // No more accounts are associated with this bank. We can remove\n // it from Plaid.\n\n let [[, userId], [, key]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n await post(getConfig().PLAID_SERVER + '/remove-access-token', {\n userId,\n key,\n item_id: bankId\n });\n }\n\n return 'ok';\n});\n\nhandlers['make-plaid-public-token'] = async function({ bankId }) {\n let [[, userId], [, userKey]] = await asyncStorage.multiGet([\n 'user-id',\n 'user-key'\n ]);\n\n let data = await post(getConfig().PLAID_SERVER + '/make-public-token', {\n userId: userId,\n key: userKey,\n item_id: '' + bankId\n });\n\n if (data.error_code) {\n return { error: '', code: data.error_code, type: data.error_type };\n }\n\n return { linkToken: data.link_token };\n};\n\nhandlers['save-global-prefs'] = async function(prefs) {\n if ('maxMonths' in prefs) {\n await asyncStorage.setItem('max-months', '' + prefs.maxMonths);\n }\n if ('trackUsage' in prefs) {\n tracking.toggle(prefs.trackUsage);\n await asyncStorage.setItem('track-usage', '' + prefs.trackUsage);\n }\n if ('autoUpdate' in prefs) {\n await asyncStorage.setItem('auto-update', '' + prefs.autoUpdate);\n process.send({ type: 'shouldAutoUpdate', flag: prefs.autoUpdate });\n }\n if ('documentDir' in prefs) {\n if (await fs.exists(prefs.documentDir)) {\n await asyncStorage.setItem('document-dir', prefs.documentDir);\n }\n }\n if ('floatingSidebar' in prefs) {\n await asyncStorage.setItem('floating-sidebar', '' + prefs.floatingSidebar);\n }\n return 'ok';\n};\n\nhandlers['load-global-prefs'] = async function() {\n let [\n [, floatingSidebar],\n [, seenTutorial],\n [, maxMonths],\n [, trackUsage],\n [, autoUpdate],\n [, documentDir],\n [, encryptKey]\n ] = await asyncStorage.multiGet([\n 'floating-sidebar',\n 'seen-tutorial',\n 'max-months',\n 'track-usage',\n 'auto-update',\n 'document-dir',\n 'encrypt-key'\n ]);\n return {\n floatingSidebar: floatingSidebar === 'true' ? true : false,\n seenTutorial: seenTutorial === 'true' ? true : false,\n maxMonths: stringToInteger(maxMonths || ''),\n // Default to true\n trackUsage: trackUsage == null || trackUsage === 'true' ? true : false,\n autoUpdate: autoUpdate == null || autoUpdate === 'true' ? true : false,\n documentDir: documentDir || getDefaultDocumentDir(),\n keyId: encryptKey && JSON.parse(encryptKey).id\n };\n};\n\nhandlers['save-prefs'] = async function(prefsToSet) {\n let { cloudFileId } = prefs.getPrefs();\n\n // Need to sync the budget name on the server as well\n if (prefsToSet.budgetName && cloudFileId) {\n let userToken = await asyncStorage.getItem('user-token');\n\n await post(getConfig().SYNC_SERVER + '/update-user-filename', {\n token: userToken,\n fileId: cloudFileId,\n name: prefsToSet.budgetName\n });\n }\n\n await prefs.savePrefs(prefsToSet);\n return 'ok';\n};\n\nhandlers['load-prefs'] = async function() {\n return prefs.getPrefs();\n};\n\nhandlers['sync-reset'] = async function() {\n return await resetSync();\n};\n\nhandlers['sync-repair'] = async function() {\n await repairSync();\n};\n\n// A user can only enable/change their key with the file loaded. This\n// will change in the future: during onboarding the user should be\n// able to enable encryption. (Imagine if they are importing data from\n// another source, they should be able to encrypt first)\nhandlers['key-make'] = async function({ password }) {\n if (!prefs.getPrefs()) {\n throw new Error('user-set-key must be called with file loaded');\n }\n\n let cloudFileId = prefs.getPrefs().cloudFileId;\n\n let salt = encryption.randomBytes(32).toString('base64');\n let id = uuid.v4Sync();\n let key = await encryption.createKey({ id, password, salt });\n\n // Load the key\n await encryption.loadKey(key);\n\n // Make some test data to use if the key is valid or not\n let testContent = await makeTestMessage(key.getId());\n\n // Changing your key necessitates a sync reset as well. This will\n // clear all existing encrypted data from the server so you won't\n // have a mix of data encrypted with different keys.\n return await resetSync({\n key,\n salt,\n testContent: JSON.stringify({\n ...testContent,\n value: testContent.value.toString('base64')\n })\n });\n};\n\n// This can be called both while a file is already loaded or not. This\n// will see if a key is valid and if so save it off.\nhandlers['key-test'] = async function({ fileId, password }) {\n let userToken = await asyncStorage.getItem('user-token');\n\n if (fileId == null) {\n fileId = prefs.getPrefs().cloudFileId;\n }\n\n let res;\n try {\n res = await post(getConfig().SYNC_SERVER + '/user-get-key', {\n token: userToken,\n fileId\n });\n } catch (e) {\n console.log(e);\n return { error: { reason: 'network' } };\n }\n\n let { id, salt, test } = res;\n\n if (test == null) {\n return { error: { reason: 'old-key-style' } };\n }\n\n test = JSON.parse(test);\n\n let key = await encryption.createKey({ id, password, salt });\n encryption.loadKey(key);\n\n try {\n await encryption.decrypt(Buffer.from(test.value, 'base64'), test.meta);\n } catch (e) {\n console.log(e);\n\n // Unload the key, it's invalid\n encryption.unloadKey(key);\n return { error: { reason: 'decrypt-failure' } };\n }\n\n // Persist key in async storage\n let keys = JSON.parse((await asyncStorage.getItem(`encrypt-keys`)) || '{}');\n keys[fileId] = key.serialize();\n await asyncStorage.setItem('encrypt-keys', JSON.stringify(keys));\n\n // Save the key id in prefs if the are loaded. If they aren't, we\n // are testing a key to download a file and when the file is\n // actually downloaded it will update the prefs with the latest key id\n if (prefs.getPrefs()) {\n await prefs.savePrefs({ encryptKeyId: key.getId() });\n }\n\n return {};\n};\n\nhandlers['should-pitch-subscribe'] = async function() {\n let seenSubscribe = await asyncStorage.getItem('seenSubscribe');\n return seenSubscribe !== 'true';\n};\n\nhandlers['has-pitched-subscribe'] = async function() {\n await asyncStorage.setItem('seenSubscribe', 'true');\n return 'ok';\n};\n\nhandlers['subscribe-set-user'] = async function({ token }) {\n await asyncStorage.setItem('user-token', token);\n};\n\nhandlers['subscribe-get-user'] = async function() {\n let userToken = await asyncStorage.getItem('user-token');\n\n if (userToken) {\n try {\n let res = await post(getConfig().SIGNUP_SERVER + '/account', {\n token: userToken\n });\n\n return { offline: false };\n } catch (e) {\n // The server responded successfully, but the user isn't found.\n // Could be a server problem, but most likely in development we\n // are switching between staging/prod\n if (e.reason === 'unauthorized') {\n return null;\n }\n\n // Worse case, return the user id so the frontend knows the user\n // has been logged in.\n return { offline: true };\n }\n }\n\n return null;\n};\n\nhandlers['subscribe-sign-in'] = async function({ password }) {\n let res = await post(getConfig().SIGNUP_SERVER + '/login', {\n password\n });\n\n if (res.token) {\n await asyncStorage.setItem('user-token', res.token);\n return {};\n }\n\n return { error: 'invalid-password' };\n};\n\nhandlers['subscribe-sign-out'] = async function() {\n encryption.unloadAllKeys();\n await asyncStorage.multiRemove([\n 'user-token',\n 'encrypt-keys',\n 'lastBudget',\n 'readOnly'\n ]);\n return 'ok';\n};\n\nhandlers['sync'] = async function() {\n return fullSync();\n};\n\nhandlers['get-version'] = async function() {\n return { version: VERSION };\n};\n\nhandlers['get-budgets'] = async function() {\n const paths = await fs.listDir(fs.getDocumentDir());\n const budgets = (await Promise.all(\n paths.map(async name => {\n const prefsPath = fs.join(fs.getDocumentDir(), name, 'metadata.json');\n if (await fs.exists(prefsPath)) {\n let prefs;\n try {\n prefs = JSON.parse(await fs.readFile(prefsPath));\n } catch (e) {\n console.log('Error parsing metadata:', e.stack);\n return;\n }\n\n // We treat the directory name as the canonical id so that if\n // the user moves it around/renames/etc, nothing breaks. The\n // id is stored in prefs just for convenience (and the prefs\n // will always update to the latest given id)\n if (name !== DEMO_BUDGET_ID) {\n return {\n id: name,\n cloudFileId: prefs.cloudFileId,\n groupId: prefs.groupId,\n name: prefs.budgetName || '(no name)'\n };\n }\n }\n\n return null;\n })\n )).filter(x => x);\n\n return budgets;\n};\n\nhandlers['get-ynab4-files'] = async function() {\n return YNAB4.findBudgets();\n};\n\nhandlers['get-remote-files'] = async function() {\n return cloudStorage.listRemoteFiles();\n};\n\nhandlers['reset-budget-cache'] = mutator(async function() {\n // Recomputing everything will update the cache\n await sheet.loadUserBudgets(db);\n sheet.get().recomputeAll();\n await sheet.waitOnSpreadsheet();\n});\n\nhandlers['upload-budget'] = async function({ id } = {}) {\n if (id) {\n if (prefs.getPrefs()) {\n throw new Error('upload-budget: id given but prefs already loaded');\n }\n\n await prefs.loadPrefs(id);\n }\n\n try {\n await cloudStorage.upload();\n } catch (e) {\n console.log(e);\n if (e.type === 'FileUploadError') {\n return { error: e };\n }\n captureException(e);\n return { error: { reason: 'internal' } };\n } finally {\n if (id) {\n prefs.unloadPrefs();\n }\n }\n\n return {};\n};\n\nhandlers['download-budget'] = async function({ fileId, replace }) {\n let result;\n try {\n result = await cloudStorage.download(fileId, replace);\n } catch (e) {\n if (e.type === 'FileDownloadError') {\n if (e.reason === 'file-exists' && e.meta.id) {\n await prefs.loadPrefs(e.meta.id);\n let name = prefs.getPrefs().budgetName;\n prefs.unloadPrefs();\n\n e.meta = { ...e.meta, name };\n }\n\n return { error: e };\n } else {\n captureException(e);\n return { error: { reason: 'internal' } };\n }\n }\n\n let id = result.id;\n\n // Load the budget and do a full sync\n result = await loadBudget(result.id, VERSION, { showUpdate: true });\n if (result.error) {\n return { error: { reason: result.error } };\n }\n\n setSyncingMode('enabled');\n await initialFullSync();\n\n await handlers['close-budget']();\n\n return { id };\n};\n\nhandlers['load-budget'] = async function({ id }) {\n let currentPrefs = prefs.getPrefs();\n\n if (currentPrefs) {\n if (currentPrefs.id === id) {\n // If it's already loaded, do nothing\n return {};\n } else {\n // Otherwise, close the currently loaded budget\n await handlers['close-budget']();\n }\n }\n\n let res = await loadBudget(id, VERSION, { showUpdate: true });\n\n async function trackSizes() {\n let getFileSize = async name => {\n let dbFile = fs.join(fs.getBudgetDir(id), name);\n try {\n return await fs.size(dbFile);\n } catch (err) {\n return null;\n }\n };\n\n try {\n let dbSize = await getFileSize('db.sqlite');\n let cacheSize = await getFileSize('cache.sqlite');\n tracking.track('app:load-budget', { size: dbSize, cacheSize });\n } catch (err) {\n console.warn(err);\n }\n }\n trackSizes();\n\n return res;\n};\n\nhandlers['create-demo-budget'] = async function() {\n // Make sure the read only flag isn't leftover (normally it's\n // reset when signing in, but you don't have to sign in for the\n // demo budget)\n await asyncStorage.setItem('readOnly', '');\n\n return handlers['create-budget']({\n budgetName: 'Demo Budget',\n testMode: true,\n testBudgetId: DEMO_BUDGET_ID\n });\n};\n\nhandlers['close-budget'] = async function() {\n captureBreadcrumb({ message: 'Closing budget' });\n\n // The spreadsheet may be running, wait for it to complete\n await sheet.waitOnSpreadsheet();\n sheet.unloadSpreadsheet();\n\n clearFullSyncTimeout();\n await app.stopServices();\n\n await db.closeDatabase();\n\n try {\n await asyncStorage.setItem('lastBudget', '');\n } catch (e) {\n // This might fail if we are shutting down after failing to load a\n // budget. We want to unload whatever has already been loaded but\n // be resilient to anything failing\n }\n\n prefs.unloadPrefs();\n stopBackupService();\n return 'ok';\n};\n\nhandlers['delete-budget'] = async function({ id, cloudFileId }) {\n // If it's a cloud file, you can delete it from the server by\n // passing its cloud id\n if (cloudFileId && !process.env.IS_BETA) {\n await cloudStorage.removeFile(cloudFileId).catch(err => {});\n }\n\n // If a local file exists, you can delete it by passing its local id\n if (id) {\n let budgetDir = fs.getBudgetDir(id);\n await fs.removeDirRecursively(budgetDir);\n }\n\n return 'ok';\n};\n\nhandlers['create-budget'] = async function({\n budgetName,\n avoidUpload,\n testMode,\n testBudgetId\n} = {}) {\n let id;\n if (testMode) {\n budgetName = budgetName || 'Test Budget';\n id = testBudgetId || TEST_BUDGET_ID;\n\n if (await fs.exists(fs.getBudgetDir(id))) {\n await fs.removeDirRecursively(fs.getBudgetDir(id));\n }\n } else {\n // Generate budget name if not given\n if (!budgetName) {\n // Unfortunately we need to load all of the existing files first\n // so we can detect conflicting names.\n let files = await handlers['get-budgets']();\n budgetName = await uniqueFileName(files);\n }\n\n id = await idFromFileName(budgetName);\n }\n\n let budgetDir = fs.getBudgetDir(id);\n await fs.mkdir(budgetDir);\n\n // Create the initial database\n await fs.copyFile(fs.bundledDatabasePath, fs.join(budgetDir, 'db.sqlite'));\n\n // Create the initial prefs file\n await fs.writeFile(\n fs.join(budgetDir, 'metadata.json'),\n JSON.stringify(prefs.getDefaultPrefs(id, budgetName))\n );\n\n // Load it in\n let { error } = await loadBudget(id, VERSION);\n if (error) {\n console.log('Error creating budget: ' + error);\n return { error };\n }\n\n if (!avoidUpload && !testMode) {\n try {\n await cloudStorage.upload();\n } catch (e) {\n // Ignore any errors uploading. If they are offline they should\n // still be able to create files.\n }\n }\n\n if (testMode) {\n await createTestBudget(handlers);\n }\n\n return {};\n};\n\nhandlers['set-tutorial-seen'] = async function() {\n await asyncStorage.setItem('seen-tutorial', 'true');\n return 'ok';\n};\n\nhandlers['import-budget'] = async function({ filepath, type }) {\n try {\n if (!(await fs.exists(filepath))) {\n throw new Error(`File not found at the provided path: ${filepath}`);\n }\n\n let buffer = Buffer.from(await fs.readFile(filepath, 'binary'));\n\n switch (type) {\n case 'ynab4':\n try {\n await YNAB4.importBuffer(filepath, buffer);\n } catch (e) {\n let msg = e.message.toLowerCase();\n if (\n msg.includes('not a ynab4') ||\n msg.includes('could not find file')\n ) {\n return { error: 'not-ynab4' };\n }\n }\n break;\n case 'ynab5':\n let data;\n try {\n data = JSON.parse(buffer.toString());\n } catch (e) {\n return { error: 'parse-error' };\n }\n\n try {\n await YNAB5.importYNAB5(data);\n } catch (e) {\n return { error: 'not-ynab5' };\n }\n break;\n default:\n }\n } catch (err) {\n err.message = 'Error importing budget: ' + err.message;\n captureException(err);\n return { error: 'internal-error' };\n }\n\n return {};\n};\n\nhandlers['export-budget'] = async function() {\n return await cloudStorage.exportBuffer();\n};\n\nasync function loadBudget(id, appVersion, { showUpdate } = {}) {\n let dir;\n try {\n dir = fs.getBudgetDir(id);\n } catch (e) {\n captureException(\n new Error('`getBudgetDir` failed in `loadBudget`: ' + e.message)\n );\n return { error: 'budget-not-found' };\n }\n\n captureBreadcrumb({ message: 'Loading budget ' + dir });\n\n if (!(await fs.exists(dir))) {\n captureException(new Error('budget directory does not exist'));\n return { error: 'budget-not-found' };\n }\n\n try {\n await prefs.loadPrefs(id);\n await db.openDatabase(id);\n } catch (e) {\n captureBreadcrumb({ message: 'Error loading budget ' + id });\n captureException(e);\n await handlers['close-budget']();\n return { error: 'opening-budget' };\n }\n\n // Older versions didn't tag the file with the current user, so do\n // so now\n if (!prefs.getPrefs().userId) {\n let [[, userId]] = await asyncStorage.multiGet(['user-token']);\n prefs.savePrefs({ userId });\n }\n\n let { budgetVersion, budgetId } = prefs.getPrefs();\n\n try {\n await updateVersion(budgetVersion, showUpdate);\n } catch (e) {\n console.warn('Error updating', e);\n let result;\n if (e.message.includes('out-of-sync-migrations')) {\n result = { error: 'out-of-sync-migrations' };\n } else if (e.message.includes('out-of-sync-data')) {\n result = { error: 'out-of-sync-data' };\n } else {\n captureException(e);\n logger.info('Error updating budget ' + id, e);\n console.log('Error updating budget', e);\n result = { error: 'loading-budget' };\n }\n\n await handlers['close-budget']();\n return result;\n }\n\n await db.loadClock();\n\n if (prefs.getPrefs().resetClock) {\n // If we need to generate a fresh clock, we need to generate a new\n // client id. This happens when the database is transferred to a\n // new device.\n //\n // TODO: The client id should be stored elsewhere. It shouldn't\n // work this way, but it's fine for now.\n timestamp.getClock().timestamp.setNode(timestamp.makeClientId());\n await db.runQuery(\n 'INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)',\n [timestamp.serializeClock(timestamp.getClock())]\n );\n\n await prefs.savePrefs({ resetClock: false });\n }\n\n if (!Platform.isWeb && !Platform.isMobile && !global.__TESTING__) {\n startBackupService(id);\n }\n\n try {\n await sheet.loadSpreadsheet(db, onSheetChange);\n } catch (e) {\n captureException(e);\n await handlers['close-budget']();\n return { error: 'opening-budget' };\n }\n\n // This is a bit leaky, but we need to set the initial budget type\n sheet.get().meta().budgetType = prefs.getPrefs().budgetType;\n await budget.createAllBudgets();\n\n // Load all the in-memory state\n await mappings.loadMappings();\n await rules.loadRules();\n await syncMigrations.listen();\n await app.startServices();\n\n clearUndo();\n\n // Ensure that syncing is enabled\n if (!global.__TESTING__) {\n if (process.env.IS_BETA || id === DEMO_BUDGET_ID) {\n setSyncingMode('disabled');\n } else if (id === TEST_BUDGET_ID) {\n await asyncStorage.setItem('lastBudget', id);\n } else {\n setSyncingMode('enabled');\n\n await asyncStorage.setItem('lastBudget', id);\n\n // Only upload periodically on desktop\n if (!Platform.isMobile) {\n await cloudStorage.possiblyUpload();\n }\n }\n }\n\n app.events.emit('load-budget', { id });\n\n return {};\n}\n\nhandlers['get-upgrade-notifications'] = async function() {\n let { id } = prefs.getPrefs();\n if (id === TEST_BUDGET_ID || id === DEMO_BUDGET_ID) {\n return [];\n }\n\n let types = ['schedules', 'repair-splits'];\n let unseen = [];\n\n for (let type of types) {\n let key = `notifications.${type}`;\n if (prefs.getPrefs()[key] == null) {\n unseen.push(type);\n }\n }\n\n return unseen;\n};\n\nhandlers['seen-upgrade-notification'] = async function({ type }) {\n let key = `notifications.${type}`;\n prefs.savePrefs({ [key]: true });\n};\n\nhandlers['upload-file-web'] = async function({ filename, contents }) {\n if (!Platform.isWeb) {\n return null;\n }\n\n await fs.writeFile('/uploads/' + filename, contents);\n return 'ok';\n};\n\nhandlers['backups-get'] = async function({ id }) {\n return getAvailableBackups(id);\n};\n\nhandlers['backup-load'] = async function({ id, backupId }) {\n await loadBackup(id, backupId);\n};\n\nhandlers['backup-make'] = async function({ id }) {\n await makeBackup(id);\n};\n\nhandlers['get-last-opened-backup'] = async function() {\n const id = await asyncStorage.getItem('lastBudget');\n if (id && id !== '') {\n const budgetDir = fs.getBudgetDir(id);\n\n // We never want to give back a budget that does not exist on the\n // filesystem anymore, so first check that it exists\n if (await fs.exists(budgetDir)) {\n return id;\n }\n }\n return null;\n};\n\nhandlers['app-focused'] = async function() {\n if (prefs.getPrefs() && prefs.getPrefs().id) {\n // First we sync\n fullSync();\n }\n};\n\nhandlers['track'] = async function({ name, props }) {\n tracking.track(name, props);\n};\n\nhandlers = installAPI(handlers);\n\ninjectAPI.send = (name, args) => runHandler(app.handlers[name], args);\n\n// A hack for now until we clean up everything\napp.handlers = handlers;\napp.combine(schedulesApp, budgetApp, notesApp, toolsApp);\n\nfunction getDefaultDocumentDir() {\n if (Platform.isMobile) {\n // On mobile, unfortunately we need to be backwards compatible\n // with the old folder structure which does not store files inside\n // of an `Actual` directory. In the future, if we really care, we\n // can migrate them, but for now just return the documents dir\n return process.env.ACTUAL_DOCUMENT_DIR;\n }\n return fs.join(process.env.ACTUAL_DOCUMENT_DIR, 'Actual');\n}\n\nasync function setupDocumentsDir() {\n async function ensureExists(dir) {\n // Make sure the document folder exists\n if (!(await fs.exists(dir))) {\n await fs.mkdir(dir);\n }\n }\n\n let documentDir = await asyncStorage.getItem('document-dir');\n\n // Test the existing documents directory to make sure it's a valid\n // path that exists, and if it errors fallback to the default one\n if (documentDir) {\n try {\n await ensureExists(documentDir);\n } catch (e) {\n documentDir = null;\n }\n }\n\n if (!documentDir) {\n documentDir = getDefaultDocumentDir();\n }\n\n await ensureExists(documentDir);\n fs._setDocumentDir(documentDir);\n}\n\nexport async function initApp(version, isDev, socketName) {\n VERSION = version;\n\n await sqlite.init();\n await Promise.all([asyncStorage.init(), fs.init()]);\n await tracking.init();\n await setupDocumentsDir();\n\n let keysStr = await asyncStorage.getItem('encrypt-keys');\n if (keysStr) {\n try {\n let keys = JSON.parse(keysStr);\n\n // Load all the keys\n await Promise.all(\n Object.keys(keys).map(fileId => {\n return encryption.loadKey(keys[fileId]);\n })\n );\n } catch (e) {\n console.log('Error loading key', e);\n throw new Error('load-key-error');\n }\n }\n\n if (isDev) {\n const lastBudget = await asyncStorage.getItem('lastBudget');\n // if (lastBudget) {\n // loadBudget(lastBudget, VERSION);\n // }\n // setConfig({\n // SYNC_SERVER: 'https://sync-staging.actualbudget.com/sync',\n // SIGNUP_SERVER: 'https://sync-staging.actualbudget.com/account',\n // PLAID_SERVER: 'https://sync-staging.actualbudget.com/plaid'\n // });\n setConfig({\n SYNC_SERVER: 'http://localhost:5006/sync',\n SIGNUP_SERVER: 'http://localhost:5006/account',\n PLAID_SERVER: 'http://localhost:5006/plaid'\n });\n }\n\n connection.init(socketName, app.handlers);\n\n tracking.track('app:init', {\n platform: Platform.isMobile ? 'mobile' : Platform.isWeb ? 'web' : 'desktop'\n });\n\n if (!isDev && !Platform.isMobile && !Platform.isWeb) {\n let autoUpdate = await asyncStorage.getItem('auto-update');\n process.send({\n type: 'shouldAutoUpdate',\n flag: autoUpdate == null || autoUpdate === 'true'\n });\n }\n\n if (isDev || process.env.IS_BETA) {\n global.$send = (name, args) => runHandler(app.handlers[name], args);\n global.$query = aqlQuery;\n global.$q = q;\n global.$db = db;\n global.$setSyncingMode = setSyncingMode;\n }\n}\n\nexport async function init({ budgetId, config }) {\n // Get from build\n // eslint-disable-next-line\n VERSION = ACTUAL_APP_VERSION;\n\n let dataDir, serverURL;\n if (config) {\n dataDir = config.dataDir;\n serverURL = config.serverURL;\n } else {\n dataDir = process.env.ACTUAL_DATA_DIR;\n serverURL = process.env.ACTUAL_SERVER_URL;\n }\n\n await sqlite.init();\n await Promise.all([asyncStorage.init({ persist: false }), fs.init()]);\n fs._setDocumentDir(dataDir || process.cwd());\n\n if (serverURL) {\n setConfig({\n SYNC_SERVER: joinURL(serverURL, '/sync'),\n SIGNUP_SERVER: joinURL(serverURL, '/account'),\n PLAID_SERVER: joinURL(serverURL, '/plaid')\n });\n } else {\n // This turns off all server URLs. In this mode we don't want any\n // access to the server, we are doing things locally\n setConfig(null);\n\n app.events.on('load-budget', () => {\n setSyncingMode('offline');\n });\n }\n\n if (budgetId) {\n await runHandler(handlers['load-budget'], { id: budgetId });\n }\n\n return lib;\n}\n\n// Export a few things required for the platform\nexport const lib = {\n getDataDir: fs.getDataDir,\n sendMessage: (msg, args) => connection.send(msg, args),\n send: async (name, args) => {\n let res = await runHandler(app.handlers[name], args);\n return res;\n },\n on: (name, func) => app.events.on(name, func),\n syncAndReceiveMessages,\n q: q,\n db,\n\n // Expose CRDT mechanisms so server can use them\n merkle,\n timestamp,\n SyncProtoBuf: SyncPb\n};\n\nif (process.env.NODE_ENV === 'development' && Platform.isWeb) {\n // Support reloading the backend\n self.addEventListener('message', async e => {\n if (e.data.type === '__actual:shutdown') {\n await sheet.waitOnSpreadsheet();\n await app.stopServices();\n await db.closeDatabase();\n asyncStorage.shutdown();\n fs.shutdown();\n\n setTimeout(() => {\n // Give everything else some time to process shutdown events\n self.close();\n }, 100);\n }\n });\n}\n","// TODO: Ok, several problems:\n//\n// * If nothing matches between two merkle trees, we should fallback\n// * to the last window instead the front one (use 0 instead of the\n// * key)\n//\n// * Need to check to make sure if account exists when handling\n// * transaction changes in syncing\n\nexport function getKeys(trie) {\n return Object.keys(trie).filter(x => x !== 'hash');\n}\n\nexport function keyToTimestamp(key) {\n // 16 is the length of the base 3 value of the current time in\n // minutes. Ensure it's padded to create the full value\n let fullkey = key + '0'.repeat(16 - key.length);\n\n // Parse the base 3 representation\n return parseInt(fullkey, 3) * 1000 * 60;\n}\n\nexport function insert(trie, timestamp) {\n let hash = timestamp.hash();\n let key = Number((timestamp.millis() / 1000 / 60) | 0).toString(3);\n\n trie = Object.assign({}, trie, { hash: trie.hash ^ hash });\n return insertKey(trie, key, hash);\n}\n\nfunction insertKey(trie, key, hash) {\n if (key.length === 0) {\n return trie;\n }\n const c = key[0];\n const n = trie[c] || {};\n return Object.assign({}, trie, {\n [c]: Object.assign({}, n, insertKey(n, key.slice(1), hash), {\n hash: n.hash ^ hash\n })\n });\n}\n\nexport function build(timestamps) {\n let trie = {};\n for (let timestamp of timestamps) {\n insert(trie, timestamp);\n }\n return trie;\n}\n\nexport function diff(trie1, trie2) {\n if (trie1.hash === trie2.hash) {\n return null;\n }\n\n let node1 = trie1;\n let node2 = trie2;\n let k = '';\n\n // This loop will eventually stop when it traverses down to find\n // where the hashes differ, or otherwise when there are no leaves\n // left (this shouldn't happen, if that's the case the hash check at\n // the top of this function should pass)\n while (1) {\n let keyset = new Set([...getKeys(node1), ...getKeys(node2)]);\n let keys = [...keyset.values()];\n keys.sort();\n\n let diffkey = null;\n\n // Traverse down the trie through keys that aren't the same. We\n // traverse down the keys in order. Stop in two cases: either one\n // of the nodes doesn't have the key, or a different key isn't\n // found. For the former case, we have to that because pruning is\n // lossy. We don't know if we've pruned off a changed key so we\n // can't traverse down anymore. For the latter case, it means two\n // things: either we've hit the bottom of the tree, or the changed\n // key has been pruned off. In the latter case we have a \"partial\"\n // key and will fill the rest with 0s. Note that if multiple older\n // messages were added into one trie, it's possible we will\n // generate a time that only encompasses *some* of the those\n // messages. Pruning is lossy, and we traverse down the left-most\n // changed time that we know of, because of pruning it might take\n // multiple passes to sync up a trie.\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (!node1[key] || !node2[key]) {\n break;\n }\n\n let next1 = node1[key];\n let next2 = node2[key];\n if (next1.hash !== next2.hash) {\n diffkey = key;\n break;\n }\n }\n\n if (!diffkey) {\n return keyToTimestamp(k);\n }\n\n k += diffkey;\n node1 = node1[diffkey] || {};\n node2 = node2[diffkey] || {};\n }\n}\n\nexport function prune(trie, n = 2) {\n // Do nothing if empty\n if (!trie.hash) {\n return trie;\n }\n\n let keys = getKeys(trie);\n keys.sort();\n\n let next = { hash: trie.hash };\n keys = keys.slice(-n).map(k => (next[k] = prune(trie[k], n)));\n\n return next;\n}\n\nexport function debug(trie, k = '', indent = 0) {\n const str =\n ' '.repeat(indent) +\n (k !== '' ? `k: ${k} ` : '') +\n `hash: ${trie.hash || '(empty)'}\\n`;\n return (\n str +\n getKeys(trie)\n .map(key => {\n return debug(trie[key], key, indent + 2);\n })\n .join('')\n );\n}\n","import fs from '../../platform/server/fs';\nimport * as sqlite from '../../platform/server/sqlite';\n\n// We have to bundle in JS migrations manually to avoid having to `eval`\n// them which doesn't play well with CSP. There isn't great, and eventually\n// we can remove this migration.\nimport m1632571489012 from '../../../migrations/1632571489012_remove_cache.js';\n\nconst uuid = require('../../platform/uuid');\n\nlet MIGRATIONS_DIR = fs.migrationsPath;\n\nlet javascriptMigrations = {\n 1632571489012: m1632571489012\n};\n\nexport async function withMigrationsDir(dir, func) {\n let oldDir = MIGRATIONS_DIR;\n MIGRATIONS_DIR = dir;\n await func();\n MIGRATIONS_DIR = oldDir;\n}\n\nexport function getMigrationsDir() {\n return MIGRATIONS_DIR;\n}\n\nfunction getMigrationId(name) {\n return parseInt(name.match(/^(\\d)+/)[0]);\n}\n\nexport function getUpMigration(id, names) {\n for (let m of names) {\n if (getMigrationId(m) === id) {\n return m;\n }\n }\n}\n\nexport async function getAppliedMigrations(db) {\n const rows = await sqlite.runQuery(\n db,\n 'SELECT * FROM __migrations__ ORDER BY id ASC',\n [],\n true\n );\n return rows.map(row => row.id);\n}\n\nexport async function getMigrationList(migrationsDir) {\n const files = await fs.listDir(migrationsDir);\n return files\n .filter(name => name.match(/(\\.sql|\\.js)$/))\n .sort((m1, m2) => {\n const id1 = getMigrationId(m1);\n const id2 = getMigrationId(m2);\n if (id1 < id2) {\n return -1;\n } else if (id1 > id2) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function getPending(appliedIds, all) {\n return all.filter(name => {\n const id = getMigrationId(name);\n return appliedIds.indexOf(id) === -1;\n });\n}\n\nasync function applyJavaScript(db, id) {\n const dbInterface = {\n runQuery: (query, params, fetchAll) =>\n sqlite.runQuery(db, query, params, fetchAll),\n execQuery: query => sqlite.execQuery(db, query),\n transaction: func => sqlite.transaction(db, func)\n };\n\n if (javascriptMigrations[id] == null) {\n throw new Error('Could not find JS migration code to run for ' + id);\n }\n\n let run = javascriptMigrations[id];\n return run(dbInterface, () => uuid.v4Sync());\n}\n\nasync function applySql(db, sql) {\n try {\n await sqlite.execQuery(db, sql);\n } catch (e) {\n console.log('Error applying sql:', sql);\n throw e;\n }\n}\n\nexport async function applyMigration(db, name, migrationsDir) {\n const code = await fs.readFile(fs.join(migrationsDir, name));\n if (name.match(/\\.js$/)) {\n await applyJavaScript(db, getMigrationId(name));\n } else {\n await applySql(db, code);\n }\n await sqlite.runQuery(db, 'INSERT INTO __migrations__ (id) VALUES (?)', [\n getMigrationId(name)\n ]);\n}\n\nfunction checkDatabaseValidity(appliedIds, available) {\n for (let i = 0; i < appliedIds.length; i++) {\n if (\n i >= available.length ||\n appliedIds[i] !== getMigrationId(available[i])\n ) {\n throw new Error('out-of-sync-migrations');\n }\n }\n}\n\nexport async function migrate(db) {\n let appliedIds = await getAppliedMigrations(db);\n let available = await getMigrationList(MIGRATIONS_DIR);\n\n checkDatabaseValidity(appliedIds, available);\n\n const pending = getPending(appliedIds, available);\n\n for (let migration of pending) {\n await applyMigration(db, migration, MIGRATIONS_DIR);\n }\n\n return pending;\n}\n","export function requiredFields(name, row, fields, update) {\n fields.forEach(field => {\n if (update) {\n if (row.hasOwnProperty(field) && row[field] == null) {\n throw new Error(`${name} is missing field ${field}`);\n }\n } else {\n if (!row.hasOwnProperty(field) || row[field] == null) {\n throw new Error(`${name} is missing field ${field}`);\n }\n }\n });\n}\n\nexport function toDateRepr(str) {\n if (typeof str !== 'string') {\n throw new Error('toDateRepr not passed a string: ' + str);\n }\n\n return parseInt(str.replace(/-/g, ''));\n}\n\nexport function fromDateRepr(number) {\n if (typeof number !== 'number') {\n throw new Error('fromDateRepr not passed a number: ' + number);\n }\n\n const dateString = number.toString();\n return (\n dateString.slice(0, 4) +\n '-' +\n dateString.slice(4, 6) +\n '-' +\n dateString.slice(6)\n );\n}\n\nexport const accountModel = {\n validateAccountType(account) {\n const { type } = account;\n if (\n type !== 'checking' &&\n type !== 'savings' &&\n type !== 'investment' &&\n type !== 'credit' &&\n type !== 'mortgage' &&\n type !== 'debt' &&\n type !== 'other'\n ) {\n throw new Error('Invalid account type: ' + type);\n }\n },\n\n validate(account, { update } = {}) {\n if (!update || account.type != null) {\n accountModel.validateAccountType(account);\n }\n\n requiredFields(\n 'account',\n account,\n update ? ['name', 'type', 'offbudget', 'closed'] : ['name', 'type'],\n update\n );\n\n return account;\n }\n};\n\nexport const categoryModel = {\n validate(category, { update } = {}) {\n requiredFields(\n 'category',\n category,\n update ? ['name', 'is_income', 'cat_group'] : ['name', 'cat_group'],\n update\n );\n\n let { sort_order, ...rest } = category;\n return rest;\n }\n};\n\nexport const categoryGroupModel = {\n validate(categoryGroup, { update } = {}) {\n requiredFields(\n 'categoryGroup',\n categoryGroup,\n update ? ['name', 'is_income'] : ['name'],\n update\n );\n\n let { sort_order, ...rest } = categoryGroup;\n return rest;\n }\n};\n\nexport const payeeModel = {\n validate(payee, { update } = {}) {\n requiredFields('payee', payee, ['name'], update);\n return payee;\n }\n};\n\nexport const payeeRuleModel = {\n validateType(rule) {\n const { type } = rule;\n if (type !== 'equals' && type !== 'contains') {\n throw new Error('Invalid rule type: ' + type);\n }\n },\n\n validate(rule, { update } = {}) {\n if (!update || 'type' in rule) {\n payeeRuleModel.validateType(rule);\n }\n\n requiredFields('payee_rules', rule, ['payee_id', 'type'], update);\n return rule;\n }\n};\n\nexport const transactionModel = {\n validate(trans, { update } = {}) {\n requiredFields('transaction', trans, ['date', 'acct'], update);\n\n if ('date' in trans) {\n // Make sure it's the right format, and also do a sanity check.\n // Really old dates can mess up the system and can happen by\n // accident\n if (\n trans.date.match(/^\\d{4}-\\d{2}-\\d{2}$/) == null ||\n trans.date < '2000-01-01'\n ) {\n throw new Error('Invalid transaction date: ' + trans.date);\n }\n }\n\n return trans;\n },\n\n toJS(row) {\n // Check a non-important field that typically wouldn't be passed in\n // manually, and use it as a smoke test to see if this is a\n // fully-formed transaction or not.\n if (!('location' in row)) {\n throw new Error(\n 'A full transaction is required to be passed to `toJS`. Instead got: ' +\n JSON.stringify(row)\n );\n }\n\n let trans = { ...row };\n trans.error = row.error ? JSON.parse(row.error) : null;\n trans.isParent = row.isParent === 1 ? true : false;\n trans.isChild = row.isChild === 1 ? true : false;\n trans.starting_balance_flag =\n row.starting_balance_flag === 1 ? true : false;\n trans.cleared = row.cleared === 1 ? true : false;\n trans.pending = row.pending === 1 ? true : false;\n trans.date = trans.date && fromDateRepr(trans.date);\n return trans;\n },\n\n fromJS(trans) {\n let row = { ...trans };\n if ('error' in row) {\n row.error = trans.error ? JSON.stringify(trans.error) : null;\n }\n if ('isParent' in row) {\n row.isParent = trans.isParent ? 1 : 0;\n }\n if ('isChild' in row) {\n row.isChild = trans.isChild ? 1 : 0;\n }\n if ('cleared' in row) {\n row.cleared = trans.cleared ? 1 : 0;\n }\n if ('pending' in row) {\n row.pending = trans.pending ? 1 : 0;\n }\n if ('starting_balance_flag' in row) {\n row.starting_balance_flag = trans.starting_balance_flag ? 1 : 0;\n }\n if ('date' in row) {\n row.date = toDateRepr(trans.date);\n }\n\n return row;\n }\n};\n","import { sequential } from '../shared/async';\nimport { captureException, captureBreadcrumb } from '../platform/exceptions';\n\nlet runningMethods = new Set();\n\nlet currentContext = null;\nlet mutatingMethods = new WeakMap();\nlet globalMutationsEnabled = false;\n\nlet _latestHandlerNames = [];\n\nexport function mutator(handler) {\n mutatingMethods.set(handler, true);\n return handler;\n}\n\nexport function isMutating(handler) {\n return mutatingMethods.has(handler);\n}\n\nasync function flushRunningMethods() {\n // Give the client some time to invoke new requests\n await wait(200);\n\n while (runningMethods.size > 0) {\n // Wait for all of them\n await Promise.all([...runningMethods.values()]);\n\n // We give clients more time to make other requests. This lets them continue\n // to do an async workflow\n await wait(100);\n }\n}\n\nfunction wait(time) {\n return new Promise(resolve => setTimeout(resolve, time));\n}\n\nexport async function runHandler(handler, args, { undoTag, name } = {}) {\n // For debug reasons, track the latest handlers that have been\n // called\n _latestHandlerNames.push(name);\n if (_latestHandlerNames.length > 5) {\n _latestHandlerNames = _latestHandlerNames.slice(-5);\n }\n\n if (mutatingMethods.has(handler)) {\n return runMutator(() => handler(args), { undoTag });\n }\n\n // When closing a file, it clears out all global state for the file. That\n // means any async workflows currently executed would be cut off. We handle\n // this by letting all async workflows finish executing before closing the\n // file\n if (name === 'close-budget') {\n await flushRunningMethods();\n }\n\n let promise = handler(args);\n runningMethods.add(promise);\n promise.then(() => {\n runningMethods.delete(promise);\n });\n return promise;\n}\n\n// These are useful for tests. Only use them in tests.\nexport function enableGlobalMutations() {\n if (global.__TESTING__) {\n globalMutationsEnabled = true;\n }\n}\n\nexport function disableGlobalMutations() {\n if (global.__TESTING__) {\n globalMutationsEnabled = false;\n }\n}\n\nexport const runMutator = sequential(async (func, initialContext = {}) => {\n currentContext = initialContext;\n return func().finally(() => {\n currentContext = null;\n });\n});\n\nexport function withMutatorContext(context, func) {\n if (currentContext == null && !globalMutationsEnabled) {\n captureBreadcrumb('Recent methods: ' + _latestHandlerNames.join(', '));\n captureException(new Error('withMutatorContext: mutator not running'));\n\n // See comment below. This is not an error right now, but it will\n // be in the future.\n return func();\n }\n\n let prevContext = currentContext;\n currentContext = { ...currentContext, ...context };\n return func().finally(() => {\n currentContext = prevContext;\n });\n}\n\nexport function getMutatorContext() {\n if (currentContext == null) {\n captureBreadcrumb({\n category: 'server',\n message: 'Recent methods: ' + _latestHandlerNames.join(', ')\n });\n // captureException(new Error('getMutatorContext: mutator not running'));\n\n // For now, this is a non-fatal error. It will be in the future,\n // but this is relatively non-critical (undo just won't work) so\n // return an empty context. When we have more confidence that\n // everything is running inside a mutator, throw an error.\n return {};\n }\n\n if (currentContext == null && globalMutationsEnabled) {\n return {};\n }\n return currentContext;\n}\n","import { createApp } from '../app';\nimport * as db from '../db';\n\nlet app = createApp();\n\napp.method('notes-save', async ({ id, note }) => {\n await db.update('notes', { id, note });\n});\n\nexport default app;\n","let enabled = false;\nlet entries = {};\nlet counters = {};\n\nexport function reset() {\n entries = {};\n counters = {};\n}\n\nexport function record(name) {\n const start = Date.now();\n return () => unrecord(name, start);\n}\n\nfunction unrecord(name, start) {\n const end = Date.now();\n\n if (enabled) {\n if (entries[name] == null) {\n entries[name] = [];\n }\n entries[name].push(end - start);\n }\n}\n\nexport function increment(name) {\n if (enabled) {\n if (counters[name] == null) {\n counters[name] = 0;\n }\n counters[name]++;\n }\n}\n\nexport function start() {\n enabled = true;\n}\n\nexport function stop() {\n enabled = false;\n\n console.log('~~ PERFORMANCE REPORT ~~');\n for (let name in entries) {\n const records = entries[name];\n const total = records.reduce((total, n) => total + n / 1000, 0);\n const avg = total / records.length;\n\n console.log(\n `[${name}] count: ${records.length} total: ${total}s avg: ${avg}`\n );\n }\n\n for (let name in counters) {\n console.log(`[${name}] ${counters[name]}`);\n }\n console.log('~~ END REPORT ~~');\n\n reset();\n}\n","export default {\n isMobile: false,\n isWeb: false,\n isDesktop: true\n};\n","// By default, no polyfills are installed\n","import Platform from './platform';\nconst { PostError, HTTPError } = require('./errors');\nconst { fetch } = require('../platform/server/fetch');\n\nfunction throwIfNot200(res, text) {\n if (res.status !== 200) {\n if (res.status === 500) {\n throw new PostError(res.status === 500 ? 'internal' : text);\n }\n\n let contentType = res.headers.get('Content-Type');\n if (contentType.toLowerCase().indexOf('application/json') !== -1) {\n let json = JSON.parse(text);\n throw new PostError(json.reason);\n }\n throw new PostError(text);\n }\n}\n\nexport async function post(url, data) {\n let text;\n let res;\n\n let s = new Error().stack;\n\n try {\n res = await fetch(url, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n text = await res.text();\n } catch (err) {\n throw new PostError('network-failure');\n }\n\n throwIfNot200(res, text);\n\n try {\n res = JSON.parse(text);\n } catch (err) {\n // Something seriously went wrong. TODO handle errors\n throw new PostError('parse-json', { meta: text });\n }\n\n if (res.status !== 'ok') {\n console.log(\n 'API call failed: ' +\n url +\n '\\nData: ' +\n JSON.stringify(data, null, 2) +\n '\\nResponse: ' +\n JSON.stringify(res, null, 2)\n );\n\n throw new PostError(res.description || res.reason || 'unknown');\n }\n\n return res.data;\n}\n\nexport async function postBinary(url, data, headers) {\n let res;\n try {\n res = await fetch(url, {\n method: 'POST',\n body: Platform.isWeb ? data : Buffer.from(data),\n headers: {\n 'Content-Length': data.length,\n 'Content-Type': 'application/actual-sync',\n ...headers\n }\n });\n } catch (err) {\n throw new PostError('network-failure');\n }\n\n let buffer;\n if (res.arrayBuffer) {\n buffer = Buffer.from(await res.arrayBuffer());\n } else {\n buffer = await res.buffer();\n }\n\n throwIfNot200(res, buffer.toString());\n\n return buffer;\n}\n\nexport function get(url) {\n return fetch(url).then(res => res.text());\n}\n","import { sendMessages } from './sync';\nimport Timestamp from './timestamp';\nconst fs = require('../platform/server/fs');\n\nlet prefs = null;\n\nexport async function loadPrefs(id) {\n if (global.__TESTING__ && !id) {\n prefs = { dummyTestPrefs: true };\n return prefs;\n }\n\n const fullpath = fs.join(fs.getBudgetDir(id), 'metadata.json');\n\n try {\n prefs = JSON.parse(await fs.readFile(fullpath));\n } catch (e) {\n // If the user messed something up, be flexible and allow them to\n // still load the budget database. Default the budget name to the\n // id.\n prefs = { id, budgetName: id };\n }\n\n // No matter what is in `id` field, force it to be the current id.\n // This makes it resilient to users moving around folders, etc\n prefs.id = id;\n return prefs;\n}\n\nexport async function savePrefs(prefsToSet, { avoidSync = false } = {}) {\n Object.assign(prefs, prefsToSet);\n\n if (!avoidSync) {\n // Sync whitelisted prefs\n let messages = Object.keys(prefsToSet)\n .map(key => {\n if (key === 'budgetType' || key === 'budgetName') {\n return {\n dataset: 'prefs',\n row: key,\n column: 'value',\n value: prefsToSet[key],\n timestamp: Timestamp.send()\n };\n }\n return null;\n })\n .filter(x => x);\n\n if (messages.length > 0) {\n await sendMessages(messages);\n }\n }\n\n if (!prefs.dummyTestPrefs) {\n let prefsPath = fs.join(fs.getBudgetDir(prefs.id), 'metadata.json');\n await fs.writeFile(prefsPath, JSON.stringify(prefs));\n }\n}\n\nexport function unloadPrefs() {\n prefs = null;\n}\n\nexport function getPrefs() {\n return prefs;\n}\n\nexport function getDefaultPrefs(id, budgetName) {\n // Add any notifications in here that new users shouldn't see.\n // Without them, a popup will show to explain a new feature.\n return {\n id,\n budgetName,\n 'notifications.schedules': true,\n 'notifications.repair-splits': true\n };\n}\n\nexport async function readPrefs(id) {\n const fullpath = fs.join(fs.getBudgetDir(id), 'metadata.json');\n\n try {\n return JSON.parse(await fs.readFile(fullpath));\n } catch (e) {\n return null;\n }\n}\n","import deepEqual from 'deep-equal';\nimport * as d from 'date-fns';\nimport { createApp } from '../app';\nimport * as db from '../db';\nimport * as prefs from '../prefs';\nimport { toDateRepr } from '../models';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport { compileQuery } from '../aql/compiler';\nimport { schema, schemaConfig } from '../aql/schema';\nimport { dayFromDate, currentDay, parseDate } from '../../shared/months';\nimport q from '../../shared/query';\nimport {\n insertRule,\n updateRule,\n getRules,\n ruleModel\n} from '../accounts/transaction-rules';\nimport { Rule, Condition } from '../accounts/rules';\nimport {\n extractScheduleConds,\n recurConfigToRSchedule,\n getHasTransactionsQuery,\n getStatus,\n getScheduledAmount\n} from '../../shared/schedules';\nimport { mutator, runMutator } from '../mutators';\nimport { undoable } from '../undo';\nimport { Schedule as RSchedule } from '../util/rschedule';\nimport { addSyncListener, batchMessages } from '../sync';\nimport { captureBreadcrumb } from '../../platform/exceptions';\nimport { addTransactions } from '../accounts/sync';\nimport { findSchedules } from './find-schedules';\n\nconst connection = require('../../platform/server/connection');\nconst uuid = require('../../platform/uuid');\n\n// Utilities\n\nfunction zip(arr1, arr2) {\n let result = [];\n for (let i = 0; i < arr1.length; i++) {\n result.push([arr1[i], arr2[i]]);\n }\n return result;\n}\n\nexport function updateConditions(conditions, newConditions) {\n let scheduleConds = extractScheduleConds(conditions);\n let newScheduleConds = extractScheduleConds(newConditions);\n\n let replacements = zip(\n Object.values(scheduleConds),\n Object.values(newScheduleConds)\n );\n\n let updated = conditions.map(cond => {\n let r = replacements.find(r => cond === r[0]);\n return r && r[1] ? r[1] : cond;\n });\n\n let added = replacements\n .filter(x => x[0] == null && x[1] != null)\n .map(x => x[1]);\n\n return updated.concat(added);\n}\n\nexport function getNextDate(dateCond, start = new Date()) {\n start = d.startOfDay(start);\n\n let cond = new Condition(\n dateCond.op,\n 'date',\n dateCond.value,\n null,\n new Map(Object.entries({ date: 'date' }))\n );\n let value = cond.getValue();\n\n if (value.type === 'date') {\n return value.date;\n } else if (value.type === 'recur') {\n let dates = value.schedule.occurrences({ start, take: 1 }).toArray();\n\n if (dates.length > 0) {\n let date = dates[0].date;\n return dayFromDate(date);\n }\n }\n return null;\n}\n\nexport async function getRuleForSchedule(id) {\n if (id == null) {\n throw new Error('Schedule not attached to a rule');\n }\n\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n return getRules().find(rule => rule.id === ruleId);\n}\n\nexport async function fixRuleForSchedule(id) {\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n\n if (ruleId) {\n // Take the bad rule out of the system so it never causes problems\n // in the future\n await db.delete_('rules', ruleId);\n }\n\n let newId = await insertRule({\n stage: null,\n conditions: [\n { op: 'isapprox', field: 'date', value: currentDay() },\n { op: 'isapprox', field: 'amount', value: 0 }\n ],\n actions: [{ op: 'link-schedule', value: id }]\n });\n\n await db.updateWithSchema('schedules', { id, rule: newId });\n\n return getRules().find(rule => rule.id === newId);\n}\n\nexport async function setNextDate({ id, start, conditions, reset }) {\n if (conditions == null) {\n let rule = await getRuleForSchedule(id);\n if (rule == null) {\n throw new Error('No rule found for schedule');\n }\n conditions = rule.serialize().conditions;\n }\n\n let { date: dateCond } = extractScheduleConds(conditions);\n\n let { data: nextDate } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('next_date')\n );\n\n // Only do this if a date condition exists\n if (dateCond) {\n let newNextDate = getNextDate(\n dateCond,\n start ? start(nextDate) : new Date()\n );\n\n if (newNextDate !== nextDate) {\n // Our `update` functon requires the id of the item and we don't\n // have it, so we need to query it\n let nd = await db.first(\n 'SELECT id, base_next_date_ts FROM schedules_next_date WHERE schedule_id = ?',\n [id]\n );\n\n await db.update(\n 'schedules_next_date',\n reset\n ? {\n id: nd.id,\n base_next_date: toDateRepr(newNextDate),\n base_next_date_ts: Date.now()\n }\n : {\n id: nd.id,\n local_next_date: toDateRepr(newNextDate),\n local_next_date_ts: nd.base_next_date_ts\n }\n );\n }\n }\n}\n\n// Methods\n\nexport async function createSchedule({ schedule, conditions = [] } = {}) {\n let scheduleId = (schedule && schedule.id) || uuid.v4Sync();\n\n let { date: dateCond } = extractScheduleConds(conditions);\n if (dateCond == null) {\n throw new Error('A date condition is required to create a schedule');\n }\n if (dateCond.value == null) {\n throw new Error('Date is required');\n }\n\n let nextDate = getNextDate(dateCond);\n let nextDateRepr = nextDate ? toDateRepr(nextDate) : null;\n\n // Create the rule here based on the info\n let ruleId;\n ruleId = await insertRule({\n stage: null,\n conditions,\n actions: [{ op: 'link-schedule', value: scheduleId }]\n });\n\n let now = Date.now();\n let nextDateId = await db.insertWithUUID('schedules_next_date', {\n schedule_id: scheduleId,\n local_next_date: nextDateRepr,\n local_next_date_ts: now,\n base_next_date: nextDateRepr,\n base_next_date_ts: now\n });\n\n let id = await db.insertWithSchema('schedules', {\n ...schedule,\n id: scheduleId,\n rule: ruleId\n });\n\n return scheduleId;\n}\n\n// TODO: don't allow deleting rules that link schedules\n\nexport async function updateSchedule({ schedule, conditions, resetNextDate }) {\n if (schedule.rule) {\n throw new Error('You cannot change the rule of a schedule');\n }\n\n // We need the rule if there are conditions\n let rule;\n\n // This must be outside the `batchMessages` call because we change\n // and then read data\n if (conditions) {\n let { date: dateCond } = extractScheduleConds(conditions);\n if (dateCond && dateCond.value == null) {\n throw new Error('Date is required');\n }\n\n // We need to get the full rule to merge in the updated\n // conditions\n rule = await getRuleForSchedule(schedule.id);\n\n if (rule == null) {\n // In the edge case that a rule gets corrupted (either by a bug in\n // the system or user messing with their data), don't crash. We\n // generate a new rule because schedules have to have a rule\n // attached to them.\n rule = await fixRuleForSchedule(schedule.id);\n }\n }\n\n await batchMessages(async () => {\n if (conditions) {\n let oldConditions = rule.serialize().conditions;\n let newConditions = updateConditions(oldConditions, conditions);\n\n await updateRule({ id: rule.id, conditions: newConditions });\n\n // Annoyingly, sometimes it has `type` and sometimes it doesn't\n let stripType = ({ type, ...fields }) => fields;\n\n // Update `next_date` if the user forced it, or if the account\n // or date changed. We check account because we don't update\n // schedules automatically for closed account, and the user\n // might switch accounts from a closed one\n if (\n resetNextDate ||\n !deepEqual(\n oldConditions.find(c => c.field === 'account'),\n oldConditions.find(c => c.field === 'account')\n ) ||\n !deepEqual(\n stripType(oldConditions.find(c => c.field === 'date')),\n stripType(newConditions.find(c => c.field === 'date'))\n )\n ) {\n await setNextDate({\n id: schedule.id,\n conditions: newConditions,\n reset: true\n });\n }\n } else if (resetNextDate) {\n await setNextDate({ id: schedule.id, reset: true });\n }\n\n await db.updateWithSchema('schedules', schedule);\n });\n}\n\nexport async function deleteSchedule({ id }) {\n let { data: ruleId } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .calculate('rule')\n );\n\n await batchMessages(async () => {\n await db.delete_('rules', ruleId);\n await db.delete_('schedules', id);\n });\n}\n\nexport async function skipNextDate({ id }) {\n return setNextDate({\n id,\n start: nextDate => {\n return d.addDays(parseDate(nextDate), 1);\n }\n });\n}\n\n// `schedule` here might not be a saved schedule, so it might not have\n// an id\nexport function getPossibleTransactions({ schedule }) {}\n\nexport function discoverSchedules() {\n return findSchedules();\n}\n\nexport async function getUpcomingDates({ config, count }) {\n let rules = recurConfigToRSchedule(config);\n\n try {\n let schedule = new RSchedule({ rrules: rules });\n\n return schedule\n .occurrences({ start: d.startOfDay(new Date()), take: count })\n .toArray()\n .map(date => dayFromDate(date.date));\n } catch (err) {\n captureBreadcrumb(config);\n throw err;\n }\n}\n\n// Services\n\nfunction onRuleUpdate(rule) {\n let { actions, conditions } =\n rule instanceof Rule ? rule.serialize() : ruleModel.toJS(rule);\n\n if (actions && actions.find(a => a.op === 'link-schedule')) {\n let scheduleId = actions.find(a => a.op === 'link-schedule').value;\n\n if (scheduleId) {\n let conds = extractScheduleConds(conditions);\n\n let payeeIdx = conditions.findIndex(c => c === conds.payee);\n let accountIdx = conditions.findIndex(c => c === conds.account);\n let amountIdx = conditions.findIndex(c => c === conds.amount);\n let dateIdx = conditions.findIndex(c => c === conds.date);\n\n db.runQuery(\n 'INSERT OR REPLACE INTO schedules_json_paths (schedule_id, payee, account, amount, date) VALUES (?, ?, ?, ?, ?)',\n [\n scheduleId,\n payeeIdx === -1 ? null : `$[${payeeIdx}]`,\n accountIdx === -1 ? null : `$[${accountIdx}]`,\n amountIdx === -1 ? null : `$[${amountIdx}]`,\n dateIdx === -1 ? null : `$[${dateIdx}]`\n ]\n );\n }\n }\n}\n\nfunction trackJSONPaths() {\n // Populate the table\n db.transaction(() => {\n getRules().forEach(rule => {\n onRuleUpdate(rule);\n });\n });\n\n return addSyncListener(onApplySync);\n}\n\nfunction onApplySync(oldValues, newValues) {\n let found = false;\n newValues.forEach((items, table) => {\n if (table === 'rules') {\n found = true;\n items.forEach(newValue => {\n onRuleUpdate(newValue);\n });\n }\n });\n}\n\n// This is the service that move schedules forward automatically and\n// posts transactions\n\nasync function postTransactionForSchedule({ id }) {\n let { data } = await aqlQuery(\n q('schedules')\n .filter({ id })\n .select('*')\n );\n let schedule = data[0];\n if (schedule == null || schedule._account == null) {\n return;\n }\n\n let transaction = {\n payee: schedule._payee,\n account: schedule._account,\n amount: getScheduledAmount(schedule._amount),\n date: schedule.next_date,\n schedule: schedule.id,\n cleared: false\n };\n\n if (transaction.account) {\n await addTransactions(transaction.account, [transaction]);\n }\n}\n\n// TODO: make this sequential\n\nexport async function advanceSchedulesService(syncSuccess) {\n // Move all paid schedules\n let { data: schedules } = await aqlQuery(\n q('schedules')\n .filter({ completed: false, '_account.closed': false })\n .select('*')\n );\n let { data: hasTransData } = await aqlQuery(\n getHasTransactionsQuery(schedules)\n );\n let hasTrans = new Set(hasTransData.filter(Boolean).map(row => row.schedule));\n\n let failedToPost = [];\n let didPost = false;\n\n for (let schedule of schedules) {\n let status = getStatus(\n schedule.next_date,\n schedule.completed,\n hasTrans.has(schedule.id)\n );\n\n if (status === 'paid') {\n if (schedule._date) {\n // Move forward recurring schedules\n if (schedule._date.frequency) {\n try {\n await setNextDate({ id: schedule.id });\n } catch (err) {\n // This might error if the rule is corrupted and it can't\n // find the rule\n }\n } else {\n if (schedule._date < currentDay()) {\n // Complete any single schedules\n await updateSchedule({\n schedule: { id: schedule.id, completed: true }\n });\n }\n }\n }\n } else if (\n (status === 'due' || status === 'missed') &&\n schedule.posts_transaction &&\n schedule._account\n ) {\n // Automatically create a transaction for due schedules\n if (syncSuccess) {\n await postTransactionForSchedule({ id: schedule.id });\n\n didPost = true;\n } else {\n failedToPost.push(schedule._payee);\n }\n }\n }\n\n if (failedToPost.length > 0) {\n connection.send('schedules-offline', { payees: failedToPost });\n } else if (didPost) {\n // This forces a full refresh of transactions because it\n // simulates them coming in from a full sync. This not a\n // great API right now, but I think generally the approach\n // is sane to treat them as external sync events.\n connection.send('sync-event', {\n type: 'success',\n tables: ['transactions'],\n syncDisabled: 'false'\n });\n }\n}\n\n// Expose functions to the client\nlet app = createApp();\n\napp.method('schedule/create', mutator(undoable(createSchedule)));\napp.method('schedule/update', mutator(undoable(updateSchedule)));\napp.method('schedule/delete', mutator(undoable(deleteSchedule)));\napp.method('schedule/skip-next-date', mutator(undoable(skipNextDate)));\napp.method(\n 'schedule/post-transaction',\n mutator(undoable(postTransactionForSchedule))\n);\napp.method(\n 'schedule/force-run-service',\n mutator(() => advanceSchedulesService(true))\n);\napp.method('schedule/get-possible-transactions', getPossibleTransactions);\napp.method('schedule/discover', discoverSchedules);\napp.method('schedule/get-upcoming-dates', getUpcomingDates);\n\napp.service(trackJSONPaths);\n\napp.events.on('sync', ({ type, subtype }) => {\n let completeEvent =\n type === 'success' || type === 'error' || type === 'unauthorized';\n\n if (completeEvent && prefs.getPrefs()) {\n let { lastScheduleRun } = prefs.getPrefs();\n\n if (lastScheduleRun !== currentDay()) {\n runMutator(() => advanceSchedulesService(type === 'success'));\n\n prefs.savePrefs({ lastScheduleRun: currentDay() });\n }\n }\n});\n\nexport default app;\n","import * as d from 'date-fns';\nimport * as db from '../db';\nimport { Schedule as RSchedule } from '../util/rschedule';\nimport { groupBy } from '../../shared/util';\nimport { fromDateRepr } from '../models';\nimport { runQuery as aqlQuery } from '../aql/schema/run-query';\nimport q from '../../shared/query';\nimport { getApproxNumberThreshold } from '../../shared/rules';\nimport { recurConfigToRSchedule } from '../../shared/schedules';\nimport { dayFromDate, parseDate, subDays } from '../../shared/months';\nimport { conditionsToAQL } from '../accounts/transaction-rules';\nconst uuid = require('../../platform/uuid');\n\nfunction takeDates(config) {\n let schedule = new RSchedule({ rrules: recurConfigToRSchedule(config) });\n return schedule\n .occurrences({ take: 3 })\n .toArray()\n .map(d => d.date);\n}\n\nasync function getTransactions(date, account) {\n let { data } = await aqlQuery(\n q('transactions')\n .filter({\n account,\n schedule: null,\n // Don't match transfers\n 'payee.transfer_acct': null,\n $and: [\n { date: { $gte: d.subDays(date, 2) } },\n { date: { $lte: d.addDays(date, 2) } }\n ]\n })\n .select('*')\n .options({ splits: 'none' })\n );\n return data;\n}\n\nfunction getRank(day1, day2) {\n let dayDiff = Math.abs(d.differenceInDays(parseDate(day1), parseDate(day2)));\n\n // The amount of days off determines the rank: exact same day\n // is highest rank 1, 1 day off is .5, etc. This will find the\n // best start date that matches all the dates the closest\n return 1 / (dayDiff + 1);\n}\n\nexport function matchSchedules(allOccurs, config, partialMatchRank = 0.5) {\n allOccurs = [...allOccurs].reverse();\n let baseOccur = allOccurs[0];\n let occurs = allOccurs.slice(1);\n let schedules = [];\n\n for (let trans of baseOccur.transactions) {\n let threshold = getApproxNumberThreshold(trans.amount);\n let payee = trans.payee;\n let account = trans.account;\n\n let found = occurs.map(occur => {\n let matched = occur.transactions.find(\n t =>\n t.amount >= trans.amount - threshold &&\n t.amount <= trans.amount + threshold\n );\n matched = matched && matched.payee === payee ? matched : null;\n\n if (matched) {\n return { trans: matched, rank: getRank(occur.date, matched.date) };\n }\n return null;\n });\n\n if (found.indexOf(null) !== -1) {\n continue;\n }\n\n let rank = found.reduce(\n (total, match) => total + match.rank,\n getRank(baseOccur.date, trans.date)\n );\n\n let exactAmount = found.reduce(\n (exact, match) => exact && match.trans.amount === trans.amount,\n true\n );\n\n schedules.push({\n rank,\n amount: trans.amount,\n account: trans.account,\n payee: trans.payee,\n date: config,\n // Exact dates rank as 1, so all of them matches exactly it\n // would equal the number of `allOccurs`\n exactDate: rank === allOccurs.length,\n exactAmount\n });\n }\n\n return schedules;\n}\n\nasync function schedulesForPattern(\n baseStart,\n numDays,\n baseConfig,\n accountId,\n partialMatchRank\n) {\n let schedules = [];\n\n let i = 0;\n for (let i = 0; i < numDays; i++) {\n let start = d.addDays(baseStart, i);\n let config;\n if (typeof baseConfig === 'function') {\n config = baseConfig(start);\n\n if (config === false) {\n // Skip this one\n continue;\n }\n } else {\n config = { ...baseConfig, start };\n }\n\n // Our recur config expects a day string, not a native date format\n config.start = dayFromDate(config.start);\n\n let data = [];\n let dates = takeDates(config);\n for (let date of dates) {\n data.push({\n date: dayFromDate(date),\n transactions: await getTransactions(date, accountId)\n });\n }\n\n schedules = schedules.concat(\n matchSchedules(data, config, partialMatchRank)\n );\n }\n return schedules;\n}\n\nasync function weekly(startDate, accountId) {\n return schedulesForPattern(\n d.subWeeks(parseDate(startDate), 4),\n 7 * 2,\n { frequency: 'weekly' },\n accountId\n );\n}\n\nasync function every2weeks(startDate, accountId) {\n return schedulesForPattern(\n // 6 weeks would cover 3 instances, but we also scan an addition\n // week back\n d.subWeeks(parseDate(startDate), 7),\n 7 * 2,\n { frequency: 'weekly', interval: 2 },\n accountId\n );\n}\n\nasync function monthly(startDate, accountId) {\n return schedulesForPattern(\n d.subMonths(parseDate(startDate), 4),\n 31 * 2,\n start => {\n // 28 is the max number of days that all months are guaranteed\n // to have. We don't want to go any higher than that because\n // we'll end up skipping months that don't have that day.\n // The use cases of end of month days will be covered with the\n // `monthlyLastDay` pattern;\n if (d.getDate(start) > 28) {\n return false;\n }\n return { start, frequency: 'monthly' };\n },\n accountId\n );\n}\n\nasync function monthlyLastDay(startDate, accountId) {\n // We do two separate calls because this pattern doesn't fit into\n // how `schedulesForPattern` works\n let s1 = await schedulesForPattern(\n d.subMonths(parseDate(startDate), 3),\n 1,\n { frequency: 'monthly', patterns: [{ type: 'day', value: -1 }] },\n accountId,\n // Last day patterns should win over day-specific ones that just\n // happen to match\n 0.75\n );\n\n let s2 = await schedulesForPattern(\n d.subMonths(parseDate(startDate), 4),\n 1,\n { frequency: 'monthly', patterns: [{ type: 'day', value: -1 }] },\n accountId,\n 0.75\n );\n\n return s1.concat(s2);\n}\n\nasync function monthly1stor3rd(startDate, accountId) {\n return schedulesForPattern(\n d.subWeeks(parseDate(startDate), 8),\n 14,\n start => {\n let day = d.format(new Date(), 'iiii');\n let dayValue = day.slice(0, 2).toUpperCase();\n\n return {\n start,\n frequency: 'monthly',\n patterns: [{ type: dayValue, value: 1 }, { type: dayValue, value: 3 }]\n };\n },\n accountId\n );\n}\n\nasync function monthly2ndor4th(startDate, accountId) {\n return schedulesForPattern(\n d.subMonths(parseDate(startDate), 8),\n 14,\n start => {\n let day = d.format(new Date(), 'iiii');\n let dayValue = day.slice(0, 2).toUpperCase();\n\n return {\n start,\n frequency: 'monthly',\n patterns: [{ type: dayValue, value: 2 }, { type: dayValue, value: 4 }]\n };\n },\n accountId\n );\n}\n\nasync function findStartDate(schedule) {\n let conditions = schedule._conditions;\n let dateCond = conditions.find(c => c.field === 'date');\n let currentConfig = dateCond.value;\n\n while (1) {\n let prevConfig = currentConfig;\n currentConfig = { ...prevConfig };\n\n switch (currentConfig.frequency) {\n case 'weekly':\n currentConfig.start = dayFromDate(\n d.subWeeks(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n\n break;\n case 'monthly':\n currentConfig.start = dayFromDate(\n d.subMonths(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n break;\n case 'yearly':\n currentConfig.start = dayFromDate(\n d.subYears(\n parseDate(currentConfig.start),\n currentConfig.interval || 1\n )\n );\n break;\n default:\n throw new Error('findStartDate: invalid frequency');\n }\n\n let newConditions = conditions.map(c =>\n c.field === 'date' ? { ...c, value: currentConfig } : c\n );\n\n let { filters, errors } = conditionsToAQL(newConditions, {\n recurDateBounds: 1\n });\n if (errors.length > 0) {\n // Somehow we generated an invalid config. Abort the whole\n // process and don't change the date at all\n currentConfig = null;\n break;\n }\n\n let { data } = await aqlQuery(\n q('transactions')\n .filter({ $and: filters })\n .select('*')\n );\n\n if (data.length === 0) {\n // No data, revert back to the last valid value and stop\n currentConfig = prevConfig;\n break;\n }\n }\n\n if (currentConfig) {\n return {\n ...schedule,\n date: currentConfig,\n _conditions: conditions.map(c =>\n c.field === 'date' ? { ...c, value: currentConfig } : c\n )\n };\n }\n return schedule;\n}\n\nexport async function findSchedules() {\n // Patterns to look for:\n // * Weekly\n // * Every two weeks\n // * Monthly on day X\n // * Monthly on every 1st or 3rd day\n // * Monthly on every 2nd or 4th day\n //\n // Search for them approx (+- 2 days) but track which transactions\n // and find the best one...\n\n let { data: accounts } = await aqlQuery(\n q('accounts')\n .filter({ closed: false })\n .select('*')\n );\n\n let allSchedules = [];\n\n for (let account of accounts) {\n // Find latest transaction-ish to start with\n let latestTrans = await db.first(\n 'SELECT * FROM v_transactions WHERE account = ? AND parent_id IS NULL ORDER BY date DESC LIMIT 1',\n [account.id]\n );\n\n if (latestTrans) {\n let latestDate = fromDateRepr(latestTrans.date);\n allSchedules = allSchedules.concat(\n await weekly(latestDate, account.id),\n await every2weeks(latestDate, account.id),\n await monthly(latestDate, account.id),\n await monthlyLastDay(latestDate, account.id),\n await monthly1stor3rd(latestDate, account.id),\n await monthly2ndor4th(latestDate, account.id)\n );\n }\n }\n\n let schedules = [...groupBy(allSchedules, 'payee').entries()].map(\n ([payeeId, schedules]) => {\n schedules.sort((s1, s2) => s2.rank - s1.rank);\n let winner = schedules[0];\n\n // Convert to schedule and return it\n return {\n id: uuid.v4Sync(),\n account: winner.account,\n payee: winner.payee,\n date: winner.date,\n amount: winner.amount,\n _conditions: [\n { op: 'is', field: 'account', value: winner.account },\n { op: 'is', field: 'payee', value: winner.payee },\n {\n op: winner.exactDate ? 'is' : 'isapprox',\n field: 'date',\n value: winner.date\n },\n {\n op: winner.exactAmount ? 'is' : 'isapprox',\n field: 'amount',\n value: winner.amount\n }\n ]\n };\n }\n );\n\n let finalized = [];\n for (let schedule of schedules) {\n finalized.push(await findStartDate(schedule));\n }\n return finalized;\n}\n","import Spreadsheet from './spreadsheet/spreadsheet';\nimport * as prefs from './prefs';\nimport { captureBreadcrumb } from '../platform/exceptions';\nimport * as sqlite from '../platform/server/sqlite';\nimport { sheetForMonth } from '../shared/months';\nimport Platform from './platform';\nconst { resolveName } = require('./spreadsheet/util');\n\nlet globalSheet, globalOnChange;\nlet globalCacheDb;\n\nexport function get() {\n return globalSheet;\n}\n\nasync function updateSpreadsheetCache(rawDb, names) {\n await sqlite.transaction(rawDb, () => {\n names.forEach(name => {\n const node = globalSheet._getNode(name);\n\n // Don't cache query nodes yet\n if (node.sql == null) {\n sqlite.runQuery(\n rawDb,\n 'INSERT OR REPLACE INTO kvcache (key, value) VALUES (?, ?)',\n [name, JSON.stringify(node.value)]\n );\n }\n });\n });\n}\n\nfunction setCacheStatus(mainDb, cacheDb, { clean }) {\n if (clean) {\n // Generate random number and stick in both places\n let num = Math.random() * 10000000;\n sqlite.runQuery(\n cacheDb,\n 'INSERT OR REPLACE INTO kvcache_key (id, key) VALUES (1, ?)',\n [num]\n );\n\n if (mainDb) {\n sqlite.runQuery(\n mainDb,\n 'INSERT OR REPLACE INTO kvcache_key (id, key) VALUES (1, ?)',\n [num]\n );\n }\n } else {\n sqlite.runQuery(cacheDb, 'DELETE FROM kvcache_key');\n }\n}\n\nfunction isCacheDirty(mainDb, cacheDb) {\n let rows = sqlite.runQuery(\n cacheDb,\n 'SELECT key FROM kvcache_key WHERE id = 1',\n [],\n true\n );\n let num = rows.length === 0 ? null : rows[0].key;\n\n if (num == null) {\n return true;\n }\n\n if (mainDb) {\n let rows = sqlite.runQuery(\n mainDb,\n 'SELECT key FROM kvcache_key WHERE id = 1',\n [],\n true\n );\n if (rows.length === 0 || rows[0].key !== num) {\n return true;\n }\n }\n\n // Always also check if there is anything in `kvcache`. We ask for one item;\n // if we didn't get back anything it's empty so there is no cache\n rows = sqlite.runQuery(cacheDb, 'SELECT * FROM kvcache LIMIT 1', [], true);\n return rows.length === 0;\n}\n\nexport async function loadSpreadsheet(db, onSheetChange) {\n let cacheEnabled = !global.__TESTING__;\n let mainDb = db.getDatabase();\n let cacheDb;\n\n if (Platform.isDesktop && cacheEnabled) {\n // Desktop apps use a separate database for the cache. This is because it is\n // much more likely to directly work with files on desktop, and this makes\n // it a lot clearer what the true filesize of the main db is (and avoid\n // copying the cache data around).\n let cachePath = db.getDatabasePath().replace(/db\\.sqlite$/, 'cache.sqlite');\n globalCacheDb = cacheDb = sqlite.openDatabase(cachePath);\n\n sqlite.execQuery(\n cacheDb,\n `\n CREATE TABLE IF NOT EXISTS kvcache (key TEXT PRIMARY KEY, value TEXT);\n CREATE TABLE IF NOT EXISTS kvcache_key (id INTEGER PRIMARY KEY, key REAL)\n `\n );\n } else {\n // All other platforms use the same database for cache\n cacheDb = mainDb;\n }\n\n let sheet;\n if (cacheEnabled) {\n sheet = new Spreadsheet(\n updateSpreadsheetCache.bind(null, cacheDb),\n setCacheStatus.bind(null, mainDb, cacheDb)\n );\n } else {\n sheet = new Spreadsheet();\n }\n\n captureBreadcrumb({\n message: 'loading spreaadsheet',\n category: 'server'\n });\n\n globalSheet = sheet;\n globalOnChange = onSheetChange;\n\n if (onSheetChange) {\n sheet.addEventListener('change', onSheetChange);\n }\n\n if (cacheEnabled && !isCacheDirty(mainDb, cacheDb)) {\n let cachedRows = await sqlite.runQuery(\n cacheDb,\n 'SELECT * FROM kvcache',\n [],\n true\n );\n console.log(`Loaded spreadsheet from cache (${cachedRows.length} items)`);\n\n for (let row of cachedRows) {\n let parsed = JSON.parse(row.value);\n sheet.load(row.key, parsed);\n }\n } else {\n console.log('Loading fresh spreadsheet');\n await loadUserBudgets(db);\n }\n\n captureBreadcrumb({\n message: 'loaded spreaadsheet',\n category: 'server'\n });\n\n return sheet;\n}\n\nexport function unloadSpreadsheet() {\n if (globalSheet) {\n // TODO: Should wait for the sheet to finish\n globalSheet.unload();\n globalSheet = null;\n }\n\n if (globalCacheDb) {\n sqlite.closeDatabase(globalCacheDb);\n globalCacheDb = null;\n }\n}\n\nexport async function reloadSpreadsheet(db) {\n if (globalSheet) {\n unloadSpreadsheet();\n return loadSpreadsheet(db, globalOnChange);\n }\n}\n\nexport async function loadUserBudgets(db) {\n let sheet = globalSheet;\n\n // TODO: Clear out the cache here so make sure future loads of the app\n // don't load any extra values that aren't set here\n\n let { budgetType } = prefs.getPrefs() || {};\n\n let table = budgetType === 'report' ? 'reflect_budgets' : 'zero_budgets';\n let budgets = await db.all(`\n SELECT * FROM ${table} b\n LEFT JOIN categories c ON c.id = b.category\n WHERE c.tombstone = 0\n `);\n\n sheet.startTransaction();\n\n // Load all the budget amounts and carryover values\n for (let budget of budgets) {\n if (budget.month && budget.category) {\n let sheetName = `budget${budget.month}`;\n sheet.set(`${sheetName}!budget-${budget.category}`, budget.amount);\n sheet.set(\n `${sheetName}!carryover-${budget.category}`,\n budget.carryover === 1 ? true : false\n );\n }\n }\n\n // For zero-based budgets, load the buffered amounts\n if (budgetType !== 'report') {\n let budgetMonths = await db.all('SELECT * FROM zero_budget_months');\n for (let budgetMonth of budgetMonths) {\n let sheetName = sheetForMonth(budgetMonth.id);\n sheet.set(`${sheetName}!buffered`, budgetMonth.buffered);\n }\n }\n\n sheet.endTransaction();\n}\n\nexport function getCell(sheet, name) {\n return globalSheet._getNode(resolveName(sheet, name));\n}\n\nexport function getCellValue(sheet, name) {\n return globalSheet.getValue(resolveName(sheet, name));\n}\n\nexport function startTransaction() {\n if (globalSheet) {\n globalSheet.startTransaction();\n }\n}\n\nexport function endTransaction() {\n if (globalSheet) {\n globalSheet.endTransaction();\n }\n}\n\nexport function waitOnSpreadsheet() {\n return new Promise(resolve => {\n if (globalSheet) {\n globalSheet.onFinish(resolve);\n } else {\n resolve();\n }\n });\n}\n","function first(arr) {\n return arr[0];\n}\n\nfunction firstValue(arr) {\n const keys = Object.keys(arr[0]);\n return arr[0][keys[0]];\n}\n\nfunction number(v) {\n if (typeof v === 'number') {\n return v;\n } else if (typeof v === 'string') {\n const parsed = parseFloat(v);\n if (isNaN(parsed)) {\n return 0;\n }\n return parsed;\n }\n\n return 0;\n}\n\nfunction min(x, y) {\n return Math.min(x, y);\n}\n\nfunction max(x, y) {\n return Math.max(x, y);\n}\n\nmodule.exports = {\n first,\n firstValue,\n number,\n min,\n max\n};\n","function Graph(serialized) {\n var graph = {\n addNode,\n removeNode,\n adjacent,\n adjacentIncoming,\n addEdge,\n removeEdge,\n removeIncomingEdges,\n topologicalSort,\n generateDOT,\n getEdges\n };\n\n var edges = new Map();\n var incomingEdges = new Map();\n\n function getEdges() {\n return { edges, incomingEdges };\n }\n\n function addNode(node) {\n edges.set(node, adjacent(node));\n incomingEdges.set(node, adjacentIncoming(node));\n return graph;\n }\n\n function removeIncomingEdges(node) {\n const incoming = adjacentIncoming(node);\n incomingEdges.set(node, new Set());\n\n let iter = incoming.values();\n let cur = iter.next();\n while (!cur.done) {\n removeEdge(cur.value, node);\n cur = iter.next();\n }\n }\n\n function removeNode(node) {\n removeIncomingEdges(node);\n edges.delete(node);\n incomingEdges.delete(node);\n }\n\n function adjacent(node) {\n return edges.get(node) || new Set();\n }\n\n function adjacentIncoming(node) {\n return incomingEdges.get(node) || new Set();\n }\n\n // Adds an edge from node u to node v.\n // Implicitly adds the nodes if they were not already added.\n function addEdge(node1, node2) {\n addNode(node1);\n addNode(node2);\n adjacent(node1).add(node2);\n adjacentIncoming(node2).add(node1);\n return graph;\n }\n\n // Removes the edge from node u to node v.\n // Does not remove the nodes.\n // Does nothing if the edge does not exist.\n function removeEdge(node1, node2) {\n if (edges.has(node1)) {\n adjacent(node1).delete(node2);\n }\n if (incomingEdges.has(node2)) {\n adjacentIncoming(node2).delete(node1);\n }\n return graph;\n }\n\n function topologicalSortUntil(name, visited, sorted) {\n visited.add(name);\n\n let iter = adjacent(name).values();\n let cur = iter.next();\n while (!cur.done) {\n if (!visited.has(cur.value)) {\n topologicalSortUntil(cur.value, visited, sorted);\n }\n cur = iter.next();\n }\n\n sorted.unshift(name);\n }\n\n function topologicalSort(sourceNodes) {\n const visited = new Set();\n const sorted = [];\n\n sourceNodes.forEach(name => {\n if (!visited.has(name)) {\n topologicalSortUntil(name, visited, sorted);\n }\n });\n\n return sorted;\n }\n\n function generateDOT() {\n let edgeStrings = [];\n edges.forEach(function(adj, edge) {\n if (adj.length !== 0) {\n edgeStrings.push(`${edge} -> {${adj.join(',')}}`);\n }\n });\n\n return `\n digraph G {\n ${edgeStrings.join('\\n').replace(/!/g, '_')}\n }\n `;\n }\n\n return graph;\n}\n\nmodule.exports = Graph;\n","import mitt from 'mitt';\nimport { schema, schemaConfig } from '../aql/schema';\nimport { compileQuery } from '../aql/compiler';\nimport { runCompiledQuery } from '../aql/schema/run-query';\n\nconst Graph = require('./graph-data-structure');\nconst { unresolveName, resolveName } = require('./util');\n\nexport default class Spreadsheet {\n constructor(saveCache, setCacheStatus) {\n this.graph = new Graph();\n this.nodes = new Map();\n this.transactionDepth = 0;\n this.saveCache = saveCache;\n this.setCacheStatus = setCacheStatus;\n this.dirtyCells = [];\n this.computeQueue = [];\n this.events = mitt();\n this._meta = {\n createdMonths: new Set()\n };\n }\n\n meta() {\n return this._meta;\n }\n\n setMeta(meta) {\n this._meta = meta;\n }\n\n // Spreadsheet interface\n\n _getNode(name) {\n const { sheet } = unresolveName(name);\n\n if (!this.nodes.has(name)) {\n this.nodes.set(name, {\n name,\n expr: null,\n value: null,\n sheet: sheet\n });\n }\n return this.nodes.get(name);\n }\n\n getNode(name) {\n return this._getNode(name);\n }\n\n hasCell(name) {\n return this.nodes.has(name);\n }\n\n add(name, expr, value) {\n this.set(name, expr);\n }\n\n getNodes() {\n return this.nodes;\n }\n\n serialize() {\n return {\n graph: this.graph.getEdges(),\n nodes: [...this.nodes.entries()]\n };\n }\n\n transaction(func) {\n this.startTransaction();\n try {\n func();\n } catch (e) {\n console.log(e);\n }\n return this.endTransaction();\n }\n\n startTransaction() {\n this.transactionDepth++;\n }\n\n endTransaction() {\n this.transactionDepth--;\n\n if (this.transactionDepth === 0) {\n const cells = this.dirtyCells;\n this.dirtyCells = [];\n\n this.queueComputation(this.graph.topologicalSort(cells));\n }\n\n return [];\n }\n\n queueComputation(cellNames) {\n // TODO: Formally write out the different cases when the existing\n // queue is not empty. There should be cases where we can easily\n // optimize this by skipping computations if we know they are\n // going to be computed again. The hard thing is to ensure that\n // the order of computations stays correct\n\n this.computeQueue = this.computeQueue.concat(cellNames);\n\n // Begin running on the next tick so we guarantee that it doesn't finish\n // within the same tick. Since some computations are async, this makes it\n // consistent (otherwise it would only sometimes finish sync)\n Promise.resolve().then(() => {\n if (!this.running) {\n this.runComputations();\n }\n });\n }\n\n runComputations(idx = 0) {\n this.running = true;\n\n while (idx < this.computeQueue.length) {\n let name = this.computeQueue[idx];\n let node;\n let result;\n\n try {\n node = this.getNode(name);\n\n if (node._run) {\n let args = node._dependencies.map(dep => {\n return this.getNode(dep).value;\n });\n\n result = node._run(...args);\n\n if (result instanceof Promise) {\n console.warn(\n 'dynamic cell returned a promise! this is discouraged because errors are not handled properly'\n );\n }\n } else if (node.sql) {\n result = runCompiledQuery(\n node.query,\n node.sql.sqlPieces,\n node.sql.state\n );\n } else {\n idx++;\n continue;\n }\n } catch (e) {\n console.log('Error while evaluating ' + name + ':', e);\n // If an error happens, bail on the rest of the computations\n this.running = false;\n this.computeQueue = [];\n return;\n }\n\n if (result instanceof Promise) {\n // When the cell is finished computing, finish computing the\n // rest\n result.then(\n value => {\n node.value = value;\n this.runComputations(idx + 1);\n },\n err => {\n // TODO: use captureException here\n console.warn(`Failed running ${node.name}!`, err);\n this.runComputations(idx + 1);\n }\n );\n\n return;\n } else {\n node.value = result;\n }\n\n idx++;\n }\n\n // If everything computed in one loop (no async operations) notify\n // the user and empty the queue\n if (idx === this.computeQueue.length) {\n this.events.emit('change', { names: this.computeQueue });\n\n // Cache the updated cells\n if (this.saveCache) {\n this.saveCache(this.computeQueue);\n }\n this.markCacheSafe();\n\n this.running = false;\n this.computeQueue = [];\n }\n }\n\n markCacheSafe() {\n if (!this.cacheBarrier) {\n if (this.setCacheStatus) {\n this.setCacheStatus({ clean: true });\n }\n }\n }\n\n markCacheDirty() {\n if (this.setCacheStatus) {\n this.setCacheStatus({ clean: false });\n }\n }\n\n startCacheBarrier() {\n this.cacheBarrier = true;\n this.markCacheDirty();\n }\n\n endCacheBarrier() {\n this.cacheBarrier = false;\n\n let pendingChange = this.running || this.computeQueue.length > 0;\n if (!pendingChange) {\n this.markCacheSafe();\n }\n }\n\n addEventListener(name, func) {\n this.events.on(name, func);\n return () => this.events.off(name, func);\n }\n\n onFinish(func) {\n if (this.transactionDepth !== 0) {\n throw new Error(\n 'onFinish called while inside a spreadsheet transaction. This is not allowed as it will lead to race conditions'\n );\n }\n\n if (!this.running && this.computeQueue.length === 0) {\n func([]);\n // The remove function does nothing\n return () => {};\n }\n\n let remove = this.addEventListener('change', (...args) => {\n remove();\n return func(...args);\n });\n return remove;\n }\n\n unload() {\n this.events.all.clear();\n }\n\n getValue(name) {\n return this.getNode(name).value;\n }\n\n getExpr(name) {\n return this.getNode(name).expr;\n }\n\n getCellValue(sheet, name) {\n return this.getNode(resolveName(sheet, name)).value;\n }\n\n getCellExpr(sheet, name) {\n return this.getNode(resolveName(sheet, name)).expr;\n }\n\n getCellValueLoose(sheetName, cellName) {\n let name = resolveName(sheetName, cellName);\n if (this.nodes.has(name)) {\n return this.getNode(name).value;\n }\n return null;\n }\n\n bootup(onReady) {\n this.onFinish(() => {\n onReady();\n });\n }\n\n load(name, value) {\n const node = this._getNode(name);\n node.expr = value;\n node.value = value;\n }\n\n create(name, value) {\n return this.transaction(() => {\n const node = this._getNode(name);\n node.expr = value;\n node.value = value;\n this._markDirty(name);\n });\n }\n\n set(name, value) {\n this.create(name, value);\n }\n\n recompute(name) {\n this.transaction(() => {\n this.dirtyCells.push(name);\n });\n }\n\n recomputeAll() {\n // Recompute everything!\n this.transaction(() => {\n this.dirtyCells = [...this.nodes.keys()];\n });\n }\n\n createQuery(sheetName, cellName, query) {\n let name = resolveName(sheetName, cellName);\n let node = this._getNode(name);\n\n if (node.query !== query) {\n node.query = query;\n let { sqlPieces, state } = compileQuery(node.query, schema, schemaConfig);\n node.sql = { sqlPieces, state };\n\n this.transaction(() => {\n this._markDirty(name);\n });\n }\n }\n\n createStatic(sheetName, cellName, initialValue) {\n let name = resolveName(sheetName, cellName);\n let exists = this.nodes.has(name);\n if (!exists) {\n this.create(name, initialValue);\n }\n }\n\n createDynamic(\n sheetName,\n cellName,\n { dependencies = [], run, initialValue, refresh }\n ) {\n let name = resolveName(sheetName, cellName);\n let node = this._getNode(name);\n\n if (node.dynamic) {\n // If it already exists, do nothing\n return;\n }\n\n node.dynamic = true;\n node._run = run;\n\n dependencies = dependencies.map(dep => {\n let resolved;\n if (!unresolveName(dep).sheet) {\n resolved = resolveName(sheetName, dep);\n } else {\n resolved = dep;\n }\n\n return resolved;\n });\n\n node._dependencies = dependencies;\n\n // TODO: diff these\n this.graph.removeIncomingEdges(name);\n dependencies.forEach(dep => {\n this.graph.addEdge(dep, name);\n });\n\n if (node.value == null || refresh) {\n this.transaction(() => {\n node.value = initialValue;\n this._markDirty(name);\n });\n }\n }\n\n clearSheet(sheetName) {\n for (let [name, node] of this.nodes.entries()) {\n if (node.sheet === sheetName) {\n this.nodes.delete(name);\n }\n }\n }\n\n voidCell(sheetName, name, voidValue = null) {\n let node = this.getNode(resolveName(sheetName, name));\n node._run = null;\n node.dynamic = false;\n node.value = voidValue;\n }\n\n deleteCell(sheetName, name) {\n this.voidCell(sheetName, name);\n this.nodes.delete(resolveName(sheetName, name));\n }\n\n addDependencies(sheetName, cellName, deps) {\n let name = resolveName(sheetName, cellName);\n\n deps = deps.map(dep => {\n if (!unresolveName(dep).sheet) {\n return resolveName(sheetName, dep);\n }\n return dep;\n });\n\n let node = this.getNode(name);\n let newDeps = deps.filter(\n dep => (node._dependencies || []).indexOf(dep) === -1\n );\n\n if (newDeps.length > 0) {\n node._dependencies = (node._dependencies || []).concat(newDeps);\n newDeps.forEach(dep => {\n this.graph.addEdge(dep, name);\n });\n this.recompute(name);\n }\n }\n\n removeDependencies(sheetName, cellName, deps) {\n let name = resolveName(sheetName, cellName);\n\n deps = deps.map(dep => {\n if (!unresolveName(dep).sheet) {\n return resolveName(sheetName, dep);\n }\n return dep;\n });\n\n let node = this.getNode(name);\n\n node._dependencies = (node._dependencies || []).filter(\n dep => deps.indexOf(dep) === -1\n );\n\n deps.forEach(dep => {\n this.graph.removeEdge(dep, name);\n });\n this.recompute(name);\n }\n\n _markDirty(name) {\n this.dirtyCells.push(name);\n }\n\n triggerDatabaseChanges(oldValues, newValues) {\n let tables = new Set([...oldValues.keys(), ...newValues.keys()]);\n\n this.startTransaction();\n // TODO: Create an index of deps so we don't have to iterate\n // across all nodes\n this.nodes.forEach(node => {\n if (\n node.sql &&\n node.sql.state.dependencies.some(dep => tables.has(dep))\n ) {\n this._markDirty(node.name);\n }\n });\n this.endTransaction();\n }\n}\n","function unresolveName(name) {\n let idx = name.indexOf('!');\n if (idx !== -1) {\n return {\n sheet: name.slice(0, idx),\n name: name.slice(idx + 1)\n };\n }\n return { sheet: null, name };\n}\n\nfunction resolveName(sheet, name) {\n return sheet + '!' + name;\n}\n\nfunction resolveNamesAsObjects(sheets) {\n const cells = {};\n Object.keys(sheets).forEach(sheetName => {\n const sheet = sheets[sheetName];\n\n Object.keys(sheet).forEach(name => {\n const expr = sheet[name];\n cells[resolveName(sheetName, name)] = expr;\n });\n });\n return cells;\n}\n\nfunction resolveNamesAsArrays(sheets) {\n const cells = [];\n Object.keys(sheets).forEach(sheetName => {\n const sheet = sheets[sheetName];\n\n sheet.forEach(name => {\n const expr = sheet[name];\n cells.push(resolveName(sheetName, name));\n });\n });\n return cells;\n}\n\nmodule.exports = {\n unresolveName,\n resolveName,\n resolveNamesAsObjects,\n resolveNamesAsArrays\n};\n","import encryption from '../encryption';\nimport * as prefs from '../prefs';\nlet { SyncError } = require('../errors');\nlet SyncPb = require('./proto/sync_pb');\n\nfunction coerceBuffer(value) {\n // The web encryption APIs give us back raw Uint8Array... but our\n // encryption code assumes we can work with it as a buffer. This is\n // a leaky abstraction and ideally the our abstraction over the web\n // encryption APIs should do this.\n if (!Buffer.isBuffer(value)) {\n return Buffer.from(value);\n }\n return value;\n}\n\nexport async function encode(groupId, fileId, since, messages) {\n let { encryptKeyId } = prefs.getPrefs();\n let requestPb = new SyncPb.SyncRequest();\n\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let envelopePb = new SyncPb.MessageEnvelope();\n envelopePb.setTimestamp(msg.timestamp);\n\n let messagePb = new SyncPb.Message();\n messagePb.setDataset(msg.dataset);\n messagePb.setRow(msg.row);\n messagePb.setColumn(msg.column);\n messagePb.setValue(msg.value);\n let binaryMsg = messagePb.serializeBinary();\n\n if (encryptKeyId) {\n let encrypted = new SyncPb.EncryptedData();\n\n let result;\n try {\n result = await encryption.encrypt(binaryMsg, encryptKeyId);\n } catch (e) {\n throw new SyncError('encrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n\n encrypted.setData(result.value);\n encrypted.setIv(Buffer.from(result.meta.iv, 'base64'));\n encrypted.setAuthtag(Buffer.from(result.meta.authTag, 'base64'));\n\n envelopePb.setContent(encrypted.serializeBinary());\n envelopePb.setIsencrypted(true);\n } else {\n envelopePb.setContent(binaryMsg);\n }\n\n requestPb.addMessages(envelopePb);\n }\n\n requestPb.setGroupid(groupId);\n requestPb.setFileid(fileId);\n requestPb.setKeyid(encryptKeyId);\n requestPb.setSince(since);\n\n return requestPb.serializeBinary();\n}\n\nexport async function decode(data) {\n let { encryptKeyId } = prefs.getPrefs();\n\n let responsePb = SyncPb.SyncResponse.deserializeBinary(data);\n let merkle = JSON.parse(responsePb.getMerkle());\n let list = responsePb.getMessagesList();\n let messages = [];\n\n for (let i = 0; i < list.length; i++) {\n let envelopePb = list[i];\n let timestamp = envelopePb.getTimestamp();\n let encrypted = envelopePb.getIsencrypted();\n let msg;\n\n if (encrypted) {\n let binary = SyncPb.EncryptedData.deserializeBinary(\n envelopePb.getContent()\n );\n\n let decrypted;\n try {\n decrypted = await encryption.decrypt(coerceBuffer(binary.getData()), {\n keyId: encryptKeyId,\n algorithm: 'aes-256-gcm',\n iv: coerceBuffer(binary.getIv()),\n authTag: coerceBuffer(binary.getAuthtag())\n });\n } catch (e) {\n console.log(e);\n throw new SyncError('decrypt-failure', {\n isMissingKey: e.message === 'missing-key'\n });\n }\n\n msg = SyncPb.Message.deserializeBinary(decrypted);\n } else {\n msg = SyncPb.Message.deserializeBinary(envelopePb.getContent());\n }\n\n messages.push({\n timestamp: timestamp,\n dataset: msg.getDataset(),\n row: msg.getRow(),\n column: msg.getColumn(),\n value: msg.getValue()\n });\n }\n\n return { messages, merkle };\n}\n","import { sequential, once } from '../../shared/async';\nimport * as perf from '../perf';\nimport * as prefs from '../prefs';\nimport app from '../main-app';\nimport asyncStorage from '../../platform/server/asyncStorage';\nimport { captureException } from '../../platform/exceptions';\nimport logger from '../../platform/server/log';\nimport { postBinary } from '../post';\nimport * as db from '../db';\nimport * as sheet from '../sheet';\nimport { triggerBudgetChanges, setType as setBudgetType } from '../budget/base';\nimport * as undo from '../undo';\nimport { runMutator } from '../mutators';\nimport { setIn, getIn } from '../../shared/util';\nimport Timestamp, {\n serializeClock,\n deserializeClock,\n getClock\n} from '../timestamp';\nimport * as merkle from '../merkle';\nimport * as encoder from './encoder';\nimport { getConfig } from '../config';\nimport { rebuildMerkleHash } from './repair';\n\nconst { PostError, SyncError } = require('../errors');\nconst connection = require('../../platform/server/connection');\n\nlet FULL_SYNC_DELAY = 1000;\nlet SYNCING_MODE = 'enabled';\n\nexport function setSyncingMode(mode) {\n let prevMode = SYNCING_MODE;\n switch (mode) {\n case 'enabled':\n SYNCING_MODE = 'enabled';\n break;\n case 'offline':\n SYNCING_MODE = 'offline';\n break;\n case 'disabled':\n SYNCING_MODE = 'disabled';\n break;\n case 'import':\n SYNCING_MODE = 'import';\n break;\n default:\n throw new Error('setSyncingMode: invalid mode: ' + mode);\n }\n return prevMode;\n}\n\nexport function checkSyncingMode(mode) {\n switch (mode) {\n case 'enabled':\n return SYNCING_MODE === 'enabled' || SYNCING_MODE === 'offline';\n case 'disabled':\n return SYNCING_MODE === 'disabled' || SYNCING_MODE === 'import';\n case 'offline':\n return SYNCING_MODE === 'offline';\n case 'import':\n return SYNCING_MODE === 'import';\n default:\n throw new Error('checkSyncingMode: invalid mode: ' + mode);\n }\n}\n\nexport makeTestMessage from './make-test-message';\nexport resetSync from './reset';\nexport repairSync from './repair';\n\nfunction apply(msg, prev) {\n let { dataset, row, column, value } = msg;\n\n if (dataset === 'prefs') {\n // Do nothing, it doesn't exist in the db\n } else {\n try {\n let query;\n if (prev) {\n query = {\n sql: db.cache(`UPDATE ${dataset} SET ${column} = ? WHERE id = ?`),\n params: [value, row]\n };\n } else {\n query = {\n sql: db.cache(`INSERT INTO ${dataset} (id, ${column}) VALUES (?, ?)`),\n params: [row, value]\n };\n }\n\n db.runQuery(query.sql, query.params);\n } catch (e) {\n //console.log(e);\n throw new SyncError('invalid-schema');\n }\n }\n}\n\nasync function fetchAll(table, ids) {\n let results = [];\n\n // TODO: convert to `whereIn`\n\n for (let i = 0; i < ids.length; i += 500) {\n let partIds = ids.slice(i, i + 500);\n let sql;\n let column = `${table}.id`;\n\n // We have to provide *mapped* data so the spreadsheet works. The functions\n // which trigger budget changes based on data changes assumes data has been\n // mapped. The only mapped data that the budget is concerned about is\n // categories. This is kind of annoying, but we manually map it here\n if (table === 'transactions') {\n sql = `\n SELECT t.*, c.transferId AS category\n FROM transactions t\n LEFT JOIN category_mapping c ON c.id = t.category\n `;\n column = 't.id';\n } else {\n sql = `SELECT * FROM ${table}`;\n }\n\n sql += ` WHERE `;\n sql += partIds.map(id => `${column} = ?`).join(' OR ');\n\n try {\n let rows = await db.runQuery(sql, partIds, true);\n results = results.concat(rows);\n } catch (e) {\n throw new SyncError('invalid-schema');\n }\n }\n\n return results;\n}\n\nexport function serializeValue(value) {\n if (value === null) {\n return '0:';\n } else if (typeof value === 'number') {\n return 'N:' + value;\n } else if (typeof value === 'string') {\n return 'S:' + value;\n }\n\n throw new Error('Unserializable value type: ' + JSON.stringify(value));\n}\n\nexport function deserializeValue(value) {\n const type = value[0];\n switch (type) {\n case '0':\n return null;\n case 'N':\n return parseFloat(value.slice(2));\n case 'S':\n return value.slice(2);\n default:\n }\n\n throw new Error('Invalid type key for value: ' + value);\n}\n\nlet _syncListeners = [];\n\nexport function addSyncListener(func) {\n _syncListeners.push(func);\n\n return () => {\n _syncListeners = _syncListeners.filter(f => f !== func);\n };\n}\n\nasync function compareMessages(messages) {\n let newMessages = [];\n\n for (let i = 0; i < messages.length; i++) {\n let message = messages[i];\n let { dataset, row, column, timestamp } = message;\n let timestampStr = timestamp.toString();\n\n let res = db.runQuery(\n db.cache(\n 'SELECT timestamp FROM messages_crdt WHERE dataset = ? AND row = ? AND column = ? AND timestamp >= ?'\n ),\n [dataset, row, column, timestampStr],\n true\n );\n\n // Returned message is any one that is \"later\" than this message,\n // meaning if the result exists this message is an old one\n if (res.length === 0) {\n newMessages.push(message);\n } else if (res[0].timestamp !== timestampStr) {\n newMessages.push({ ...message, old: true });\n }\n }\n\n return newMessages;\n}\n\n// This is the fast path `apply` function when in \"import\" mode.\n// There's no need to run through the whole sync system when\n// importing, but **there is a caveat**: because we don't run sync\n// listeners importers should not rely on any functions that use any\n// projected state (like rules). We can't fire those because they\n// depend on having both old and new data which we don't quere here\nfunction applyMessagesForImport(messages) {\n db.transaction(() => {\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let { dataset, row, column, timestamp, value } = msg;\n\n if (!msg.old) {\n try {\n apply(msg);\n } catch (e) {\n apply(msg, true);\n }\n\n if (dataset === 'prefs') {\n throw new Error('Cannot set prefs while importing');\n }\n }\n }\n });\n}\n\nexport const applyMessages = sequential(async messages => {\n if (checkSyncingMode('import')) {\n return applyMessagesForImport(messages);\n } else if (checkSyncingMode('enabled')) {\n // Compare the messages with the existing crdt. This filters out\n // already applied messages and determines if a message is old or\n // not. An \"old\" message doesn't need to be applied, but it still\n // needs to be put into the merkle trie to maintain the hash.\n messages = await compareMessages(messages);\n }\n\n messages = [...messages].sort((m1, m2) => {\n let t1 = m1.timestamp ? m1.timestamp.toString() : '';\n let t2 = m2.timestamp ? m2.timestamp.toString() : '';\n if (t1 < t2) {\n return -1;\n } else if (t1 > t2) {\n return 1;\n }\n return 0;\n });\n\n let idsPerTable = {};\n messages.forEach(msg => {\n if (msg.dataset === 'prefs') {\n return;\n }\n\n if (idsPerTable[msg.dataset] == null) {\n idsPerTable[msg.dataset] = [];\n }\n idsPerTable[msg.dataset].push(msg.row);\n });\n\n async function fetchData() {\n let data = new Map();\n\n for (let table of Object.keys(idsPerTable)) {\n const rows = await fetchAll(table, idsPerTable[table]);\n\n for (let i = 0; i < rows.length; i++) {\n let row = rows[i];\n setIn(data, [table, row.id], row);\n }\n }\n\n return data;\n }\n\n let prefsToSet = {};\n let oldData = await fetchData();\n\n undo.appendMessages(messages, oldData);\n\n // It's important to not mutate the clock while processing the\n // messages. We only want to mutate it if the transaction succeeds.\n // The merkle variable will be updated while applying the messages and\n // we'll apply it afterwards.\n let clock;\n let currentMerkle;\n if (checkSyncingMode('enabled')) {\n clock = getClock();\n currentMerkle = clock.merkle;\n }\n\n if (sheet.get()) {\n sheet.get().startCacheBarrier();\n }\n\n // Now that we have all of the data, go through and apply the\n // messages carefully. This transaction is **crucial**: it\n // guarantees that everything is atomically committed to the\n // database, and if any part of it fails everything aborts and\n // nothing is changed. This is critical to maintain consistency. We\n // also avoid any side effects to in-memory objects, and apply them\n // after this succeeds.\n db.transaction(() => {\n let added = new Set();\n\n for (let i = 0; i < messages.length; i++) {\n let msg = messages[i];\n let { dataset, row, column, timestamp, value } = msg;\n\n if (!msg.old) {\n apply(msg, getIn(oldData, [dataset, row]) || added.has(dataset + row));\n\n if (dataset === 'prefs') {\n prefsToSet[row] = value;\n } else {\n // Keep track of which items have been added it in this sync\n // so it knows whether they already exist in the db or not. We\n // ignore any changes to the spreadsheet.\n added.add(dataset + row);\n }\n }\n\n if (checkSyncingMode('enabled')) {\n db.runQuery(\n db.cache(`INSERT INTO messages_crdt (timestamp, dataset, row, column, value)\n VALUES (?, ?, ?, ?, ?)`),\n [timestamp.toString(), dataset, row, column, serializeValue(value)]\n );\n\n currentMerkle = merkle.insert(currentMerkle, msg.timestamp);\n }\n }\n\n if (checkSyncingMode('enabled')) {\n currentMerkle = merkle.prune(currentMerkle);\n\n // Save the clock in the db first (queries might throw\n // exceptions)\n db.runQuery(\n db.cache(\n 'INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)'\n ),\n [serializeClock({ ...clock, merkle: currentMerkle })]\n );\n }\n });\n\n if (checkSyncingMode('enabled')) {\n // The transaction succeeded, so we can update in-memory objects\n // now. Update the in-memory clock.\n clock.merkle = currentMerkle;\n }\n\n // Save any synced prefs\n if (Object.keys(prefsToSet).length > 0) {\n prefs.savePrefs(prefsToSet, { avoidSync: true });\n\n if (prefsToSet.budgetType) {\n setBudgetType(prefsToSet.budgetType);\n }\n\n connection.send('prefs-updated');\n }\n\n let newData = await fetchData();\n\n // In testing, sometimes the spreadsheet isn't loaded, and that's ok\n if (sheet.get()) {\n // Need to clean up these APIs and make them consistent\n sheet.startTransaction();\n triggerBudgetChanges(oldData, newData);\n sheet.get().triggerDatabaseChanges(oldData, newData);\n sheet.endTransaction();\n\n // Allow the cache to be used in the future. At this point it's guaranteed\n // to be up-to-date because we are done mutating any other data\n sheet.get().endCacheBarrier();\n }\n\n _syncListeners.forEach(func => func(oldData, newData));\n\n let tables = getTablesFromMessages(messages.filter(msg => !msg.old));\n app.events.emit('sync', {\n type: 'applied',\n tables,\n data: newData,\n prevData: oldData\n });\n\n return messages;\n});\n\nexport function receiveMessages(messages) {\n messages.forEach(msg => {\n Timestamp.recv(msg.timestamp);\n });\n\n return runMutator(() => applyMessages(messages));\n}\n\nasync function _sendMessages(messages) {\n try {\n await applyMessages(messages);\n } catch (e) {\n if (e instanceof SyncError) {\n if (e.reason === 'invalid-schema') {\n // We know this message came from a local modification, and it\n // couldn't apply, which doesn't make any sense. Must be a bug\n // in the code. Send a specific error type for it for a custom\n // message.\n app.events.emit('sync', {\n type: 'error',\n subtype: 'apply-failure'\n });\n } else {\n app.events.emit('sync', { type: 'error' });\n }\n }\n\n throw e;\n }\n\n await scheduleFullSync();\n}\n\nlet IS_BATCHING = false;\nlet _BATCHED = [];\nexport async function batchMessages(func) {\n if (IS_BATCHING) {\n await func();\n return;\n }\n\n IS_BATCHING = true;\n let batched = [];\n\n try {\n await func();\n // TODO: if it fails, it shouldn't apply them?\n } finally {\n IS_BATCHING = false;\n batched = _BATCHED;\n _BATCHED = [];\n }\n\n if (batched.length > 0) {\n await _sendMessages(batched);\n }\n}\n\nexport async function sendMessages(messages) {\n if (IS_BATCHING) {\n _BATCHED = _BATCHED.concat(messages);\n } else {\n return _sendMessages(messages);\n }\n}\n\nexport function getMessagesSince(since) {\n return db.runQuery(\n 'SELECT timestamp, dataset, row, column, value FROM messages_crdt WHERE timestamp > ?',\n [since],\n true\n );\n}\n\nexport async function syncAndReceiveMessages(messages, since) {\n let localMessages = await getMessagesSince(since);\n await receiveMessages(\n messages.map(msg => ({\n ...msg,\n value: deserializeValue(msg.value),\n timestamp: Timestamp.parse(msg.timestamp)\n }))\n );\n return localMessages;\n}\n\nexport function clearFullSyncTimeout() {\n if (syncTimeout) {\n clearTimeout(syncTimeout);\n syncTimeout = null;\n }\n}\n\nlet syncTimeout = null;\nexport function scheduleFullSync() {\n clearFullSyncTimeout();\n\n if (checkSyncingMode('enabled') && !checkSyncingMode('offline')) {\n if (global.__TESTING__) {\n return fullSync().then(res => {\n if (res.error) {\n throw res.error;\n }\n return res;\n });\n } else {\n syncTimeout = setTimeout(fullSync, FULL_SYNC_DELAY);\n }\n }\n}\n\nfunction getTablesFromMessages(messages) {\n return messages.reduce((acc, message) => {\n let dataset =\n message.dataset === 'schedules_next_date' ? 'schedules' : message.dataset;\n\n if (!acc.includes(dataset)) {\n acc.push(dataset);\n }\n return acc;\n }, []);\n}\n\n// This is different than `fullSync` because it waits for the\n// spreadsheet to finish any processing. This is useful if we want to\n// perform a full sync and wait for everything to finish, usually if\n// you're doing an initial sync before working with a file.\nexport async function initialFullSync() {\n let result = await fullSync();\n if (!result.error) {\n // Make sure to wait for anything in the spreadsheet to process\n await sheet.waitOnSpreadsheet();\n }\n}\n\nexport const fullSync = once(async function() {\n app.events.emit('sync', { type: 'start' });\n let messages;\n\n try {\n messages = await _fullSync(null, 0, null);\n } catch (e) {\n console.log(e);\n\n if (e instanceof SyncError) {\n if (e.reason === 'out-of-sync') {\n captureException(e);\n\n app.events.emit('sync', {\n type: 'error',\n subtype: 'out-of-sync'\n });\n } else if (e.reason === 'invalid-schema') {\n app.events.emit('sync', {\n type: 'error',\n subtype: 'invalid-schema'\n });\n } else if (\n e.reason === 'decrypt-failure' ||\n e.reason === 'encrypt-failure'\n ) {\n app.events.emit('sync', {\n type: 'error',\n subtype: e.reason,\n meta: e.meta\n });\n } else if (e.reason === 'beta-version') {\n app.events.emit('sync', {\n type: 'error',\n subtype: e.reason\n });\n } else {\n app.events.emit('sync', { type: 'error' });\n }\n } else if (e instanceof PostError) {\n console.log(e);\n if (e.reason === 'unauthorized') {\n app.events.emit('sync', { type: 'unauthorized' });\n\n // Set the user into read-only mode\n asyncStorage.setItem('readOnly', 'true');\n } else if (e.reason === 'network-failure') {\n app.events.emit('sync', { type: 'error', subtype: 'network' });\n } else {\n app.events.emit('sync', { type: 'error', subtype: e.reason });\n }\n } else {\n captureException(e);\n // TODO: Send the message to the client and allow them to expand & view it\n app.events.emit('sync', { type: 'error' });\n }\n\n return { error: { message: e.message, reason: e.reason, meta: e.meta } };\n }\n\n let tables = getTablesFromMessages(messages);\n\n app.events.emit('sync', {\n type: 'success',\n tables,\n syncDisabled: checkSyncingMode('disabled')\n });\n return { messages };\n});\n\nasync function _fullSync(sinceTimestamp, count, prevDiffTime) {\n let { cloudFileId, groupId, lastSyncedTimestamp } = prefs.getPrefs() || {};\n\n clearFullSyncTimeout();\n\n if (checkSyncingMode('disabled') || checkSyncingMode('offline')) {\n return [];\n }\n\n // Snapshot the point at which we are currently syncing\n let currentTime = getClock().timestamp.toString();\n\n let since =\n sinceTimestamp ||\n lastSyncedTimestamp ||\n // Default to 5 minutes ago\n new Timestamp(Date.now() - 5 * 60 * 1000, 0, '0').toString();\n\n let messages = getMessagesSince(since);\n\n let userToken = await asyncStorage.getItem('user-token');\n\n logger.info(\n 'Syncing since',\n since,\n messages.length,\n '(attempt: ' + count + ')'\n );\n\n let buffer = await encoder.encode(groupId, cloudFileId, since, messages);\n\n // TODO: There a limit on how many messages we can send because of\n // the payload size. Right now it's at 20MB on the server. We should\n // check the worst case here and make multiple requests if it's\n // really large.\n let resBuffer = await postBinary(getConfig().SYNC_SERVER + '/sync', buffer, {\n 'X-ACTUAL-TOKEN': userToken\n });\n\n // Abort if the file is either no longer loaded, the group id has\n // changed because of a sync reset\n if (!prefs.getPrefs() || prefs.getPrefs().groupId !== groupId) {\n return [];\n }\n\n let res = await encoder.decode(resBuffer);\n\n logger.info('Got messages from server', res.messages.length);\n\n let localTimeChanged = getClock().timestamp.toString() !== currentTime;\n\n // Apply the new messages\n let receivedMessages = [];\n if (res.messages.length > 0) {\n receivedMessages = await receiveMessages(\n res.messages.map(msg => ({\n ...msg,\n value: deserializeValue(msg.value),\n timestamp: Timestamp.parse(msg.timestamp)\n }))\n );\n }\n\n let diffTime = merkle.diff(res.merkle, getClock().merkle);\n let result = res.messages;\n\n if (diffTime !== null) {\n // This is a bit wonky, but we loop until we are in sync with the\n // server. While syncing, either the client or server could change\n // out from under us, so it might take a couple passes to\n // completely sync up. This is a check that stops the loop in case\n // we are corrupted and can't sync up. We try 10 times if we keep\n // getting the same diff time, and add a upper limit of 300 no\n // matter what (just to stop this from ever being an infinite\n // loop).\n //\n // It's slightly possible for the user to add more messages while we\n // are in `receiveMessages`, but `localTimeChanged` would still be\n // false. In that case, we don't reset the counter but it should be\n // very unlikely that this happens enough to hit the loop limit.\n\n if ((count >= 10 && diffTime === prevDiffTime) || count >= 100) {\n logger.info('SENT -------');\n logger.info(JSON.stringify(messages));\n logger.info('RECEIVED -------');\n logger.info(JSON.stringify(res.messages));\n\n let rebuiltMerkle = rebuildMerkleHash();\n\n console.log(\n count,\n 'messages:',\n messages.length,\n messages.length > 0 ? messages[0] : null,\n 'res.messages:',\n res.messages.length,\n res.messages.length > 0 ? res.messages[0] : null,\n 'clientId',\n getClock().timestamp.node(),\n 'groupId',\n groupId,\n 'diffTime:',\n diffTime,\n diffTime === prevDiffTime,\n 'local clock:',\n getClock().timestamp.toString(),\n getClock().merkle.hash,\n 'rebuilt hash:',\n rebuiltMerkle.numMessages,\n rebuiltMerkle.trie.hash,\n 'server hash:',\n res.merkle.hash,\n 'localTimeChanged:',\n localTimeChanged\n );\n\n if (rebuiltMerkle.trie.hash === res.merkle.hash) {\n // Rebuilding the merkle worked... but why?\n let clocks = await db.all('SELECT * FROM messages_clock');\n if (clocks.length !== 1) {\n console.log('Bad number of clocks:', clocks.length);\n }\n let hash = deserializeClock(clocks[0]).merkle.hash;\n console.log('Merkle hash in db:', hash);\n }\n\n throw new SyncError('out-of-sync');\n }\n\n receivedMessages = receivedMessages.concat(\n await _fullSync(\n new Timestamp(diffTime, 0, '0').toString(),\n // If something local changed while we were syncing, always\n // reset, token the counter. We never want to think syncing failed\n // because we tried to syncing many times and couldn't sync,\n // but it was because the user kept changing stuff in the\n // middle of syncing.\n localTimeChanged ? 0 : count + 1,\n diffTime\n )\n );\n } else {\n // All synced up, store the current time as a simple optimization\n // for the next sync\n await prefs.savePrefs({\n lastSyncedTimestamp: getClock().timestamp.toString()\n });\n }\n\n return receivedMessages;\n}\n","import encryption from '../encryption';\nlet SyncPb = require('./proto/sync_pb');\n\nasync function randomString() {\n return (await encryption.randomBytes(12)).toString();\n}\n\nexport default async function makeTestMessage(keyId) {\n let messagePb = new SyncPb.Message();\n messagePb.setDataset(await randomString());\n messagePb.setRow(await randomString());\n messagePb.setColumn(await randomString());\n messagePb.setValue(await randomString());\n let binaryMsg = messagePb.serializeBinary();\n\n return await encryption.encrypt(binaryMsg, keyId);\n}\n","import { addSyncListener, applyMessages } from './index';\nimport Timestamp from '../timestamp';\n\nfunction migrateParentIds(oldValues, newValues) {\n newValues.forEach((items, table) => {\n if (table === 'transactions') {\n let old = oldValues.get(table);\n let toApply = [];\n\n items.forEach(newValue => {\n if (\n newValue.isChild === 1 &&\n newValue.parent_id == null &&\n newValue.id.includes('/')\n ) {\n let parentId = newValue.id.split('/')[0];\n\n toApply.push({\n dataset: 'transactions',\n row: newValue.id,\n column: 'parent_id',\n value: parentId,\n timestamp: Timestamp.send()\n });\n }\n });\n\n if (toApply.length > 0) {\n applyMessages(toApply);\n }\n }\n });\n}\n\nlet _unlisten = null;\nexport function listen() {\n unlisten();\n _unlisten = addSyncListener(migrateParentIds);\n}\n\nexport function unlisten() {\n if (_unlisten) {\n _unlisten();\n _unlisten = null;\n }\n}\n","// source: sync.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = globalThis;\n\ngoog.exportSymbol('proto.EncryptedData', null, global);\ngoog.exportSymbol('proto.Message', null, global);\ngoog.exportSymbol('proto.MessageEnvelope', null, global);\ngoog.exportSymbol('proto.SyncRequest', null, global);\ngoog.exportSymbol('proto.SyncResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.EncryptedData = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.EncryptedData, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.EncryptedData.displayName = 'proto.EncryptedData';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.Message = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.Message, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.Message.displayName = 'proto.Message';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.MessageEnvelope = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.MessageEnvelope, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.MessageEnvelope.displayName = 'proto.MessageEnvelope';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.SyncRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.SyncRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.SyncRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.SyncRequest.displayName = 'proto.SyncRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.SyncResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.SyncResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.SyncResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.SyncResponse.displayName = 'proto.SyncResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.EncryptedData.prototype.toObject = function(opt_includeInstance) {\n return proto.EncryptedData.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.EncryptedData} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.EncryptedData.toObject = function(includeInstance, msg) {\n var f, obj = {\n iv: msg.getIv_asB64(),\n authtag: msg.getAuthtag_asB64(),\n data: msg.getData_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.EncryptedData}\n */\nproto.EncryptedData.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.EncryptedData;\n return proto.EncryptedData.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.EncryptedData} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.EncryptedData}\n */\nproto.EncryptedData.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setIv(value);\n break;\n case 2:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setAuthtag(value);\n break;\n case 3:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.EncryptedData.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.EncryptedData} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.EncryptedData.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getIv_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 1,\n f\n );\n }\n f = message.getAuthtag_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 2,\n f\n );\n }\n f = message.getData_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional bytes iv = 1;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getIv = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * optional bytes iv = 1;\n * This is a type-conversion wrapper around `getIv()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getIv_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getIv()));\n};\n\n\n/**\n * optional bytes iv = 1;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getIv()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getIv_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getIv()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setIv = function(value) {\n return jspb.Message.setProto3BytesField(this, 1, value);\n};\n\n\n/**\n * optional bytes authTag = 2;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getAuthtag = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * optional bytes authTag = 2;\n * This is a type-conversion wrapper around `getAuthtag()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getAuthtag_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getAuthtag()));\n};\n\n\n/**\n * optional bytes authTag = 2;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getAuthtag()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getAuthtag_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getAuthtag()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setAuthtag = function(value) {\n return jspb.Message.setProto3BytesField(this, 2, value);\n};\n\n\n/**\n * optional bytes data = 3;\n * @return {!(string|Uint8Array)}\n */\nproto.EncryptedData.prototype.getData = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * optional bytes data = 3;\n * This is a type-conversion wrapper around `getData()`\n * @return {string}\n */\nproto.EncryptedData.prototype.getData_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getData()));\n};\n\n\n/**\n * optional bytes data = 3;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getData()`\n * @return {!Uint8Array}\n */\nproto.EncryptedData.prototype.getData_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getData()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.EncryptedData} returns this\n */\nproto.EncryptedData.prototype.setData = function(value) {\n return jspb.Message.setProto3BytesField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.Message.prototype.toObject = function(opt_includeInstance) {\n return proto.Message.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.Message} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.toObject = function(includeInstance, msg) {\n var f, obj = {\n dataset: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n row: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n column: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n value: jspb.Message.getFieldWithDefault(msg, 4, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.Message;\n return proto.Message.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.Message} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.Message}\n */\nproto.Message.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setDataset(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setRow(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setColumn(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setValue(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.Message.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.Message.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.Message} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.Message.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDataset();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getRow();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getColumn();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getValue();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional string dataset = 1;\n * @return {string}\n */\nproto.Message.prototype.getDataset = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setDataset = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string row = 2;\n * @return {string}\n */\nproto.Message.prototype.getRow = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setRow = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string column = 3;\n * @return {string}\n */\nproto.Message.prototype.getColumn = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setColumn = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string value = 4;\n * @return {string}\n */\nproto.Message.prototype.getValue = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.Message} returns this\n */\nproto.Message.prototype.setValue = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.MessageEnvelope.prototype.toObject = function(opt_includeInstance) {\n return proto.MessageEnvelope.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.MessageEnvelope} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.MessageEnvelope.toObject = function(includeInstance, msg) {\n var f, obj = {\n timestamp: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n isencrypted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n content: msg.getContent_asB64()\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.MessageEnvelope}\n */\nproto.MessageEnvelope.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.MessageEnvelope;\n return proto.MessageEnvelope.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.MessageEnvelope} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.MessageEnvelope}\n */\nproto.MessageEnvelope.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setTimestamp(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsencrypted(value);\n break;\n case 3:\n var value = /** @type {!Uint8Array} */ (reader.readBytes());\n msg.setContent(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.MessageEnvelope.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.MessageEnvelope.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.MessageEnvelope} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.MessageEnvelope.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTimestamp();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getIsencrypted();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = message.getContent_asU8();\n if (f.length > 0) {\n writer.writeBytes(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional string timestamp = 1;\n * @return {string}\n */\nproto.MessageEnvelope.prototype.getTimestamp = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setTimestamp = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional bool isEncrypted = 2;\n * @return {boolean}\n */\nproto.MessageEnvelope.prototype.getIsencrypted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setIsencrypted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional bytes content = 3;\n * @return {!(string|Uint8Array)}\n */\nproto.MessageEnvelope.prototype.getContent = function() {\n return /** @type {!(string|Uint8Array)} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * optional bytes content = 3;\n * This is a type-conversion wrapper around `getContent()`\n * @return {string}\n */\nproto.MessageEnvelope.prototype.getContent_asB64 = function() {\n return /** @type {string} */ (jspb.Message.bytesAsB64(\n this.getContent()));\n};\n\n\n/**\n * optional bytes content = 3;\n * Note that Uint8Array is not supported on all browsers.\n * @see http://caniuse.com/Uint8Array\n * This is a type-conversion wrapper around `getContent()`\n * @return {!Uint8Array}\n */\nproto.MessageEnvelope.prototype.getContent_asU8 = function() {\n return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8(\n this.getContent()));\n};\n\n\n/**\n * @param {!(string|Uint8Array)} value\n * @return {!proto.MessageEnvelope} returns this\n */\nproto.MessageEnvelope.prototype.setContent = function(value) {\n return jspb.Message.setProto3BytesField(this, 3, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.SyncRequest.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.SyncRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.SyncRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.SyncRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n messagesList: jspb.Message.toObjectList(msg.getMessagesList(),\n proto.MessageEnvelope.toObject, includeInstance),\n fileid: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n groupid: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n keyid: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n since: jspb.Message.getFieldWithDefault(msg, 6, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.SyncRequest}\n */\nproto.SyncRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.SyncRequest;\n return proto.SyncRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.SyncRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.SyncRequest}\n */\nproto.SyncRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.MessageEnvelope;\n reader.readMessage(value,proto.MessageEnvelope.deserializeBinaryFromReader);\n msg.addMessages(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setFileid(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setGroupid(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setKeyid(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setSince(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.SyncRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.SyncRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.SyncRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMessagesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.MessageEnvelope.serializeBinaryToWriter\n );\n }\n f = message.getFileid();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getGroupid();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getKeyid();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getSince();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n};\n\n\n/**\n * repeated MessageEnvelope messages = 1;\n * @return {!Array<!proto.MessageEnvelope>}\n */\nproto.SyncRequest.prototype.getMessagesList = function() {\n return /** @type{!Array<!proto.MessageEnvelope>} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.MessageEnvelope, 1));\n};\n\n\n/**\n * @param {!Array<!proto.MessageEnvelope>} value\n * @return {!proto.SyncRequest} returns this\n*/\nproto.SyncRequest.prototype.setMessagesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.MessageEnvelope=} opt_value\n * @param {number=} opt_index\n * @return {!proto.MessageEnvelope}\n */\nproto.SyncRequest.prototype.addMessages = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.MessageEnvelope, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.clearMessagesList = function() {\n return this.setMessagesList([]);\n};\n\n\n/**\n * optional string fileId = 2;\n * @return {string}\n */\nproto.SyncRequest.prototype.getFileid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setFileid = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string groupId = 3;\n * @return {string}\n */\nproto.SyncRequest.prototype.getGroupid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setGroupid = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string keyId = 5;\n * @return {string}\n */\nproto.SyncRequest.prototype.getKeyid = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setKeyid = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string since = 6;\n * @return {string}\n */\nproto.SyncRequest.prototype.getSince = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncRequest} returns this\n */\nproto.SyncRequest.prototype.setSince = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array<number>}\n * @const\n */\nproto.SyncResponse.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.SyncResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.SyncResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.SyncResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n messagesList: jspb.Message.toObjectList(msg.getMessagesList(),\n proto.MessageEnvelope.toObject, includeInstance),\n merkle: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.SyncResponse}\n */\nproto.SyncResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.SyncResponse;\n return proto.SyncResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.SyncResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.SyncResponse}\n */\nproto.SyncResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.MessageEnvelope;\n reader.readMessage(value,proto.MessageEnvelope.deserializeBinaryFromReader);\n msg.addMessages(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setMerkle(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.SyncResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.SyncResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.SyncResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.SyncResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMessagesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.MessageEnvelope.serializeBinaryToWriter\n );\n }\n f = message.getMerkle();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * repeated MessageEnvelope messages = 1;\n * @return {!Array<!proto.MessageEnvelope>}\n */\nproto.SyncResponse.prototype.getMessagesList = function() {\n return /** @type{!Array<!proto.MessageEnvelope>} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.MessageEnvelope, 1));\n};\n\n\n/**\n * @param {!Array<!proto.MessageEnvelope>} value\n * @return {!proto.SyncResponse} returns this\n*/\nproto.SyncResponse.prototype.setMessagesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.MessageEnvelope=} opt_value\n * @param {number=} opt_index\n * @return {!proto.MessageEnvelope}\n */\nproto.SyncResponse.prototype.addMessages = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.MessageEnvelope, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.SyncResponse} returns this\n */\nproto.SyncResponse.prototype.clearMessagesList = function() {\n return this.setMessagesList([]);\n};\n\n\n/**\n * optional string merkle = 2;\n * @return {string}\n */\nproto.SyncResponse.prototype.getMerkle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.SyncResponse} returns this\n */\nproto.SyncResponse.prototype.setMerkle = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\ngoog.object.extend(exports, proto);\n","import * as db from '../db';\nimport Timestamp, { serializeClock, getClock } from '../timestamp';\nimport * as merkle from '../merkle';\n\nexport function rebuildMerkleHash() {\n let rows = db.runQuery('SELECT timestamp FROM messages_crdt', [], true);\n let trie = {};\n\n for (let i = 0; i < rows.length; i++) {\n trie = merkle.insert(trie, Timestamp.parse(rows[i].timestamp));\n }\n\n return {\n numMessages: rows.length,\n trie: trie\n };\n}\n\nexport default async function repairSync() {\n let rebuilt = rebuildMerkleHash();\n let clock = getClock();\n\n // Save it locally\n clock.merkle = rebuilt.trie;\n\n // Persist it in the db\n db.runQuery(\n db.cache('INSERT OR REPLACE INTO messages_clock (id, clock) VALUES (1, ?)'),\n [serializeClock(clock)]\n );\n}\n","import * as cloudStorage from '../cloud-storage';\nimport * as db from '../db';\nimport * as prefs from '../prefs';\nimport asyncStorage from '../../platform/server/asyncStorage';\nimport { captureException } from '../../platform/exceptions';\nimport { runMutator } from '../mutators';\nconst connection = require('../../platform/server/connection');\n\nexport default async function resetSync(keyState) {\n if (!keyState) {\n // If we aren't resetting the key, make sure our key is up-to-date\n // so we don't accidentally upload a file encrypted with the wrong\n // key (or not encrypted at all)\n let { valid, error } = await cloudStorage.checkKey();\n if (error) {\n return { error };\n } else if (!valid) {\n return { error: { reason: 'file-has-new-key' } };\n }\n }\n\n let { error } = await cloudStorage.resetSyncState(keyState);\n if (error) {\n return { error };\n }\n\n await runMutator(async () => {\n // TOOD: We could automatically generate the list of tables to\n // cleanup by looking at the schema\n //\n // Be VERY careful here since we are bulk deleting data. It should\n // never delete any data that doesn't have `tombstone = 1`\n await db.execQuery(`\n DELETE FROM messages_crdt;\n DELETE FROM messages_clock;\n DELETE FROM transactions WHERE tombstone = 1;\n DELETE FROM accounts WHERE tombstone = 1;\n DELETE FROM payees WHERE tombstone = 1;\n DELETE FROM categories WHERE tombstone = 1;\n DELETE FROM category_groups WHERE tombstone = 1;\n DELETE FROM schedules WHERE tombstone = 1;\n DELETE FROM rules WHERE tombstone = 1;\n ANALYZE;\n VACUUM;\n `);\n await db.loadClock();\n });\n\n await prefs.savePrefs({\n groupId: null,\n lastSyncedTimestamp: null,\n lastUploaded: null\n });\n\n if (keyState) {\n let { key } = keyState;\n let { cloudFileId } = prefs.getPrefs();\n\n // The key has changed, we need to update our local data to\n // store the new key\n\n // Persist key in async storage\n let keys = JSON.parse((await asyncStorage.getItem(`encrypt-keys`)) || '{}');\n keys[cloudFileId] = key.serialize();\n await asyncStorage.setItem('encrypt-keys', JSON.stringify(keys));\n\n // Save the key id in prefs\n await prefs.savePrefs({ encryptKeyId: key.getId() });\n }\n\n // Finally, upload the file to make it the \"true\" version that all\n // other clients need to pull down to get back in sync\n try {\n await cloudStorage.upload();\n } catch (e) {\n if (e.reason) {\n return { error: e };\n }\n captureException(e);\n return { error: { reason: 'upload-failure' } };\n } finally {\n connection.send('prefs-updated');\n }\n\n return {};\n}\n","import murmurhash from 'murmurhash';\nconst uuid = require('../platform/uuid');\n\n/**\n * Hybrid Unique Logical Clock (HULC) timestamp generator\n *\n * Globally-unique, monotonic timestamps are generated from the\n * combination of the unreliable system time, a counter, and an\n * identifier for the current node (instance, machine, process, etc.).\n * These timestamps can accommodate clock stuttering (duplicate values),\n * regression, and node differences within the configured maximum drift.\n *\n * In order to generate timestamps locally or for transmission to another\n * node, use the send() method. For global causality, timestamps must\n * be included in each message processed by the system. Whenever a\n * message is received, its timestamp must be passed to the recv()\n * method.\n *\n * Timestamps serialize into a 46-character collatable string\n * example: 2015-04-24T22:23:42.123Z-1000-0123456789ABCDEF\n * example: 2015-04-24T22:23:42.123Z-1000-A219E7A71CC18912\n *\n * The 64-bit hybrid clock is based on the HLC specification,\n * http://www.cse.buffalo.edu/tech-reports/2014-04.pdf\n */\n\n// A mutable global clock\nlet clock = null;\n\nexport function setClock(clock_) {\n clock = clock_;\n}\n\nexport function getClock() {\n return clock;\n}\n\nexport function makeClock(timestamp, merkle = {}) {\n return { timestamp: MutableTimestamp.from(timestamp), merkle };\n}\n\nexport function serializeClock(clock) {\n return JSON.stringify({\n timestamp: clock.timestamp.toString(),\n merkle: clock.merkle\n });\n}\n\nexport function deserializeClock(clock) {\n let data;\n try {\n data = JSON.parse(clock);\n } catch (e) {\n data = {\n timestamp: '1970-01-01T00:00:00.000Z-0000-' + makeClientId(),\n merkle: {}\n };\n }\n\n return {\n timestamp: MutableTimestamp.from(Timestamp.parse(data.timestamp)),\n merkle: data.merkle\n };\n}\n\nexport function makeClientId() {\n return uuid\n .v4Sync()\n .replace(/-/g, '')\n .slice(-16);\n}\n\nvar config = {\n // Allow 5 minutes of clock drift\n maxDrift: 5 * 60 * 1000\n};\n\n/**\n * timestamp instance class\n */\nexport default class Timestamp {\n constructor(millis, counter, node) {\n this._state = {\n millis: millis,\n counter: counter,\n node: node\n };\n }\n\n valueOf() {\n return this.toString();\n }\n\n toString() {\n return [\n new Date(this.millis()).toISOString(),\n (\n '0000' +\n this.counter()\n .toString(16)\n .toUpperCase()\n ).slice(-4),\n ('0000000000000000' + this.node()).slice(-16)\n ].join('-');\n }\n\n millis() {\n return this._state.millis;\n }\n\n counter() {\n return this._state.counter;\n }\n\n node() {\n return this._state.node;\n }\n\n hash() {\n return murmurhash.v3(this.toString());\n }\n}\n\nexport class MutableTimestamp extends Timestamp {\n setMillis(n) {\n this._state.millis = n;\n }\n\n setCounter(n) {\n this._state.counter = n;\n }\n\n setNode(n) {\n this._state.node = n;\n }\n}\n\nMutableTimestamp.from = timestamp => {\n return new MutableTimestamp(\n timestamp.millis(),\n timestamp.counter(),\n timestamp.node()\n );\n};\n\n// Timestamp generator initialization\n// * sets the node ID to an arbitrary value\n// * useful for mocking/unit testing\nTimestamp.init = function(options = {}) {\n if (options.maxDrift) {\n config.maxDrift = options.maxDrift;\n }\n\n setClock(\n makeClock(\n new Timestamp(\n 0,\n 0,\n options.node\n ? ('0000000000000000' + options.node).toString().slice(-16)\n : ''\n )\n ),\n null\n );\n};\n\n/**\n * Timestamp send. Generates a unique, monotonic timestamp suitable\n * for transmission to another system in string format\n */\nTimestamp.send = function() {\n if (!clock) {\n return null;\n }\n\n // retrieve the local wall time\n var phys = Date.now();\n\n // unpack the clock.timestamp logical time and counter\n var lOld = clock.timestamp.millis();\n var cOld = clock.timestamp.counter();\n\n // calculate the next logical time and counter\n // * ensure that the logical time never goes backward\n // * increment the counter if phys time does not advance\n var lNew = Math.max(lOld, phys);\n var cNew = lOld === lNew ? cOld + 1 : 0;\n\n // check the result for drift and counter overflow\n if (lNew - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError(lNew, phys, config.maxDrift);\n }\n if (cNew > 65535) {\n throw new Timestamp.OverflowError();\n }\n\n // repack the logical time/counter\n clock.timestamp.setMillis(lNew);\n clock.timestamp.setCounter(cNew);\n\n return new Timestamp(\n clock.timestamp.millis(),\n clock.timestamp.counter(),\n clock.timestamp.node()\n );\n};\n\n// Timestamp receive. Parses and merges a timestamp from a remote\n// system with the local timeglobal uniqueness and monotonicity are\n// preserved\nTimestamp.recv = function(msg) {\n if (!clock) {\n return null;\n }\n\n // retrieve the local wall time\n var phys = Date.now();\n\n // unpack the message wall time/counter\n var lMsg = msg.millis();\n var cMsg = msg.counter();\n\n // assert the node id and remote clock drift\n // if (msg.node() === clock.timestamp.node()) {\n // throw new Timestamp.DuplicateNodeError(clock.timestamp.node());\n // }\n if (lMsg - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError();\n }\n\n // unpack the clock.timestamp logical time and counter\n var lOld = clock.timestamp.millis();\n var cOld = clock.timestamp.counter();\n\n // calculate the next logical time and counter\n // . ensure that the logical time never goes backward\n // . if all logical clocks are equal, increment the max counter\n // . if max = old > message, increment local counter\n // . if max = messsage > old, increment message counter\n // . otherwise, clocks are monotonic, reset counter\n var lNew = Math.max(Math.max(lOld, phys), lMsg);\n var cNew =\n lNew === lOld && lNew === lMsg\n ? Math.max(cOld, cMsg) + 1\n : lNew === lOld\n ? cOld + 1\n : lNew === lMsg\n ? cMsg + 1\n : 0;\n\n // check the result for drift and counter overflow\n if (lNew - phys > config.maxDrift) {\n throw new Timestamp.ClockDriftError();\n }\n if (cNew > 65535) {\n throw new Timestamp.OverflowError();\n }\n\n // repack the logical time/counter\n clock.timestamp.setMillis(lNew);\n clock.timestamp.setCounter(cNew);\n\n return new Timestamp(\n clock.timestamp.millis(),\n clock.timestamp.counter(),\n clock.timestamp.node()\n );\n};\n\n/**\n * timestamp parsing\n * converts a fixed-length string timestamp to the structured value\n */\nTimestamp.parse = function(timestamp) {\n if (typeof timestamp === 'string') {\n var parts = timestamp.split('-');\n if (parts && parts.length === 5) {\n var millis = Date.parse(parts.slice(0, 3).join('-')).valueOf();\n var counter = parseInt(parts[3], 16);\n var node = parts[4];\n if (!isNaN(millis) && !isNaN(counter))\n return new Timestamp(millis, counter, node);\n }\n }\n return null;\n};\n\n/**\n * zero/minimum timestamp\n */\nvar zero = Timestamp.parse('1970-01-01T00:00:00.000Z-0000-0000000000000000');\nTimestamp.zero = function() {\n return zero;\n};\n\n/**\n * maximum timestamp\n */\nvar max = Timestamp.parse('9999-12-31T23:59:59.999Z-FFFF-FFFFFFFFFFFFFFFF');\nTimestamp.max = function() {\n return max;\n};\n\nTimestamp.since = isoString => {\n return isoString + '-0000-0000000000000000';\n};\n\n/**\n * error classes\n */\nTimestamp.DuplicateNodeError = class extends Error {\n constructor(node) {\n super();\n this.type = 'DuplicateNodeError';\n this.message = 'duplicate node identifier ' + node;\n }\n};\n\nTimestamp.ClockDriftError = class extends Error {\n constructor(...args) {\n super();\n this.type = 'ClockDriftError';\n this.message = ['maximum clock drift exceeded'].concat(args).join(' ');\n }\n};\n\nTimestamp.OverflowError = class extends Error {\n constructor() {\n super();\n this.type = 'OverflowError';\n this.message = 'timestamp counter overflow';\n }\n};\n","import { batchMessages } from '../sync';\nimport { runMutator } from '../mutators';\nimport { createApp } from '../app';\nimport * as db from '../db';\nimport { batchUpdateTransactions } from '../accounts/transactions';\n\nlet app = createApp();\n\napp.method('tools/fix-split-transactions', async () => {\n // 1. Check for child transactions that have a blank payee, and set\n // the payee to whatever the parent has\n let blankPayeeRows = await db.all(`\n SELECT t.*, p.payee AS parentPayee FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.payee IS NULL AND p.payee IS NOT NULL\n `);\n\n await runMutator(async () => {\n let updated = blankPayeeRows.map(row => ({\n id: row.id,\n payee: row.parentPayee\n }));\n await batchUpdateTransactions({ updated });\n });\n\n // 2. Make sure the \"cleared\" flag is synced up with the parent\n // transactions\n let clearedRows = await db.all(`\n SELECT t.id, p.cleared FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.cleared != p.cleared\n `);\n\n await runMutator(async () => {\n let updated = clearedRows.map(row => ({\n id: row.id,\n cleared: row.cleared === 1\n }));\n await batchUpdateTransactions({ updated });\n });\n\n // 3. Mark the `tombstone` field as true on any child transactions\n // that have a dead parent\n let deletedRows = await db.all(`\n SELECT t.* FROM v_transactions_internal t\n LEFT JOIN v_transactions_internal p ON t.parent_id = p.id\n WHERE t.is_child = 1 AND t.tombstone = 0 AND (p.tombstone = 1 OR p.id IS NULL)\n `);\n\n await runMutator(async () => {\n let updated = deletedRows.map(row => ({ id: row.id, tombstone: 1 }));\n await batchUpdateTransactions({ updated });\n });\n\n return {\n numBlankPayees: blankPayeeRows.length,\n numCleared: clearedRows.length,\n numDeleted: deletedRows.length\n };\n});\n\nexport default app;\n","import asyncStorage from '../../platform/server/asyncStorage';\nimport { sha256String } from '../encryption-internals';\nlet Mixpanel = require('@jlongster/mixpanel');\nlet uuid = require('../../platform/uuid');\n\nlet currentUniqueId;\nlet mixpanel;\nlet isEnabled = true;\n\nexport function toggle(trackUsage) {\n isEnabled = trackUsage == null || trackUsage === 'true' ? true : false;\n}\n\n// TODO: Figure out location, send to EU data centers if in EU\n// {\n// host: \"api-eu.mixpanel.com\",\n// },\n\n// This must stay up-to-date with all apps that hit mixpanel! That includes the\n// website and server. If changing this, make sure to change it everywhere\nasync function hash(userId) {\n let hashed = await sha256String(userId);\n return `user-${hashed.replace(/[=/]/g, '')}`;\n}\n\nfunction isAnonymous(id) {\n return !id.startsWith('user-');\n}\n\nexport async function init() {\n mixpanel = Mixpanel.init('7e6461b8dde1d5dbf04ed1711768257a');\n\n let [\n [, distinctId],\n [, userId],\n [, trackUsage]\n ] = await asyncStorage.multiGet(['distinct-id-v2', 'user-id', 'track-usage']);\n\n toggle(trackUsage);\n\n if (distinctId == null) {\n if (userId) {\n let hashedId = await hash(userId);\n currentUniqueId = hashedId;\n setProfile({ $name: hashedId });\n } else {\n currentUniqueId = uuid.v4Sync();\n }\n\n await asyncStorage.setItem('distinct-id-v2', currentUniqueId);\n } else {\n currentUniqueId = distinctId;\n\n if (!isAnonymous(distinctId)) {\n setProfile({ $name: distinctId });\n }\n }\n}\n\nexport async function login(userId) {\n let hashedId = await hash(userId);\n await asyncStorage.setItem('distinct-id-v2', hashedId);\n\n if (isAnonymous(currentUniqueId)) {\n mixpanel.identify(hashedId, currentUniqueId);\n\n startBuffering();\n // So ridiculous. https://help.mixpanel.com/hc/en-us/articles/115004497803-Identity-Management-Best-Practices#serverside-aliasing\n setTimeout(() => {\n stopBuffering();\n }, 2000);\n\n currentUniqueId = hashedId;\n setProfile({ $name: hashedId });\n } else {\n currentUniqueId = hashedId;\n }\n}\n\nlet BUFFERING = false;\nlet BUFFER = [];\n\nfunction startBuffering() {\n BUFFERING = true;\n BUFFER = [];\n}\n\nfunction stopBuffering() {\n for (let call of BUFFER) {\n call[0](...call[1]);\n }\n BUFFERING = false;\n BUFFER = [];\n}\n\nfunction buffered(func) {\n return (...args) => {\n if (process.env.NODE_ENV !== 'development') {\n if (BUFFERING) {\n BUFFER.push([func, [currentUniqueId, ...args]]);\n } else {\n func(currentUniqueId, ...args);\n }\n }\n };\n}\n\nexport const track = buffered((distinct_id, name, props) => {});\n\nexport const setProfile = buffered((distinct_id, props) => {});\n","import { sendMessages } from './sync';\nimport { getIn } from '../shared/util';\nimport Timestamp from './timestamp';\nimport { withMutatorContext, getMutatorContext } from './mutators';\nconst connection = require('../platform/server/connection');\n\n// A marker always sits as the first entry to simplify logic\nlet MESSAGE_HISTORY = [{ type: 'marker' }];\nlet CURSOR = 0;\nlet HISTORY_SIZE = 20;\n\nfunction trimHistory() {\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(0, CURSOR + 1);\n\n let markers = MESSAGE_HISTORY.filter(item => item.type === 'marker');\n if (markers.length > HISTORY_SIZE) {\n let slice = markers.slice(-HISTORY_SIZE);\n let cutoff = MESSAGE_HISTORY.indexOf(slice[0]);\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(cutoff);\n CURSOR = MESSAGE_HISTORY.length - 1;\n }\n}\n\nexport function appendMessages(messages, oldData) {\n let context = getMutatorContext();\n\n if (context.undoListening && messages.length > 0) {\n trimHistory();\n\n let { undoTag } = context;\n\n MESSAGE_HISTORY.push({\n type: 'messages',\n messages,\n oldData,\n undoTag\n });\n CURSOR++;\n }\n}\n\nexport function clearUndo() {\n MESSAGE_HISTORY = [{ type: 'marker' }];\n CURSOR = 0;\n}\n\nexport function withUndo(func, meta) {\n let context = getMutatorContext();\n if (context.undoDisabled || context.undoListening) {\n return func();\n }\n\n MESSAGE_HISTORY = MESSAGE_HISTORY.slice(0, CURSOR + 1);\n\n let marker = { type: 'marker', meta };\n\n if (MESSAGE_HISTORY[MESSAGE_HISTORY.length - 1].type === 'marker') {\n MESSAGE_HISTORY[MESSAGE_HISTORY.length - 1] = marker;\n } else {\n MESSAGE_HISTORY.push(marker);\n CURSOR++;\n }\n\n return withMutatorContext(\n { undoListening: true, undoTag: context.undoTag },\n func\n );\n}\n\nexport function undoable(func) {\n return (...args) => {\n return withUndo(() => {\n return func(...args);\n });\n };\n}\n\nasync function applyUndoAction(messages, meta, undoTag) {\n await withMutatorContext({ undoListening: false }, () => {\n return sendMessages(\n messages.map(msg => ({ ...msg, timestamp: Timestamp.send() }))\n );\n });\n\n const tables = messages.reduce((acc, message) => {\n if (!acc.includes(message.dataset)) {\n acc.push(message.dataset);\n }\n return acc;\n }, []);\n\n connection.send('undo-event', {\n messages,\n tables,\n meta,\n undoTag\n });\n}\n\nexport async function undo() {\n let end = CURSOR;\n CURSOR = Math.max(CURSOR - 1, 0);\n\n // Walk back to the nearest marker\n while (CURSOR > 0 && MESSAGE_HISTORY[CURSOR].type !== 'marker') {\n CURSOR--;\n }\n\n let meta = MESSAGE_HISTORY[CURSOR].meta;\n let start = Math.max(CURSOR, 0);\n let entries = MESSAGE_HISTORY.slice(start, end + 1).filter(\n entry => entry.type === 'messages'\n );\n\n if (entries.length > 0) {\n let toApply = entries\n .reduce((acc, entry) => {\n return acc.concat(\n entry.messages\n .map(message => undoMessage(message, entry.oldData))\n .filter(x => x)\n );\n }, [])\n .reverse();\n\n await applyUndoAction(toApply, meta, entries[0].undoTag);\n }\n}\n\nfunction undoMessage(message, oldData) {\n let oldItem = getIn(oldData, [message.dataset, message.row]);\n if (oldItem) {\n let column = message.column;\n if (message.dataset === 'spreadsheet_cells') {\n // The spreadsheet messages use the `expr` column, but only as a\n // placeholder. We actually want to read the `cachedValue` prop\n // from the old item.\n column = 'cachedValue';\n }\n\n return { ...message, value: oldItem[column] };\n } else {\n if (message.dataset === 'spreadsheet_cells') {\n if (message.column === 'expr') {\n return { ...message, value: null };\n }\n return message;\n } else if (\n // The mapping fields aren't ever deleted... this should be\n // harmless since all they are is meta information. Maybe we\n // should fix this though.\n message.dataset !== 'category_mapping' &&\n message.dataset !== 'payee_mapping'\n ) {\n if (\n message.dataset === 'zero_budget_months' ||\n message.dataset === 'zero_budgets' ||\n message.dataset === 'reflect_budgets'\n ) {\n // Only these fields are reversable\n if (['buffered', 'amount', 'carryover'].includes(message.column)) {\n return { ...message, value: 0 };\n }\n return null;\n } else if (message.dataset === 'notes') {\n return { ...message, value: null };\n }\n\n return { ...message, column: 'tombstone', value: 1 };\n }\n }\n return null;\n}\n\nexport async function redo() {\n let meta =\n MESSAGE_HISTORY[CURSOR].type === 'marker'\n ? MESSAGE_HISTORY[CURSOR].meta\n : null;\n\n let start = CURSOR;\n CURSOR = Math.min(CURSOR + 1, MESSAGE_HISTORY.length - 1);\n\n // Walk forward to the nearest marker\n while (\n CURSOR < MESSAGE_HISTORY.length - 1 &&\n MESSAGE_HISTORY[CURSOR].type !== 'marker'\n ) {\n CURSOR++;\n }\n\n let end = CURSOR;\n let entries = MESSAGE_HISTORY.slice(start + 1, end + 1).filter(\n entry => entry.type === 'messages'\n );\n\n if (entries.length > 0) {\n let toApply = entries.reduce((acc, entry) => {\n return acc\n .concat(entry.messages)\n .concat(redoResurrections(entry.messages, entry.oldData));\n }, []);\n\n await applyUndoAction(toApply, meta, entries[entries.length - 1].undoTag);\n }\n}\n\nfunction redoResurrections(messages, oldData) {\n let resurrect = new Set();\n\n messages.forEach(message => {\n // If any of the ids didn't exist before, we need to \"resurrect\"\n // them by resetting their tombstones to 0\n let oldItem = getIn(oldData, [message.dataset, message.row]);\n if (\n !oldItem &&\n ![\n 'zero_budget_months',\n 'zero_budgets',\n 'reflect_budgets',\n 'notes',\n 'category_mapping',\n 'payee_mapping'\n ].includes(message.dataset)\n ) {\n resurrect.add(message.dataset + '.' + message.row);\n }\n });\n\n return [...resurrect].map(desc => {\n let [table, row] = desc.split('.');\n return {\n dataset: table,\n row,\n column: 'tombstone',\n value: 0,\n timestamp: Timestamp.send()\n };\n });\n}\n","import md5 from 'md5';\nimport * as migrations from './migrate/migrations';\nimport * as db from './db';\nimport { schema, schemaConfig } from './aql/schema';\nimport { makeViews } from './aql/views';\n\n// Managing the init/update process\n\nasync function runMigrations() {\n await migrations.migrate(db.getDatabase());\n}\n\nexport async function updateViews() {\n let hashKey = 'view-hash';\n let row = await db.first('SELECT value FROM __meta__ WHERE key = ?', [\n hashKey\n ]);\n let { value: hash } = row || {};\n\n let views = makeViews(schema, schemaConfig);\n let currentHash = md5(views);\n\n if (hash !== currentHash) {\n await db.execQuery(views);\n await db.runQuery(\n 'INSERT OR REPLACE INTO __meta__ (key, value) VALUES (?, ?)',\n [hashKey, currentHash]\n );\n }\n}\n\nexport async function updateVersion() {\n await runMigrations();\n await updateViews();\n}\n","import fs from '../../platform/server/fs';\nconst uuid = require('../../platform/uuid');\n\nexport async function uniqueFileName(existingFiles) {\n let initialName = 'My Finances';\n let idx = 1;\n\n // If there is a conflict, keep appending an index until there is no\n // conflict and we have a unique name\n let newName = initialName;\n while (existingFiles.find(file => file.name === newName)) {\n newName = `${initialName} ${idx}`;\n idx++;\n }\n\n return newName;\n}\n\nexport async function idFromFileName(name) {\n let id =\n name.replace(/( |[^A-Za-z0-9])/g, '-') + '-' + uuid.v4Sync().slice(0, 7);\n\n // Make sure the id is unique. There's a chance one could already\n // exist (although very unlikely now that we append unique\n // characters onto the id)\n let index = 0;\n\n let budgetDir = fs.getBudgetDir(id);\n while (await fs.exists(budgetDir)) {\n index++;\n budgetDir = fs.getBudgetDir(id + index.toString());\n }\n\n // If a suffix was added, update the id\n if (index > 0) {\n id = id + index.toString();\n }\n\n return id;\n}\n","import '@rschedule/standard-date-adapter/setup';\nimport '@rschedule/json-tools/Schedule';\n\nexport * from '@rschedule/standard-date-adapter';\nexport * from '@rschedule/core';\nexport * from '@rschedule/core/generators';\n","export function fromPlaidAccountType(type, subtype) {\n switch (type) {\n case 'brokerage':\n case 'investment':\n return 'investment';\n case 'credit':\n return 'credit';\n case 'loan':\n return 'debt';\n case 'other':\n return 'other';\n case 'depository':\n default:\n switch (subtype) {\n case 'money market':\n case 'savings':\n return 'savings';\n case 'cd':\n return 'cd';\n default:\n return 'checking';\n }\n }\n}\n\nexport function prettyAccountType(type) {\n switch (type) {\n case 'checking':\n return 'Checking';\n case 'savings':\n return 'Savings';\n case 'cd':\n return 'CD';\n case 'investment':\n return 'Investment';\n case 'credit':\n return 'Credit Card';\n case 'mortgage':\n return 'Mortgage';\n case 'debt':\n return 'Debt';\n case 'other':\n default:\n return 'Other';\n }\n}\n\nexport function determineOffBudget(type) {\n switch (type) {\n case 'investment':\n case 'mortgage':\n case 'debt':\n case 'other':\n return true;\n default:\n }\n return false;\n}\n","export function sequential(fn) {\n let sequenceState = {\n running: null,\n queue: []\n };\n\n function pump() {\n if (sequenceState.queue.length > 0) {\n const next = sequenceState.queue.shift();\n run(next.args, next.resolve, next.reject);\n } else {\n sequenceState.running = null;\n }\n }\n\n function run(args, resolve, reject) {\n sequenceState.running = fn(...args);\n\n sequenceState.running.then(\n val => {\n pump();\n resolve(val);\n },\n err => {\n pump();\n reject(err);\n }\n );\n }\n\n return (...args) => {\n if (!sequenceState.running) {\n return new Promise((resolve, reject) => {\n return run(args, resolve, reject);\n });\n } else {\n return new Promise((resolve, reject) => {\n sequenceState.queue.push({ resolve, reject, args });\n });\n }\n };\n}\n\nexport function once(fn) {\n let promise = null;\n let onceFn = (...args) => {\n if (!promise) {\n promise = fn(...args).finally(() => {\n promise = null;\n });\n return promise;\n }\n\n return promise;\n };\n\n return onceFn;\n}\n","import * as d from 'date-fns';\nimport memoizeOne from 'memoize-one';\n\nfunction _parse(value) {\n if (typeof value === 'string') {\n // Dates are hard. We just want to deal with months in the format\n // 2020-01 and days in the format 2020-01-01, but life is never\n // simple. We want to rely on native dates for date logic because\n // days are complicated (leap years, etc). But relying on native\n // dates mean we're exposed to craziness.\n //\n // The biggest problem is that JS dates work with local time by\n // default. We could try to only work with UTC, but there's not an\n // easy way to make `format` avoid local time, and not sure if we\n // want that anyway (`currentMonth` should surely print the local\n // time). We need to embrace local time, and as long as inputs to\n // date logic and outputs from format are local time, it should\n // work.\n //\n // To make sure we're in local time, always give Date integer\n // values. If you pass in a string to parse, different string\n // formats produce different results.\n //\n // A big problem is daylight savings, however. Usually, when\n // giving the time to the Date constructor, you get back a date\n // specifically for that time in your local timezone. However, if\n // daylight savings occurs on that exact time, you will get back\n // something different:\n //\n // This is fine:\n // > new Date(2017, 2, 12, 1).toString()\n // > 'Sun Mar 12 2017 01:00:00 GMT-0500 (Eastern Standard Time)'\n //\n // But wait, we got back a different time (3AM instead of 2AM):\n // > new Date(2017, 2, 12, 2).toString()\n // > 'Sun Mar 12 2017 03:00:00 GMT-0400 (Eastern Daylight Time)'\n //\n // The time is \"correctly\" adjusted via DST, but we _really_\n // wanted 2AM. The problem is that time simply doesn't exist.\n //\n // Why is this a problem? Well, consider a case where the DST\n // shift happens *at midnight* and it goes back an hour. You think\n // you have a date object for the next day, but when formatted it\n // actually shows the previous day. A more likely scenario: buggy\n // timezone data makes JS dates do this shift when it shouldn't,\n // so using midnight at the time for date logic gives back the\n // last day. See the time range of Sep 30 15:00 - Oct 1 1:00 for\n // the AEST timezone when nodejs-mobile incorrectly gives you back\n // a time an hour *before* you specified. Since this happens on\n // Oct 1, doing `addMonths(September, 1)` still gives you back\n // September. Issue here:\n // https://github.com/JaneaSystems/nodejs-mobile/issues/251\n //\n // The fix is simple once you understand this. Always use the 12th\n // hour of the day. That's it. There is no DST that shifts more\n // than 12 hours (god let's hope not) so no matter how far DST has\n // shifted backwards or forwards, doing date logic will stay\n // within the day we want.\n\n let [year, month, day] = value.split('-');\n if (day != null) {\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day), 12);\n } else if (month != null) {\n return new Date(parseInt(year), parseInt(month) - 1, 1, 12);\n } else {\n return new Date(parseInt(year), 0, 1, 12);\n }\n }\n return value;\n}\n\nexport const parseDate = _parse;\n\nexport function yearFromDate(date) {\n return d.format(_parse(date), 'yyyy');\n}\n\nexport function monthFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM');\n}\n\nexport function dayFromDate(date) {\n return d.format(_parse(date), 'yyyy-MM-dd');\n}\n\nexport function currentMonth() {\n if (global.IS_TESTING) {\n return '2017-01';\n } else {\n return d.format(new Date(), 'yyyy-MM');\n }\n}\n\nexport function currentDay() {\n if (global.IS_TESTING) {\n return '2017-01-01';\n } else {\n return d.format(new Date(), 'yyyy-MM-dd');\n }\n}\n\nexport function nextMonth(month) {\n return d.format(d.addMonths(_parse(month), 1), 'yyyy-MM');\n}\n\nexport function prevMonth(month) {\n return d.format(d.subMonths(_parse(month), 1), 'yyyy-MM');\n}\n\nexport function addMonths(month, n) {\n return d.format(d.addMonths(_parse(month), n), 'yyyy-MM');\n}\n\nexport function subMonths(month, n) {\n return d.format(d.subMonths(_parse(month), n), 'yyyy-MM');\n}\n\nexport function addDays(day, n) {\n return d.format(d.addDays(_parse(day), n), 'yyyy-MM-dd');\n}\n\nexport function subDays(day, n) {\n return d.format(d.subDays(_parse(day), n), 'yyyy-MM-dd');\n}\n\nexport function isBefore(month1, month2) {\n return d.isBefore(_parse(month1), _parse(month2));\n}\n\nexport function isAfter(month1, month2) {\n return d.isAfter(_parse(month1), _parse(month2));\n}\n\n// TODO: This doesn't really fit in this module anymore, should\n// probably live elsewhere\nexport function bounds(month) {\n return {\n start: parseInt(d.format(d.startOfMonth(_parse(month)), 'yyyyMMdd')),\n end: parseInt(d.format(d.endOfMonth(_parse(month)), 'yyyyMMdd'))\n };\n}\n\nexport function _range(start, end, inclusive) {\n const months = [];\n let month = monthFromDate(start);\n while (d.isBefore(_parse(month), _parse(end))) {\n months.push(month);\n month = addMonths(month, 1);\n }\n\n if (inclusive) {\n months.push(month);\n }\n\n return months;\n}\n\nexport function range(start, end) {\n return _range(start, end);\n}\n\nexport function rangeInclusive(start, end) {\n return _range(start, end, true);\n}\n\nexport function _dayRange(start, end, inclusive) {\n const days = [];\n let day = start;\n while (d.isBefore(_parse(day), _parse(end))) {\n days.push(day);\n day = addDays(day, 1);\n }\n\n if (inclusive) {\n days.push(day);\n }\n\n return days;\n}\n\nexport function dayRange(start, end) {\n return _dayRange(start, end);\n}\n\nexport function dayRangeInclusive(start, end) {\n return _dayRange(start, end, true);\n}\n\nexport function getMonthIndex(month) {\n return parseInt(month.slice(5, 7)) - 1;\n}\n\nexport function getYear(month) {\n return month.slice(0, 4);\n}\n\nexport function getMonth(day) {\n return day.slice(0, 7);\n}\n\nexport function getYearStart(month) {\n return getYear(month) + '-01';\n}\n\nexport function getYearEnd(month) {\n return getYear(month) + '-12';\n}\n\nexport function sheetForMonth(month) {\n return 'budget' + month.replace('-', '');\n}\n\nexport function nameForMonth(month) {\n return d.format(_parse(month), \"MMMM 'yy\");\n}\n\nexport function format(month, str) {\n return d.format(_parse(month), str);\n}\n\nexport const getDateFormatRegex = memoizeOne(format => {\n return new RegExp(\n format\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{4}')\n );\n});\n\nexport const getDayMonthFormat = memoizeOne(format => {\n return format\n .replace(/y+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '');\n});\n\nexport const getDayMonthRegex = memoizeOne(format => {\n let regex = format\n .replace(/y+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}');\n return new RegExp('^' + regex + '$');\n});\n\nexport const getMonthYearFormat = memoizeOne(format => {\n return format\n .replace(/d+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/\\/\\//, '/')\n .replace(/\\.\\./, '.')\n .replace(/--/, '-');\n});\n\nexport const getMonthYearRegex = memoizeOne(format => {\n let regex = format\n .replace(/d+/g, '')\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/\\/\\//, '/')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{2,4}');\n return new RegExp('^' + regex + '$');\n});\n\nexport const getShortYearFormat = memoizeOne(format => {\n return format.replace(/y+/g, 'yy');\n});\n\nexport const getShortYearRegex = memoizeOne(format => {\n let regex = format\n .replace(/[^\\w]$/, '')\n .replace(/^[^\\w]/, '')\n .replace(/d+/g, '\\\\d{1,2}')\n .replace(/M+/g, '\\\\d{1,2}')\n .replace(/y+/g, '\\\\d{2}');\n return new RegExp('^' + regex + '$');\n});\n","export class Query {\n constructor(state) {\n this.state = {\n filterExpressions: state.filterExpressions || [],\n selectExpressions: state.selectExpressions || [],\n groupExpressions: state.groupExpressions || [],\n orderExpressions: state.orderExpressions || [],\n calculation: false,\n rawMode: false,\n withDead: false,\n validateRefs: true,\n limit: null,\n offset: null,\n ...state\n };\n }\n\n filter(expr) {\n return new Query({\n ...this.state,\n filterExpressions: [...this.state.filterExpressions, expr]\n });\n }\n\n unfilter(exprs) {\n let exprSet = new Set(exprs);\n return new Query({\n ...this.state,\n filterExpressions: this.state.filterExpressions.filter(\n expr => !exprSet.has(Object.keys(expr)[0])\n )\n });\n }\n\n select(exprs = []) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n let query = new Query({ ...this.state, selectExpressions: exprs });\n query.state.calculation = false;\n return query;\n }\n\n calculate(expr) {\n let query = this.select({ result: expr });\n query.state.calculation = true;\n return query;\n }\n\n groupBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n groupExpressions: [...this.state.groupExpressions, ...exprs]\n });\n }\n\n orderBy(exprs) {\n if (!Array.isArray(exprs)) {\n exprs = [exprs];\n }\n\n return new Query({\n ...this.state,\n orderExpressions: [...this.state.orderExpressions, ...exprs]\n });\n }\n\n limit(num) {\n return new Query({ ...this.state, limit: num });\n }\n\n offset(num) {\n return new Query({ ...this.state, offset: num });\n }\n\n raw() {\n return new Query({ ...this.state, rawMode: true });\n }\n\n withDead() {\n return new Query({ ...this.state, withDead: true });\n }\n\n withoutValidatedRefs() {\n return new Query({ ...this.state, validateRefs: false });\n }\n\n options(opts) {\n return new Query({ ...this.state, tableOptions: opts });\n }\n\n serialize() {\n return this.state;\n }\n}\n\nexport function getPrimaryOrderBy(query, defaultOrderBy) {\n let orderExprs = query.serialize().orderExpressions;\n if (orderExprs.length === 0) {\n if (defaultOrderBy) {\n return { order: 'asc', ...defaultOrderBy };\n }\n return null;\n }\n\n let firstOrder = orderExprs[0];\n if (typeof firstOrder === 'string') {\n return { field: firstOrder, order: 'asc' };\n }\n // Handle this form: { field: 'desc' }\n let [field] = Object.keys(firstOrder);\n return { field, order: firstOrder[field] };\n}\n\nexport default function q(table) {\n return new Query({ table });\n}\n","import { integerToAmount, amountToInteger, currencyToAmount } from './util';\n\n// For now, this info is duplicated from the backend. Figure out how\n// to share it later.\nexport const TYPE_INFO = {\n date: {\n ops: ['is', 'isapprox', 'gt', 'gte', 'lt', 'lte'],\n nullable: false\n },\n id: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: true\n },\n string: {\n ops: ['is', 'contains', 'oneOf'],\n nullable: false\n },\n number: {\n ops: ['is', 'isapprox', 'isbetween', 'gt', 'gte', 'lt', 'lte'],\n nullable: false\n },\n boolean: {\n ops: ['is'],\n nullable: false\n }\n};\n\nexport const FIELD_TYPES = new Map(\n Object.entries({\n imported_payee: 'string',\n payee: 'id',\n date: 'date',\n notes: 'string',\n amount: 'number',\n amountInflow: 'number',\n amountOutfow: 'number',\n category: 'id',\n account: 'id',\n cleared: 'boolean'\n })\n);\n\nexport function mapField(field, opts) {\n opts = opts || {};\n\n switch (field) {\n case 'imported_payee':\n return 'imported payee';\n case 'amount':\n if (opts.inflow) {\n return 'amount (inflow)';\n } else if (opts.outflow) {\n return 'amount (outflow)';\n }\n return 'amount';\n case 'amount-inflow':\n return 'amount (inflow)';\n case 'amount-outflow':\n return 'amount (outflow)';\n default:\n return field;\n }\n}\n\nexport function friendlyOp(op, type) {\n switch (op) {\n case 'oneOf':\n return 'one of';\n case 'is':\n return 'is';\n case 'isapprox':\n return 'is approx';\n case 'isbetween':\n return 'is between';\n case 'contains':\n return 'contains';\n case 'gt':\n if (type === 'date') {\n return 'is after';\n }\n return 'is greater than';\n case 'gte':\n if (type === 'date') {\n return 'is after or equals';\n }\n return 'is greater than or equals';\n case 'lt':\n if (type === 'date') {\n return 'is before';\n }\n return 'is less than';\n case 'lte':\n if (type === 'date') {\n return 'is before or equals';\n }\n return 'is less than or equals';\n case 'true':\n return 'is true';\n case 'false':\n return 'is false';\n case 'set':\n return 'set';\n case 'link-schedule':\n return 'link schedule';\n default:\n return '';\n }\n}\n\nexport function deserializeField(field) {\n if (field === 'amount-inflow') {\n return { field: 'amount', options: { inflow: true } };\n } else if (field === 'amount-outflow') {\n return { field: 'amount', options: { outflow: true } };\n } else {\n return { field };\n }\n}\n\nexport function getFieldError(type) {\n switch (type) {\n case 'date-format':\n return 'Invalid date format';\n case 'no-null':\n case 'no-empty-array':\n case 'no-empty-string':\n return 'Value cannot be empty';\n case 'not-number':\n return 'Value must be a number';\n case 'invalid-field':\n return 'Please choose a valid field for this type of rule';\n default:\n return 'Internal error, sorry! Contact help@actualbudget.com';\n }\n}\n\nexport function sortNumbers(num1, num2) {\n if (num1 < num2) {\n return [num1, num2];\n }\n return [num2, num1];\n}\n\nexport function parse(item) {\n switch (item.type) {\n case 'number': {\n let parsed = item.value;\n if (item.field === 'amount' && item.op !== 'isbetween') {\n parsed = integerToAmount(parsed);\n }\n return { ...item, value: parsed };\n }\n case 'string': {\n let parsed = item.value == null ? '' : item.value;\n return { ...item, value: parsed };\n }\n default:\n }\n\n return { ...item, error: null };\n}\n\nexport function unparse({ error, inputKey, ...item }) {\n switch (item.type) {\n case 'number': {\n let unparsed = item.value;\n if (item.field === 'amount' && item.op !== 'isbetween') {\n unparsed = amountToInteger(unparsed);\n }\n\n return { ...item, value: unparsed };\n }\n case 'string': {\n let unparsed = item.value == null ? '' : item.value;\n return { ...item, value: unparsed };\n }\n default:\n }\n\n return item;\n}\n\nexport function makeValue(value, cond) {\n switch (cond.type) {\n case 'number': {\n if (cond.op !== 'isbetween') {\n return {\n ...cond,\n error: null,\n value: value ? currencyToAmount(value) || 0 : 0\n };\n }\n break;\n }\n default:\n }\n\n return { ...cond, error: null, value };\n}\n\nexport function getApproxNumberThreshold(number) {\n return (Math.abs(number) * 0.075) | 0;\n}\n","import * as monthUtils from './months';\nimport q from './query';\n\nexport function getStatus(nextDate, completed, hasTrans) {\n let today = monthUtils.currentDay();\n\n if (completed) {\n return 'completed';\n } else if (hasTrans) {\n return 'paid';\n } else if (nextDate === today) {\n return 'due';\n } else if (nextDate > today && nextDate <= monthUtils.addDays(today, 7)) {\n return 'upcoming';\n } else if (nextDate < today) {\n return 'missed';\n } else {\n return 'scheduled';\n }\n}\n\nexport function getHasTransactionsQuery(schedules) {\n let filters = schedules.map(schedule => {\n let dateCond = schedule._conditions.find(c => c.field === 'date');\n return {\n $and: {\n schedule: schedule.id,\n date: {\n $gte:\n dateCond && dateCond.op === 'is'\n ? schedule.next_date\n : monthUtils.subDays(schedule.next_date, 2)\n }\n }\n };\n });\n\n return q('transactions')\n .filter({ $or: filters })\n .orderBy({ date: 'desc' })\n .groupBy('schedule')\n .select(['schedule', 'date']);\n}\n\nfunction makeNumberSuffix(num) {\n // Slight abuse of date-fns to turn a number like \"1\" into the full\n // form \"1st\" but formatting a date with that number\n return monthUtils.format(new Date(2020, 0, num, 12), 'do');\n}\n\nfunction prettyDayName(day) {\n let days = {\n SU: 'Sunday',\n MO: 'Monday',\n TU: 'Tuesday',\n WE: 'Wednesday',\n TH: 'Thursday',\n FR: 'Friday',\n SA: 'Saturday'\n };\n return days[day];\n}\n\nexport function getRecurringDescription(config) {\n let interval = config.interval || 1;\n\n switch (config.frequency) {\n case 'weekly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} weeks` : 'week';\n desc += ' on ' + monthUtils.format(config.start, 'EEEE');\n return desc;\n }\n case 'monthly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} months` : 'month';\n\n if (config.patterns && config.patterns.length > 0) {\n // Sort the days ascending. We filter out -1 because that\n // represents \"last days\" and should always be last, but this\n // sort would put them first\n let patterns = [...config.patterns]\n .sort((p1, p2) => {\n let typeOrder =\n (p1.type === 'day' ? 1 : 0) - (p2.type === 'day' ? 1 : 0);\n let valOrder = p1.value - p2.value;\n\n if (typeOrder === 0) {\n return valOrder;\n }\n return typeOrder;\n })\n .filter(p => p.value !== -1);\n\n // Add on all -1 values to the end\n patterns = patterns.concat(config.patterns.filter(p => p.value === -1));\n\n desc += ' on the ';\n\n let strs = [];\n\n let uniqueDays = new Set(patterns.map(p => p.type));\n let isSameDay = uniqueDays.length === 1 && !uniqueDays.has('day');\n\n for (let pattern of patterns) {\n if (pattern.type === 'day') {\n if (pattern.value === -1) {\n strs.push('last day');\n } else {\n // Example: 15th day\n strs.push(makeNumberSuffix(pattern.value));\n }\n } else {\n let dayName = isSameDay ? '' : ' ' + prettyDayName(pattern.type);\n\n if (pattern.value === -1) {\n // Example: last Monday\n strs.push('last' + dayName);\n } else {\n // Example: 3rd Monday\n strs.push(makeNumberSuffix(pattern.value) + dayName);\n }\n }\n }\n\n if (strs.length > 2) {\n desc += strs.slice(0, strs.length - 1).join(', ');\n desc += ', and ';\n desc += strs[strs.length - 1];\n } else {\n desc += strs.join(' and ');\n }\n\n if (isSameDay) {\n desc += ' ' + prettyDayName(patterns[0].type);\n }\n } else {\n desc += ' on the ' + monthUtils.format(config.start, 'do');\n }\n\n return desc;\n }\n case 'yearly': {\n let desc = 'Every ';\n desc += interval !== 1 ? `${interval} years` : 'year';\n desc += ' on ' + monthUtils.format(config.start, 'LLL do');\n return desc;\n }\n default:\n return 'Recurring error';\n }\n}\n\nexport function recurConfigToRSchedule(config) {\n let base = {\n start: monthUtils.parseDate(config.start),\n frequency: config.frequency.toUpperCase(),\n byHourOfDay: [12]\n };\n\n if (config.interval) {\n base.interval = config.interval;\n }\n\n let abbrevDay = name => name.slice(0, 2).toUpperCase();\n\n switch (config.frequency) {\n case 'weekly':\n // Nothing to do\n return [base];\n case 'monthly':\n if (config.patterns && config.patterns.length > 0) {\n let days = config.patterns.filter(p => p.type === 'day');\n let dayNames = config.patterns.filter(p => p.type !== 'day');\n\n return [\n days.length > 0 && { ...base, byDayOfMonth: days.map(p => p.value) },\n dayNames.length > 0 && {\n ...base,\n byDayOfWeek: dayNames.map(p => [abbrevDay(p.type), p.value])\n }\n ].filter(Boolean);\n } else {\n // Nothing to do\n return [base];\n }\n case 'yearly':\n return [base];\n default:\n throw new Error('Invalid recurring date config');\n }\n}\n\nexport function extractScheduleConds(conditions) {\n return {\n payee:\n conditions.find(cond => cond.op === 'is' && cond.field === 'payee') ||\n conditions.find(\n cond => cond.op === 'is' && cond.field === 'description'\n ) ||\n null,\n account:\n conditions.find(cond => cond.op === 'is' && cond.field === 'account') ||\n conditions.find(cond => cond.op === 'is' && cond.field === 'acct') ||\n null,\n amount:\n conditions.find(\n cond =>\n (cond.op === 'is' ||\n cond.op === 'isapprox' ||\n cond.op === 'isbetween') &&\n cond.field === 'amount'\n ) || null,\n date:\n conditions.find(\n cond =>\n (cond.op === 'is' || cond.op === 'isapprox') && cond.field === 'date'\n ) || null\n };\n}\n\nexport function getScheduledAmount(amount) {\n if (amount && typeof amount !== 'number') {\n return ((amount.num1 + amount.num2) / 2) | 0;\n }\n return amount;\n}\n","import { last, diffItems, getChangedValues, applyChanges } from './util';\nconst uuid = require('../platform/uuid');\n\n// The amount might be null when adding a new transaction\nfunction num(n) {\n return typeof n === 'number' ? n : 0;\n}\n\nfunction SplitTransactionError(total, parent) {\n let difference = num(parent.amount) - total;\n\n return {\n type: 'SplitTransactionError',\n version: 1,\n difference\n };\n}\n\nexport function makeChild(parent, data) {\n let prefix = parent.id === 'temp' ? 'temp' : '';\n\n return {\n amount: 0,\n ...data,\n payee: data.payee || parent.payee,\n id: data.id ? data.id : prefix + uuid.v4Sync(),\n account: parent.account,\n date: parent.date,\n cleared: parent.cleared != null ? parent.cleared : null,\n starting_balance_flag:\n parent.starting_balance_flag != null\n ? parent.starting_balance_flag\n : null,\n is_child: true,\n parent_id: parent.id,\n error: null\n };\n}\n\nexport function recalculateSplit(trans) {\n // Calculate the new total of split transactions and make sure\n // that it equals the parent amount\n const total = trans.subtransactions.reduce(\n (acc, t) => acc + num(t.amount),\n 0\n );\n return {\n ...trans,\n error:\n total === num(trans.amount) ? null : SplitTransactionError(total, trans)\n };\n}\n\nexport function findParentIndex(transactions, idx) {\n // This relies on transactions being sorted in a way where parents\n // are always before children, which is enforced in the db layer.\n // Walk backwards and find the last parent;\n while (idx >= 0) {\n let trans = transactions[idx];\n if (trans.is_parent) {\n return idx;\n }\n idx--;\n }\n return null;\n}\n\nexport function getSplit(transactions, parentIndex) {\n let split = [transactions[parentIndex]];\n let curr = parentIndex + 1;\n while (curr < transactions.length && transactions[curr].is_child) {\n split.push(transactions[curr]);\n curr++;\n }\n return split;\n}\n\nexport function ungroupTransactions(transactions) {\n let x = transactions.reduce((list, parent) => {\n let { subtransactions, ...trans } = parent;\n subtransactions = subtransactions || [];\n\n list.push(trans);\n\n for (let i = 0; i < subtransactions.length; i++) {\n list.push(subtransactions[i]);\n }\n return list;\n }, []);\n return x;\n}\n\nexport function groupTransaction(split) {\n return { ...split[0], subtransactions: split.slice(1) };\n}\n\nexport function ungroupTransaction(split) {\n if (split == null) {\n return null;\n }\n return ungroupTransactions([split]);\n}\n\nexport function applyTransactionDiff(groupedTrans, diff) {\n return groupTransaction(applyChanges(diff, ungroupTransaction(groupedTrans)));\n}\n\nexport function replaceTransactions(transactions, id, func) {\n let idx = transactions.findIndex(t => t.id === id);\n let trans = transactions[idx];\n let transactionsCopy = [...transactions];\n\n if (idx === -1) {\n throw new Error('Tried to edit unknown transaction id: ' + id);\n }\n\n if (trans.is_parent || trans.is_child) {\n let parentIndex = findParentIndex(transactions, idx);\n if (parentIndex == null) {\n console.log('Cannot find parent index');\n return { diff: { deleted: [], updated: [] } };\n }\n\n let split = getSplit(transactions, parentIndex);\n let grouped = func(groupTransaction(split));\n let newSplit = ungroupTransaction(grouped);\n\n let diff;\n if (newSplit == null) {\n // If everything was deleted, just delete the parent which will\n // delete everything\n diff = { deleted: [{ id: split[0].id }], updated: [] };\n grouped = { id: split[0].id, _deleted: true };\n transactionsCopy.splice(parentIndex, split.length);\n } else {\n diff = diffItems(split, newSplit);\n transactionsCopy.splice(parentIndex, split.length, ...newSplit);\n }\n\n return { data: transactionsCopy, newTransaction: grouped, diff };\n } else {\n let grouped = func(trans);\n let newTrans = ungroupTransaction(grouped) || [];\n if (grouped) {\n grouped.subtransactions = grouped.subtransactions || [];\n }\n transactionsCopy.splice(idx, 1, ...newTrans);\n\n return {\n data: transactionsCopy,\n newTransaction: grouped || { id: trans.id, _deleted: true },\n diff: diffItems([trans], newTrans)\n };\n }\n}\n\nexport function addSplitTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (!trans.is_parent) {\n return trans;\n }\n let prevSub = last(trans.subtransactions);\n trans.subtransactions.push(\n makeChild(trans, {\n amount: 0,\n sort_order: num(prevSub && prevSub.sort_order) - 1\n })\n );\n return trans;\n });\n}\n\nexport function updateTransaction(transactions, transaction) {\n return replaceTransactions(transactions, transaction.id, trans => {\n if (trans.is_parent) {\n let parent = trans.id === transaction.id ? transaction : trans;\n let sub = trans.subtransactions.map(t => {\n // Make sure to update the children to reflect the updated\n // properties (if the parent updated)\n\n let child = t;\n if (trans.id === transaction.id) {\n child = {\n ...t,\n payee: t.payee === trans.payee ? transaction.payee : t.payee\n };\n } else if (t.id === transaction.id) {\n child = transaction;\n }\n\n return makeChild(parent, child);\n });\n\n return recalculateSplit({ ...parent, subtransactions: sub });\n } else {\n return transaction;\n }\n });\n}\n\nexport function deleteTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (trans.is_parent) {\n if (trans.id === id) {\n return null;\n } else if (trans.subtransactions.length === 1) {\n return {\n ...trans,\n subtransactions: null,\n is_parent: false,\n error: null\n };\n } else {\n let sub = trans.subtransactions.filter(t => t.id !== id);\n return recalculateSplit({ ...trans, subtransactions: sub });\n }\n } else {\n return null;\n }\n });\n}\n\nexport function splitTransaction(transactions, id) {\n return replaceTransactions(transactions, id, trans => {\n if (trans.is_parent || trans.is_child) {\n return trans;\n }\n\n return {\n ...trans,\n is_parent: true,\n error: num(trans.amount) === 0 ? null : SplitTransactionError(0, trans),\n subtransactions: [makeChild(trans, { amount: 0, sort_order: -1 })]\n };\n });\n}\n\nexport function realizeTempTransactions(transactions) {\n let parent = transactions.find(t => !t.is_child);\n parent = { ...parent, id: uuid.v4Sync() };\n\n let children = transactions.filter(t => t.is_child);\n return [\n parent,\n ...children.map(child => ({\n ...child,\n id: uuid.v4Sync(),\n parent_id: parent.id\n }))\n ];\n}\n","let currencyFormatter = require('currency-formatter');\n\nexport function cleanUUID(uuid) {\n return uuid.replace(/-/g, '');\n}\n\nexport function last(arr) {\n return arr[arr.length - 1];\n}\n\nexport function mergeObjects(objects) {\n return Object.assign.apply(null, [{}, ...objects]);\n}\n\nexport function composeCellChanges(objects) {\n const merged = {};\n Object.keys(objects).forEach(key => {\n if (merged[key]) {\n merged[key] = { ...merged[key], ...objects[key] };\n } else {\n merged[key] = objects[key];\n }\n });\n}\n\nexport function flattenArray(arrays) {\n return Array.prototype.concat.apply([], arrays);\n}\n\nexport function shallowEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n var numKeysA = 0,\n numKeysB = 0,\n key;\n for (key in b) {\n numKeysB++;\n if (!a.hasOwnProperty(key) || a[key] !== b[key]) {\n return false;\n }\n }\n for (key in a) {\n numKeysA++;\n }\n return numKeysA === numKeysB;\n}\n\nexport function getChangedValues(obj1, obj2) {\n // Keep the id field because this is mostly used to diff database\n // objects\n const diff = obj1.id ? { id: obj1.id } : {};\n const keys = Object.keys(obj2);\n let hasChanged = false;\n\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (obj1[key] !== obj2[key]) {\n diff[key] = obj2[key];\n hasChanged = true;\n }\n }\n\n return hasChanged ? diff : null;\n}\n\nexport function hasFieldsChanged(obj1, obj2, fields) {\n let changed = false;\n for (var i = 0; i < fields.length; i++) {\n let field = fields[i];\n if (obj1[field] !== obj2[field]) {\n changed = true;\n break;\n }\n }\n return changed;\n}\n\nexport function applyChanges(changes, items) {\n items = [...items];\n\n if (changes.added) {\n changes.added.forEach(add => {\n items.push(add);\n });\n }\n\n if (changes.updated) {\n changes.updated.forEach(({ id, ...fields }) => {\n const idx = items.findIndex(t => t.id === id);\n items[idx] = {\n ...items[idx],\n ...fields\n };\n });\n }\n\n if (changes.deleted) {\n changes.deleted.forEach(t => {\n const idx = items.findIndex(t2 => t.id === t2.id);\n if (idx !== -1) {\n items.splice(idx, 1);\n }\n });\n }\n\n return items;\n}\n\nexport function partitionByField(data, field) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n\n let items = res.get(key) || [];\n items.push(item);\n\n res.set(key, items);\n }\n return res;\n}\n\nexport function groupBy(data, field, mapper) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n let existing = res.get(key) || [];\n res.set(key, existing.concat([mapper ? mapper(item) : data[i]]));\n }\n return res;\n}\n\nexport function groupBySingle(data, field, mapper) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n let key = item[field];\n if (res.has(key)) {\n throw new Error('groupBySingle found conflicting key: ' + key);\n }\n res.set(key, mapper ? mapper(item) : data[i]);\n }\n return res;\n}\n\n// This should replace the existing `groupById` function, since a\n// `Map` is better, but we can't swap it out because `Map` has a\n// different API and we need to go through and update everywhere that\n// uses it.\nfunction _groupById(data) {\n let res = new Map();\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n res.set(item.id, item);\n }\n return res;\n}\n\nexport function diffItems(items, newItems) {\n let grouped = _groupById(items);\n let newGrouped = _groupById(newItems);\n let added = [];\n let updated = [];\n\n let deleted = items\n .filter(item => !newGrouped.has(item.id))\n .map(item => ({ id: item.id }));\n\n newItems.forEach(newItem => {\n let item = grouped.get(newItem.id);\n if (!item) {\n added.push(newItem);\n } else {\n const changes = getChangedValues(item, newItem);\n if (changes) {\n updated.push(changes);\n }\n }\n });\n\n return { added, updated, deleted };\n}\n\nexport function groupById(data) {\n let res = {};\n for (let i = 0; i < data.length; i++) {\n let item = data[i];\n res[item.id] = item;\n }\n return res;\n}\n\nexport function debugMemoFailure(prevProps, nextProps) {\n let changed = getChangedValues(prevProps, nextProps);\n if (changed !== null) {\n console.log(changed);\n }\n return changed === null;\n}\n\nexport function setIn(map, keys, item) {\n for (let i = 0; i < keys.length; i++) {\n let key = keys[i];\n\n if (i === keys.length - 1) {\n map.set(key, item);\n } else {\n if (!map.has(key)) {\n map.set(key, new Map());\n }\n\n map = map.get(key);\n }\n }\n}\n\nexport function getIn(map, keys) {\n let item = map;\n for (let i = 0; i < keys.length; i++) {\n item = item.get(keys[i]);\n\n if (item == null) {\n return item;\n }\n }\n return item;\n}\n\n// Useful for throwing exception from expressions\nexport function throwError(err) {\n throw err;\n}\n\nexport function fastSetMerge(set1, set2) {\n let finalSet = new Set(set1);\n let iter = set2.values();\n let value = iter.next();\n while (!value.done) {\n finalSet.add(value.value);\n value = iter.next();\n }\n return finalSet;\n}\n\nexport function titleFirst(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nexport let numberFormats = [\n { value: 'comma-dot', label: '1,000.33' },\n { value: 'dot-comma', label: '1.000,33' },\n { value: 'space-comma', label: '1 000,33' }\n];\n\nlet numberFormat = {\n value: null,\n formatter: null,\n regex: null\n};\n\nexport function setNumberFormat(format) {\n let locale, regex, separator;\n\n switch (format) {\n case 'space-comma':\n locale = 'za-ZA';\n regex = /[^-0-9,]/g;\n separator = ',';\n break;\n case 'dot-comma':\n locale = 'de-DE';\n regex = /[^-0-9,]/g;\n separator = ',';\n break;\n case 'comma-dot':\n default:\n locale = 'en-US';\n regex = /[^-0-9.]/g;\n separator = '.';\n }\n\n numberFormat = {\n value: format,\n separator,\n // This is the keep in line with the Intl API which we might\n // switch to when it's available on all mobile platforms\n formatter: {\n format: number =>\n currencyFormatter.format(number, { locale, format: '%v' })\n },\n regex\n };\n}\n\nexport function getNumberFormat() {\n return numberFormat;\n}\n\nsetNumberFormat('1,000.33');\n\nexport function toRelaxedNumber(value) {\n return integerToAmount(currencyToInteger(value) || 0);\n}\n\nexport function toRelaxedInteger(value) {\n return stringToInteger(value) || 0;\n}\n\nexport function integerToCurrency(n) {\n // Awesome\n return numberFormat.formatter.format(n / 100);\n}\n\nexport function amountToCurrency(n) {\n return numberFormat.formatter.format(n);\n}\n\nexport function amountToPrettyCurrency(n, code) {\n return currencyFormatter.format(n, { code });\n}\n\nexport function currencyToAmount(str) {\n let amount = parseFloat(\n str.replace(numberFormat.regex, '').replace(numberFormat.separator, '.')\n );\n return isNaN(amount) ? null : amount;\n}\n\nexport function currencyToInteger(str) {\n let amount = currencyToAmount(str);\n return amount ? amountToInteger(amount) : null;\n}\n\nexport function stringToInteger(str) {\n let amount = parseInt(str.replace(/[^-0-9.,]/g, ''));\n if (!isNaN(amount)) {\n return amount;\n }\n return null;\n}\n\nexport function amountToInteger(n) {\n return Math.round(n * 100);\n}\n\nexport function integerToAmount(n) {\n return parseFloat((n / 100).toFixed(2));\n}\n\n// This is used when the input format could be anything (from\n// financial files and we don't want to parse based on the user's\n// number format, because the user could be importing from many\n// currencies. We extract out the numbers and just ignore separators.\nexport function looselyParseAmount(amount) {\n function safeNumber(v) {\n return isNaN(v) ? null : v;\n }\n\n let m = amount.match(/[.,][^.,]*$/);\n if (!m || m.index === 0) {\n return safeNumber(parseFloat(amount));\n }\n\n let left = amount.slice(0, m.index);\n let right = amount.slice(m.index + 1);\n\n return safeNumber(parseFloat(left.replace(/[^0-9-]/g, '') + '.' + right));\n}\n\nexport function semverToNumber(str) {\n return parseInt(\n '1' +\n str\n .split('.')\n .map(x => {\n return ('000' + x.replace(/[^0-9]/g, '')).slice(-3);\n })\n .join('')\n );\n}\n","module.exports = require(\"better-sqlite3\");","module.exports = require(\"crypto\");","module.exports = require(\"fs\");","module.exports = require(\"node-fetch\");","module.exports = require(\"node-libofx\");","module.exports = require(\"path\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");"],"sourceRoot":""} |