landxml/bundles/landxml.native.js.map

1 line
1.5 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack://landxml/./node_modules/@turf/area/index.js","webpack://landxml/./node_modules/@turf/clone/index.js","webpack://landxml/./node_modules/@turf/helpers/index.js","webpack://landxml/./node_modules/@turf/meta/index.js","webpack://landxml/./node_modules/@turf/union/index.js","webpack://landxml/./node_modules/@turf/union/node_modules/@turf/invariant/index.js","webpack://landxml/./node_modules/babel-polyfill/lib/index.js","webpack://landxml/./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js","webpack://landxml/./node_modules/base64-js/index.js","webpack://landxml/./node_modules/buffer/index.js","webpack://landxml/./node_modules/core-js/fn/regexp/escape.js","webpack://landxml/./node_modules/core-js/modules/_a-function.js","webpack://landxml/./node_modules/core-js/modules/_a-number-value.js","webpack://landxml/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://landxml/./node_modules/core-js/modules/_advance-string-index.js","webpack://landxml/./node_modules/core-js/modules/_an-instance.js","webpack://landxml/./node_modules/core-js/modules/_an-object.js","webpack://landxml/./node_modules/core-js/modules/_array-copy-within.js","webpack://landxml/./node_modules/core-js/modules/_array-fill.js","webpack://landxml/./node_modules/core-js/modules/_array-from-iterable.js","webpack://landxml/./node_modules/core-js/modules/_array-includes.js","webpack://landxml/./node_modules/core-js/modules/_array-methods.js","webpack://landxml/./node_modules/core-js/modules/_array-reduce.js","webpack://landxml/./node_modules/core-js/modules/_array-species-constructor.js","webpack://landxml/./node_modules/core-js/modules/_array-species-create.js","webpack://landxml/./node_modules/core-js/modules/_bind.js","webpack://landxml/./node_modules/core-js/modules/_classof.js","webpack://landxml/./node_modules/core-js/modules/_cof.js","webpack://landxml/./node_modules/core-js/modules/_collection-strong.js","webpack://landxml/./node_modules/core-js/modules/_collection-to-json.js","webpack://landxml/./node_modules/core-js/modules/_collection-weak.js","webpack://landxml/./node_modules/core-js/modules/_collection.js","webpack://landxml/./node_modules/core-js/modules/_core.js","webpack://landxml/./node_modules/core-js/modules/_create-property.js","webpack://landxml/./node_modules/core-js/modules/_ctx.js","webpack://landxml/./node_modules/core-js/modules/_date-to-iso-string.js","webpack://landxml/./node_modules/core-js/modules/_date-to-primitive.js","webpack://landxml/./node_modules/core-js/modules/_defined.js","webpack://landxml/./node_modules/core-js/modules/_descriptors.js","webpack://landxml/./node_modules/core-js/modules/_dom-create.js","webpack://landxml/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://landxml/./node_modules/core-js/modules/_enum-keys.js","webpack://landxml/./node_modules/core-js/modules/_export.js","webpack://landxml/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://landxml/./node_modules/core-js/modules/_fails.js","webpack://landxml/./node_modules/core-js/modules/_fix-re-wks.js","webpack://landxml/./node_modules/core-js/modules/_flags.js","webpack://landxml/./node_modules/core-js/modules/_flatten-into-array.js","webpack://landxml/./node_modules/core-js/modules/_for-of.js","webpack://landxml/./node_modules/core-js/modules/_function-to-string.js","webpack://landxml/./node_modules/core-js/modules/_global.js","webpack://landxml/./node_modules/core-js/modules/_has.js","webpack://landxml/./node_modules/core-js/modules/_hide.js","webpack://landxml/./node_modules/core-js/modules/_html.js","webpack://landxml/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://landxml/./node_modules/core-js/modules/_inherit-if-required.js","webpack://landxml/./node_modules/core-js/modules/_invoke.js","webpack://landxml/./node_modules/core-js/modules/_iobject.js","webpack://landxml/./node_modules/core-js/modules/_is-array-iter.js","webpack://landxml/./node_modules/core-js/modules/_is-array.js","webpack://landxml/./node_modules/core-js/modules/_is-integer.js","webpack://landxml/./node_modules/core-js/modules/_is-object.js","webpack://landxml/./node_modules/core-js/modules/_is-regexp.js","webpack://landxml/./node_modules/core-js/modules/_iter-call.js","webpack://landxml/./node_modules/core-js/modules/_iter-create.js","webpack://landxml/./node_modules/core-js/modules/_iter-define.js","webpack://landxml/./node_modules/core-js/modules/_iter-detect.js","webpack://landxml/./node_modules/core-js/modules/_iter-step.js","webpack://landxml/./node_modules/core-js/modules/_iterators.js","webpack://landxml/./node_modules/core-js/modules/_library.js","webpack://landxml/./node_modules/core-js/modules/_math-expm1.js","webpack://landxml/./node_modules/core-js/modules/_math-fround.js","webpack://landxml/./node_modules/core-js/modules/_math-log1p.js","webpack://landxml/./node_modules/core-js/modules/_math-scale.js","webpack://landxml/./node_modules/core-js/modules/_math-sign.js","webpack://landxml/./node_modules/core-js/modules/_meta.js","webpack://landxml/./node_modules/core-js/modules/_metadata.js","webpack://landxml/./node_modules/core-js/modules/_microtask.js","webpack://landxml/./node_modules/core-js/modules/_new-promise-capability.js","webpack://landxml/./node_modules/core-js/modules/_object-assign.js","webpack://landxml/./node_modules/core-js/modules/_object-create.js","webpack://landxml/./node_modules/core-js/modules/_object-dp.js","webpack://landxml/./node_modules/core-js/modules/_object-dps.js","webpack://landxml/./node_modules/core-js/modules/_object-forced-pam.js","webpack://landxml/./node_modules/core-js/modules/_object-gopd.js","webpack://landxml/./node_modules/core-js/modules/_object-gopn-ext.js","webpack://landxml/./node_modules/core-js/modules/_object-gopn.js","webpack://landxml/./node_modules/core-js/modules/_object-gops.js","webpack://landxml/./node_modules/core-js/modules/_object-gpo.js","webpack://landxml/./node_modules/core-js/modules/_object-keys-internal.js","webpack://landxml/./node_modules/core-js/modules/_object-keys.js","webpack://landxml/./node_modules/core-js/modules/_object-pie.js","webpack://landxml/./node_modules/core-js/modules/_object-sap.js","webpack://landxml/./node_modules/core-js/modules/_object-to-array.js","webpack://landxml/./node_modules/core-js/modules/_own-keys.js","webpack://landxml/./node_modules/core-js/modules/_parse-float.js","webpack://landxml/./node_modules/core-js/modules/_parse-int.js","webpack://landxml/./node_modules/core-js/modules/_perform.js","webpack://landxml/./node_modules/core-js/modules/_promise-resolve.js","webpack://landxml/./node_modules/core-js/modules/_property-desc.js","webpack://landxml/./node_modules/core-js/modules/_redefine-all.js","webpack://landxml/./node_modules/core-js/modules/_redefine.js","webpack://landxml/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://landxml/./node_modules/core-js/modules/_regexp-exec.js","webpack://landxml/./node_modules/core-js/modules/_replacer.js","webpack://landxml/./node_modules/core-js/modules/_same-value.js","webpack://landxml/./node_modules/core-js/modules/_set-collection-from.js","webpack://landxml/./node_modules/core-js/modules/_set-collection-of.js","webpack://landxml/./node_modules/core-js/modules/_set-proto.js","webpack://landxml/./node_modules/core-js/modules/_set-species.js","webpack://landxml/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://landxml/./node_modules/core-js/modules/_shared-key.js","webpack://landxml/./node_modules/core-js/modules/_shared.js","webpack://landxml/./node_modules/core-js/modules/_species-constructor.js","webpack://landxml/./node_modules/core-js/modules/_strict-method.js","webpack://landxml/./node_modules/core-js/modules/_string-at.js","webpack://landxml/./node_modules/core-js/modules/_string-context.js","webpack://landxml/./node_modules/core-js/modules/_string-html.js","webpack://landxml/./node_modules/core-js/modules/_string-pad.js","webpack://landxml/./node_modules/core-js/modules/_string-repeat.js","webpack://landxml/./node_modules/core-js/modules/_string-trim.js","webpack://landxml/./node_modules/core-js/modules/_string-ws.js","webpack://landxml/./node_modules/core-js/modules/_task.js","webpack://landxml/./node_modules/core-js/modules/_to-absolute-index.js","webpack://landxml/./node_modules/core-js/modules/_to-index.js","webpack://landxml/./node_modules/core-js/modules/_to-integer.js","webpack://landxml/./node_modules/core-js/modules/_to-iobject.js","webpack://landxml/./node_modules/core-js/modules/_to-length.js","webpack://landxml/./node_modules/core-js/modules/_to-object.js","webpack://landxml/./node_modules/core-js/modules/_to-primitive.js","webpack://landxml/./node_modules/core-js/modules/_typed-array.js","webpack://landxml/./node_modules/core-js/modules/_typed-buffer.js","webpack://landxml/./node_modules/core-js/modules/_typed.js","webpack://landxml/./node_modules/core-js/modules/_uid.js","webpack://landxml/./node_modules/core-js/modules/_user-agent.js","webpack://landxml/./node_modules/core-js/modules/_validate-collection.js","webpack://landxml/./node_modules/core-js/modules/_wks-define.js","webpack://landxml/./node_modules/core-js/modules/_wks-ext.js","webpack://landxml/./node_modules/core-js/modules/_wks.js","webpack://landxml/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://landxml/./node_modules/core-js/modules/core.regexp.escape.js","webpack://landxml/./node_modules/core-js/modules/es6.array.copy-within.js","webpack://landxml/./node_modules/core-js/modules/es6.array.every.js","webpack://landxml/./node_modules/core-js/modules/es6.array.fill.js","webpack://landxml/./node_modules/core-js/modules/es6.array.filter.js","webpack://landxml/./node_modules/core-js/modules/es6.array.find-index.js","webpack://landxml/./node_modules/core-js/modules/es6.array.find.js","webpack://landxml/./node_modules/core-js/modules/es6.array.for-each.js","webpack://landxml/./node_modules/core-js/modules/es6.array.from.js","webpack://landxml/./node_modules/core-js/modules/es6.array.index-of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.is-array.js","webpack://landxml/./node_modules/core-js/modules/es6.array.iterator.js","webpack://landxml/./node_modules/core-js/modules/es6.array.join.js","webpack://landxml/./node_modules/core-js/modules/es6.array.last-index-of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.map.js","webpack://landxml/./node_modules/core-js/modules/es6.array.of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.reduce-right.js","webpack://landxml/./node_modules/core-js/modules/es6.array.reduce.js","webpack://landxml/./node_modules/core-js/modules/es6.array.slice.js","webpack://landxml/./node_modules/core-js/modules/es6.array.some.js","webpack://landxml/./node_modules/core-js/modules/es6.array.sort.js","webpack://landxml/./node_modules/core-js/modules/es6.array.species.js","webpack://landxml/./node_modules/core-js/modules/es6.date.now.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-json.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.function.bind.js","webpack://landxml/./node_modules/core-js/modules/es6.function.has-instance.js","webpack://landxml/./node_modules/core-js/modules/es6.function.name.js","webpack://landxml/./node_modules/core-js/modules/es6.map.js","webpack://landxml/./node_modules/core-js/modules/es6.math.acosh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.asinh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.atanh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://landxml/./node_modules/core-js/modules/es6.math.clz32.js","webpack://landxml/./node_modules/core-js/modules/es6.math.cosh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.expm1.js","webpack://landxml/./node_modules/core-js/modules/es6.math.fround.js","webpack://landxml/./node_modules/core-js/modules/es6.math.hypot.js","webpack://landxml/./node_modules/core-js/modules/es6.math.imul.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log10.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log1p.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log2.js","webpack://landxml/./node_modules/core-js/modules/es6.math.sign.js","webpack://landxml/./node_modules/core-js/modules/es6.math.sinh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.tanh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.trunc.js","webpack://landxml/./node_modules/core-js/modules/es6.number.constructor.js","webpack://landxml/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://landxml/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://landxml/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://landxml/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://landxml/./node_modules/core-js/modules/es6.object.assign.js","webpack://landxml/./node_modules/core-js/modules/es6.object.create.js","webpack://landxml/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://landxml/./node_modules/core-js/modules/es6.object.define-property.js","webpack://landxml/./node_modules/core-js/modules/es6.object.freeze.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-extensible.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-frozen.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-sealed.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is.js","webpack://landxml/./node_modules/core-js/modules/es6.object.keys.js","webpack://landxml/./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://landxml/./node_modules/core-js/modules/es6.object.seal.js","webpack://landxml/./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.object.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.parse-float.js","webpack://landxml/./node_modules/core-js/modules/es6.parse-int.js","webpack://landxml/./node_modules/core-js/modules/es6.promise.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.has.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.set.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.flags.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.match.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.search.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.split.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.set.js","webpack://landxml/./node_modules/core-js/modules/es6.string.anchor.js","webpack://landxml/./node_modules/core-js/modules/es6.string.big.js","webpack://landxml/./node_modules/core-js/modules/es6.string.blink.js","webpack://landxml/./node_modules/core-js/modules/es6.string.bold.js","webpack://landxml/./node_modules/core-js/modules/es6.string.code-point-at.js","webpack://landxml/./node_modules/core-js/modules/es6.string.ends-with.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fixed.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fontcolor.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fontsize.js","webpack://landxml/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://landxml/./node_modules/core-js/modules/es6.string.includes.js","webpack://landxml/./node_modules/core-js/modules/es6.string.italics.js","webpack://landxml/./node_modules/core-js/modules/es6.string.iterator.js","webpack://landxml/./node_modules/core-js/modules/es6.string.link.js","webpack://landxml/./node_modules/core-js/modules/es6.string.raw.js","webpack://landxml/./node_modules/core-js/modules/es6.string.repeat.js","webpack://landxml/./node_modules/core-js/modules/es6.string.small.js","webpack://landxml/./node_modules/core-js/modules/es6.string.starts-with.js","webpack://landxml/./node_modules/core-js/modules/es6.string.strike.js","webpack://landxml/./node_modules/core-js/modules/es6.string.sub.js","webpack://landxml/./node_modules/core-js/modules/es6.string.sup.js","webpack://landxml/./node_modules/core-js/modules/es6.string.trim.js","webpack://landxml/./node_modules/core-js/modules/es6.symbol.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://landxml/./node_modules/core-js/modules/es6.weak-map.js","webpack://landxml/./node_modules/core-js/modules/es6.weak-set.js","webpack://landxml/./node_modules/core-js/modules/es7.array.flat-map.js","webpack://landxml/./node_modules/core-js/modules/es7.array.flatten.js","webpack://landxml/./node_modules/core-js/modules/es7.array.includes.js","webpack://landxml/./node_modules/core-js/modules/es7.asap.js","webpack://landxml/./node_modules/core-js/modules/es7.error.is-error.js","webpack://landxml/./node_modules/core-js/modules/es7.global.js","webpack://landxml/./node_modules/core-js/modules/es7.map.from.js","webpack://landxml/./node_modules/core-js/modules/es7.map.of.js","webpack://landxml/./node_modules/core-js/modules/es7.map.to-json.js","webpack://landxml/./node_modules/core-js/modules/es7.math.clamp.js","webpack://landxml/./node_modules/core-js/modules/es7.math.deg-per-rad.js","webpack://landxml/./node_modules/core-js/modules/es7.math.degrees.js","webpack://landxml/./node_modules/core-js/modules/es7.math.fscale.js","webpack://landxml/./node_modules/core-js/modules/es7.math.iaddh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.imulh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.isubh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.rad-per-deg.js","webpack://landxml/./node_modules/core-js/modules/es7.math.radians.js","webpack://landxml/./node_modules/core-js/modules/es7.math.scale.js","webpack://landxml/./node_modules/core-js/modules/es7.math.signbit.js","webpack://landxml/./node_modules/core-js/modules/es7.math.umulh.js","webpack://landxml/./node_modules/core-js/modules/es7.object.define-getter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.define-setter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.entries.js","webpack://landxml/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://landxml/./node_modules/core-js/modules/es7.object.lookup-getter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.lookup-setter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.values.js","webpack://landxml/./node_modules/core-js/modules/es7.observable.js","webpack://landxml/./node_modules/core-js/modules/es7.promise.finally.js","webpack://landxml/./node_modules/core-js/modules/es7.promise.try.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.set.from.js","webpack://landxml/./node_modules/core-js/modules/es7.set.of.js","webpack://landxml/./node_modules/core-js/modules/es7.set.to-json.js","webpack://landxml/./node_modules/core-js/modules/es7.string.at.js","webpack://landxml/./node_modules/core-js/modules/es7.string.match-all.js","webpack://landxml/./node_modules/core-js/modules/es7.string.pad-end.js","webpack://landxml/./node_modules/core-js/modules/es7.string.pad-start.js","webpack://landxml/./node_modules/core-js/modules/es7.string.trim-left.js","webpack://landxml/./node_modules/core-js/modules/es7.string.trim-right.js","webpack://landxml/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://landxml/./node_modules/core-js/modules/es7.symbol.observable.js","webpack://landxml/./node_modules/core-js/modules/es7.system.global.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-map.from.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-map.of.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-set.from.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-set.of.js","webpack://landxml/./node_modules/core-js/modules/web.dom.iterable.js","webpack://landxml/./node_modules/core-js/modules/web.immediate.js","webpack://landxml/./node_modules/core-js/modules/web.timers.js","webpack://landxml/./node_modules/core-js/shim.js","webpack://landxml/./node_modules/emitter-component/index.js","webpack://landxml/./node_modules/events/events.js","webpack://landxml/./node_modules/ieee754/index.js","webpack://landxml/./node_modules/martinez-polygon-clipping/dist/martinez.umd.js","webpack://landxml/./node_modules/randomcolor/randomColor.js","webpack://landxml/./node_modules/react-native-xml2js/lib/bom.js","webpack://landxml/./node_modules/react-native-xml2js/lib/builder.js","webpack://landxml/./node_modules/react-native-xml2js/lib/defaults.js","webpack://landxml/./node_modules/react-native-xml2js/lib/parser.js","webpack://landxml/./node_modules/react-native-xml2js/lib/processors.js","webpack://landxml/./node_modules/react-native-xml2js/lib/xml2js.js","webpack://landxml/./node_modules/sax/lib/sax.js","webpack://landxml/./node_modules/stream/index.js","webpack://landxml/./node_modules/string_decoder/lib/string_decoder.js","webpack://landxml/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://landxml/./node_modules/timers/index.js","webpack://landxml/./node_modules/xmlbuilder/lib/Utility.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLAttribute.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLCData.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLComment.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDTDAttList.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDTDElement.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDTDEntity.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDTDNotation.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDeclaration.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDocType.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDocument.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLDocumentCB.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLElement.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLNode.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLRaw.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLStreamWriter.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLStringWriter.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLStringifier.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLText.js","webpack://landxml/./node_modules/xmlbuilder/lib/XMLWriterBase.js","webpack://landxml/./node_modules/xmlbuilder/lib/index.js","webpack://landxml/./node_modules/proj4/lib/constants/values.js","webpack://landxml/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://landxml/./node_modules/proj4/lib/constants/units.js","webpack://landxml/./node_modules/proj4/lib/match.js","webpack://landxml/./node_modules/proj4/lib/projString.js","webpack://landxml/./node_modules/wkt-parser/parser.js","webpack://landxml/./node_modules/wkt-parser/process.js","webpack://landxml/./node_modules/wkt-parser/index.js","webpack://landxml/./node_modules/proj4/lib/defs.js","webpack://landxml/./node_modules/proj4/lib/global.js","webpack://landxml/./node_modules/proj4/lib/parseCode.js","webpack://landxml/./node_modules/proj4/lib/extend.js","webpack://landxml/./node_modules/proj4/lib/common/msfnz.js","webpack://landxml/./node_modules/proj4/lib/common/sign.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_lon.js","webpack://landxml/./node_modules/proj4/lib/common/tsfnz.js","webpack://landxml/./node_modules/proj4/lib/common/phi2z.js","webpack://landxml/./node_modules/proj4/lib/projections/longlat.js","webpack://landxml/./node_modules/proj4/lib/projections.js","webpack://landxml/./node_modules/proj4/lib/projections/merc.js","webpack://landxml/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://landxml/./node_modules/proj4/lib/constants/Datum.js","webpack://landxml/./node_modules/proj4/lib/Proj.js","webpack://landxml/./node_modules/proj4/lib/deriveConstants.js","webpack://landxml/./node_modules/proj4/lib/datum.js","webpack://landxml/./node_modules/proj4/lib/datumUtils.js","webpack://landxml/./node_modules/proj4/lib/datum_transform.js","webpack://landxml/./node_modules/proj4/lib/adjust_axis.js","webpack://landxml/./node_modules/proj4/lib/common/toPoint.js","webpack://landxml/./node_modules/proj4/lib/checkSanity.js","webpack://landxml/./node_modules/proj4/lib/transform.js","webpack://landxml/./node_modules/proj4/lib/core.js","webpack://landxml/./node_modules/mgrs/mgrs.js","webpack://landxml/./node_modules/proj4/lib/Point.js","webpack://landxml/./node_modules/proj4/lib/common/pj_enfn.js","webpack://landxml/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://landxml/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://landxml/./node_modules/proj4/lib/projections/tmerc.js","webpack://landxml/./node_modules/proj4/lib/common/sinh.js","webpack://landxml/./node_modules/proj4/lib/common/hypot.js","webpack://landxml/./node_modules/proj4/lib/common/gatg.js","webpack://landxml/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://landxml/./node_modules/proj4/lib/common/cosh.js","webpack://landxml/./node_modules/proj4/lib/projections/etmerc.js","webpack://landxml/./node_modules/proj4/lib/common/clens.js","webpack://landxml/./node_modules/proj4/lib/common/asinhy.js","webpack://landxml/./node_modules/proj4/lib/common/log1py.js","webpack://landxml/./node_modules/proj4/lib/projections/utm.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_zone.js","webpack://landxml/./node_modules/proj4/lib/common/srat.js","webpack://landxml/./node_modules/proj4/lib/projections/gauss.js","webpack://landxml/./node_modules/proj4/lib/projections/sterea.js","webpack://landxml/./node_modules/proj4/lib/projections/stere.js","webpack://landxml/./node_modules/proj4/lib/projections/somerc.js","webpack://landxml/./node_modules/proj4/lib/projections/omerc.js","webpack://landxml/./node_modules/proj4/lib/projections/lcc.js","webpack://landxml/./node_modules/proj4/lib/projections/krovak.js","webpack://landxml/./node_modules/proj4/lib/common/mlfn.js","webpack://landxml/./node_modules/proj4/lib/common/e0fn.js","webpack://landxml/./node_modules/proj4/lib/common/e1fn.js","webpack://landxml/./node_modules/proj4/lib/common/e2fn.js","webpack://landxml/./node_modules/proj4/lib/common/e3fn.js","webpack://landxml/./node_modules/proj4/lib/common/gN.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_lat.js","webpack://landxml/./node_modules/proj4/lib/common/imlfn.js","webpack://landxml/./node_modules/proj4/lib/projections/cass.js","webpack://landxml/./node_modules/proj4/lib/common/qsfnz.js","webpack://landxml/./node_modules/proj4/lib/projections/laea.js","webpack://landxml/./node_modules/proj4/lib/common/asinz.js","webpack://landxml/./node_modules/proj4/lib/projections/aea.js","webpack://landxml/./node_modules/proj4/lib/projections/gnom.js","webpack://landxml/./node_modules/proj4/lib/projections/cea.js","webpack://landxml/./node_modules/proj4/lib/common/iqsfnz.js","webpack://landxml/./node_modules/proj4/lib/projections/eqc.js","webpack://landxml/./node_modules/proj4/lib/projections/poly.js","webpack://landxml/./node_modules/proj4/lib/projections/nzmg.js","webpack://landxml/./node_modules/proj4/lib/projections/mill.js","webpack://landxml/./node_modules/proj4/lib/projections/sinu.js","webpack://landxml/./node_modules/proj4/lib/projections/moll.js","webpack://landxml/./node_modules/proj4/lib/projections/eqdc.js","webpack://landxml/./node_modules/proj4/lib/projections/vandg.js","webpack://landxml/./node_modules/proj4/lib/projections/aeqd.js","webpack://landxml/./node_modules/proj4/lib/projections/ortho.js","webpack://landxml/./node_modules/proj4/lib/projections/qsc.js","webpack://landxml/./node_modules/proj4/lib/projections/robin.js","webpack://landxml/./node_modules/proj4/lib/projections/geocent.js","webpack://landxml/./node_modules/proj4/lib/projections/tpers.js","webpack://landxml/./node_modules/proj4/projs.js","webpack://landxml/./node_modules/proj4/lib/index.js","webpack://landxml/./lib/projection.js","webpack://landxml/./lib/util.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/meta/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/clone/main.es.js","webpack://landxml/./node_modules/@turf/rhumb-destination/node_modules/@turf/helpers/main.es.js","webpack://landxml/./node_modules/@turf/rhumb-destination/main.es.js","webpack://landxml/./node_modules/@turf/invariant/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/helpers/main.es.js","webpack://landxml/./lib/pipe-network.js","webpack://landxml/./lib/converter.js","webpack://landxml/./lib/parcel.js","webpack://landxml/./lib/surface.js","webpack://landxml/webpack/bootstrap","webpack://landxml/webpack/startup","webpack://landxml/webpack/runtime/compat get default export","webpack://landxml/webpack/runtime/define property getters","webpack://landxml/webpack/runtime/global","webpack://landxml/webpack/runtime/hasOwnProperty shorthand","webpack://landxml/webpack/runtime/make namespace object","webpack://landxml/webpack/runtime/node module decorator"],"names":["meta_1","RADIUS","polygonArea","coords","total","length","Math","abs","ringArea","i","p1","p2","lowerIndex","middleIndex","upperIndex","coordsLength","rad","sin","num","PI","exports","geojson","geomReduce","value","geom","type","coordinates","calculateArea","cloneFeature","cloned","Object","keys","forEach","key","properties","cloneProperties","geometry","cloneGeometry","Array","isArray","map","item","bbox","geometries","g","deepSlice","slice","coord","Error","features","feature","cloneFeatureCollection","options","feat","id","point","polygon","_i","coordinates_1","ring","j","lineString","featureCollection","fc","multiLineString","multiPoint","multiPolygon","radiansToLength","radians","units","factor","factors","lengthToRadians","distance","radiansToDegrees","isNumber","isNaN","test","defineProperty","earthRadius","centimeters","centimetres","degrees","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","yards","unitsFactors","areaFactors","acres","points","polygons","lineStrings","geometryCollection","round","precision","multiplier","pow","lengthToDegrees","bearingToAzimuth","bearing","angle","degreesToRadians","convertLength","originalUnit","finalUnit","convertArea","area","startFactor","finalFactor","isObject","input","constructor","validateBBox","validateId","indexOf","radians2degrees","degrees2radians","distanceToDegrees","distanceToRadians","radiansToDistance","bearingToAngle","convertDistance","helpers","coordEach","callback","excludeWrapCoord","k","l","stopG","geometryMaybeCollection","isGeometryCollection","wrapShrink","coordIndex","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","propEach","featureEach","geomEach","featureProperties","featureBBox","featureId","undefined","flattenEach","segmentEach","segmentIndex","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","currentCoord","featureIndexCoord","multiPartIndexCoord","currentSegment","lineEach","coordReduce","initialValue","previousValue","propReduce","currentProperties","featureReduce","currentFeature","coordAll","push","currentGeometry","flattenReduce","segmentReduce","started","lineReduce","currentLine","findSegment","findPoint","martinez","invariant_1","helpers_1","polygon1","polygon2","coords1","getGeom","coords2","unioned","union","getCoord","getCoords","containsNumber","geojsonType","name","featureOf","collectionOf","_a","getType","_babelPolyfill","define","O","writable","configurable","String","prototype","padStart","padEnd","split","Function","call","bind","global","Op","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","runtime","regeneratorRuntime","module","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","create","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","next","then","result","done","toString","object","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","resetTryEntry","charAt","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","fn","obj","err","invoke","resolve","reject","Promise","unwrapped","previousPromise","process","domain","callInvokeWithMethodAndArg","return","TypeError","info","pushTryEntry","locs","iteratorMethod","window","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","Uint8Array","code","start","end","output","base64","ieee754","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","encodingOrOffset","allocUnsafe","from","isArrayBuffer","array","byteOffset","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","checked","copy","isArrayBufferView","numberIsNaN","fromArrayLike","data","fromObject","assertSize","size","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","buffer","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","c","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","e","typedArraySupport","console","error","species","enumerable","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","Infinity","leadSurrogate","trim","replace","base64clean","src","dst","ArrayBuffer","isView","it","cof","msg","UNSCOPABLES","ArrayProto","at","S","index","unicode","Constructor","forbiddenField","toObject","toAbsoluteIndex","toLength","copyWithin","to","count","inc","aLen","endPos","forOf","ITERATOR","toIObject","IS_INCLUDES","$this","el","fromIndex","ctx","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","f","aFunction","memo","isRight","SPECIES","original","C","speciesConstructor","arraySlice","factories","construct","F","args","partArgs","bound","TAG","ARG","T","B","tryGet","callee","dP","redefineAll","anInstance","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","_f","getConstructor","wrapper","NAME","ADDER","_t","_l","clear","r","p","v","has","get","def","setStrong","iterated","kind","_k","classof","getWeak","anObject","createArrayMethod","$has","arrayFind","arrayFindIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","store","splice","ufstore","$export","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","entries","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","NEED","G","W","core","version","__e","$defineProperty","createDesc","getTime","Date","$toISOString","toISOString","lz","NaN","d","getUTCFullYear","getUTCMilliseconds","s","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","toPrimitive","NUMBER","hint","document","is","createElement","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","hide","source","own","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","P","IS_BIND","expProto","U","R","MATCH","re","exec","defined","wks","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","strfn","rxfn","RegExp","ignoreCase","multiline","sticky","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","mapFn","isArrayIter","getIterFn","BREAK","RETURN","iterFn","__g","documentElement","un","propertyIsEnumerable","Iterators","floor","isRegExp","descriptor","LIBRARY","$iterCreate","BUGGY","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","SAFE_CLOSING","riter","skipClosing","safe","$expm1","expm1","sign","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","log1p","log","scale","inLow","inHigh","outLow","outHigh","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","onFreeze","Map","shared","getOrCreateMetadataMap","targetKey","targetMetadata","keyMetadata","MetadataKey","metadataMap","MetadataValue","_","macrotask","Observer","MutationObserver","WebKitMutationObserver","isNode","head","last","notify","flush","parent","exit","enter","nextTick","navigator","standalone","promise","toggle","node","createTextNode","observe","characterData","task","PromiseCapability","$$resolve","$$reject","$assign","assign","A","K","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","lt","close","Properties","IE8_DOM_DEFINE","Attributes","defineProperties","random","__defineSetter__","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","names","isEntries","Reflect","ownKeys","$parseFloat","$trim","$parseInt","ws","hex","radix","newPromiseCapability","promiseCapability","bitmap","SRC","$toString","TO_STRING","TPL","isFunction","builtinExec","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","lastIndex","reCopy","regExp","replacer","part","COLLECTION","mapping","cb","nextItem","of","check","buggy","tag","stat","uid","SHARED","mode","copyright","D","toInteger","searchString","quot","createHTML","attribute","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","ceil","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","defer","channel","port","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","number","valueOf","$typed","$buffer","propertyDesc","toIndex","createArrayIncludes","ArrayIterators","arrayFill","arrayCopyWithin","$DP","$GOPD","ARRAY_BUFFER","SHARED_BUFFER","BYTES_PER_ELEMENT","$ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","WRONG_LENGTH","$map","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","internal","_d","$from","mapfn","$of","TO_LOCALE_BUG","$toLocaleString","every","filter","find","predicate","findIndex","searchElement","separator","middle","some","comparefn","begin","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","ABV","TypedArrayPrototype","addElement","o","getter","setter","$offset","$length","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","DATA_VIEW","WRONG_INDEX","BaseBuffer","LN2","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","Typed","TypedArrayConstructors","px","userAgent","wksExt","USE_SYMBOL","$re","escape","$every","$filter","$find","forced","$forEach","STRICT","createProperty","$indexOf","NEGATIVE_ZERO","addToUnscopables","Arguments","$reduce","upTo","$some","$sort","pv","TO_PRIMITIVE","DateProto","INVALID_DATE","HAS_INSTANCE","FunctionProto","FProto","nameRE","strong","MAP","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LOG10E","log2","sinh","E","tanh","trunc","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","digits","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","aNumberValue","$toFixed","toFixed","ERROR","ZERO","multiply","c2","divide","numToString","t","acc","fractionDigits","z","x2","$fails","$toPrecision","toPrecision","$freeze","$getOwnPropertyDescriptor","$getPrototypeOf","$isExtensible","$isFrozen","$isSealed","$preventExtensions","$seal","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","emit","onunhandledrejection","reason","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","capability","all","$index","alreadyCalled","race","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","receiver","setProto","V","existingDescriptor","ownDesc","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","flags","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","add","$at","codePointAt","ENDS_WITH","$endsWith","endsWith","endPosition","search","color","$fromCodePoint","fromCodePoint","INCLUDES","url","raw","callSite","tpl","STARTS_WITH","$startsWith","startsWith","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","JSON","_stringify","stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","$replacer","$isView","fin","viewS","viewT","init","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","WEAK_MAP","$WeakMap","WEAK_SET","arraySpeciesCreate","flatMap","flatten","depthArg","$includes","asap","isError","clamp","lower","upper","DEG_PER_RAD","RAD_PER_DEG","fscale","iaddh","x0","x1","y0","y1","$x0","$y0","imulh","u","$u","$v","u0","v0","u1","v1","isubh","signbit","umulh","__defineGetter__","getOwnPropertyDescriptors","getDesc","__lookupGetter__","__lookupSetter__","$values","OBSERVABLE","cleanupSubscription","subscription","cleanup","subscriptionClosed","_o","closeSubscription","Subscription","observer","subscriber","SubscriptionObserver","unsubscribe","$Observable","subscribe","observable","items","Observable","onFinally","metadata","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","deleteMetadata","Set","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","getMetadata","getOwnMetadataKeys","getOwnMetadata","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","$pad","WEBKIT_BUG","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","time","boundArgs","setInterval","Emitter","mixin","on","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","listeners","hasListeners","EventEmitter","_events","_maxListeners","isUndefined","defaultMaxListeners","setMaxListeners","er","addListener","newListener","warned","trace","fired","listenerCount","evlistener","emitter","isLE","DEFAULT_COMPARE","SplayTree","noDuplicates","_compare","_root","_size","_noDuplicates","prototypeAccessors","loadRecursive","right","pivot","rotateLeft","rotateRight","_splay","this$1","splay","gp","ggp","minNode","maxNode","insert","comp","cmp","contains","comparator","remove","removeNode","erase","sMax","returnValue","successor","predecessor","current","range","low","high","Q","load","presort","isEmpty","createTree","computeFields","operation","inOut","otherInOut","isSubject","isVertical","prevInResult","inResult","SweepEvent","otherEvent","edgeType","resultInOut","isExteriorRing","signedArea","p0","compareEvents","e1","e2","isBelow","specialCases","divideSegment","se","warn","contourId","crossProduct","dotProduct","possibleIntersection","se1","se2","inter","a1","a2","b1","b2","noEndpointTouch","va","vb","toPoint","kross","sqrKross","sqrLenA","sa","sb","smin","smax","intersection","nintersections","events","leftCoincide","rightCoincide","compareSegments","le1","le2","isAbove","nextPos","resultEvents","processed","origIndex","newPos","connectEdges","sortedEvents","sorted","orderEvents","contour","ringId","initial","clone","tinyqueue","TinyQueue","default_1","defaultCompare","_down","_up","top","peek","halfLength","best","default","processPolygon","contourOrHole","s1","s2","EMPTY","boolean","subject","clipping","trivial","trivialOperation","sbbox","cbbox","eventQueue","polygonSet","ii","jj","fillQueue","compareBBoxes","sweepLine","rightbound","prevEvent","prevprev","subdivide","operations","UNION","DIFFERENCE","INTERSECTION","XOR","diff","xor","factory","randomColor","seed","colorDictionary","defineColor","colorRanges","stringToInteger","H","totalColors","colors","hsv","format","HSVtoHSL","hsl","hslColor","alpha","HSVtoRGB","rgbColor","rgb","componentToHex","HSVtoHex","setFormat","pickHue","pickSaturation","pickBrightness","hue","randomWithin","hueRange","colorHue","getColorInfo","HexToHSB","getRealHueRange","colorInput","getHueRange","luminosity","saturationRange","getSaturationRange","sMin","bMin","lowerBounds","v2","getMinimumBrightness","bMax","colorName","rnd","brightnessRange","h","h_i","red","green","blue","cMax","delta","saturation","stripBOM","substring","builder","defaults","escapeCDATA","requiresCDATA","wrapCDATA","hasProp","Builder","opts","ref","buildObject","rootObj","attrkey","charkey","render","rootElement","rootName","_this","attr","child","cdata","txt","att","ele","up","xmldec","doctype","headless","allowSurrogateChars","renderOpts","explicitCharkey","normalize","normalizeTags","explicitArray","ignoreAttrs","mergeAttrs","explicitRoot","validator","xmlns","explicitChildren","childkey","charsAsChildren","includeWhiteChars","strict","attrNameProcessors","attrValueProcessors","tagNameProcessors","valueProcessors","emptyTag","preserveChildrenOrder","chunkSize","bom","processName","processors","sax","me","thing","processedName","Parser","superClass","parseString","assignOrPush","processAsync","xmlnskey","unshift","__super__","extend","chunk","saxParser","error1","errThrown","newValue","ontext","stack","parser","onerror","resume","onend","ended","resultObject","EXPLICIT_CHARKEY","onopentag","processedKey","uri","local","onclosetag","emptyStr","nodeName","objClone","old","xpath","text","charChild","oncdata","prefixMatch","firstCharLowerCase","stripPrefix","parseNumbers","parseBooleans","ValidationError","message","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","buffers","clearBuffers","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","noscript","BEGIN","ENTITIES","attribList","ns","rootNS","trackPosition","line","column","EVENTS","OPEN_WAKA","startTagPosition","not","whitespace","strictFail","textNode","TEXT","starti","TEXT_ENTITY","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","toUpperCase","emitNode","CDATA","COMMENT","comment","DOCTYPE","quote","SGML_DECL_QUOTED","DOCTYPE_DTD","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","body","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","attribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","returnState","parseEntity","entity","maxAllowed","maxActual","closeText","checkBufferLength","Stream","ex","streamWraps","ev","_parser","readable","_decoder","SD","letter","XML_NAMESPACE","XMLNS_NAMESPACE","xml","charClass","charclass","stringFromCharCode","STATE","COMMENT_STARTING","nodeType","qname","qualName","prefix","qn","selfClosing","nv","isSelfClosing","closeTo","entityLC","numStr","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","pipe","dest","ondata","pause","ondrain","_isStdio","onclose","didOnEnd","destroy","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","copyProps","SafeBuffer","millisecond","second","minute","hour","day","ms","Every","reg","parse","do","interval","clearInterval","camelCase","capitalize","isPlainObject","kebabCase","snakeCase","titleCase","words","sources","word","XMLAttribute","attName","attValue","writer","XMLNode","XMLCData","XMLComment","XMLDTDAttList","elementName","attributeName","attributeType","defaultValueType","defaultValue","eleName","dtdAttType","dtdAttDefault","dtdAttList","XMLDTDElement","dtdElementValue","dtdElement","XMLDTDEntity","pe","pubID","sysID","dtdPubID","dtdSysID","nData","dtdNData","dtdEntityValue","dtdEntity","XMLDTDNotation","dtdNotation","XMLDeclaration","xmlVersion","xmlEncoding","xmlStandalone","declaration","XMLDocType","ref1","documentObject","children","attList","pEntity","notation","docType","ent","pent","root","XMLStringWriter","XMLStringifier","XMLDocument","isDocument","writerOptions","XMLElement","XMLProcessingInstruction","XMLRaw","XMLText","XMLDocumentCB","onData","onEnd","onDataCallback","onEndCallback","currentNode","currentLevel","openTags","documentStarted","documentCompleted","openCurrent","skipNullAttributes","instruction","insTarget","insValue","processingInstruction","rootNodeName","closeNode","openNode","isOpen","isClosed","nod","dat","com","ins","dec","dtd","isRoot","rootObject","clonedSelf","clonedChild","removeAttribute","childNode","lastChild","len1","ignoreDecorators","convertAttKey","separateArrayItems","convertTextKey","convertCDataKey","convertCommentKey","convertRawKey","convertPIKey","insertBefore","removed","insertAfter","commentBefore","commentAfter","instructionBefore","instructionAfter","doc","ref2","importDocument","clonedRoot","importXMLBuilder","XMLWriterBase","XMLStreamWriter","stream","isLastRootNode","level","endline","allowEmpty","pretty","newline","assertLegalChar","noDoubleEncoding","textCase","applyCase","eleText","elEscape","attEscape","chars","chr","ampregex","ref3","ref4","indent","stringWriter","streamWriter","SEC_TO_RAD","HALF_PI","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","ft","to_meter","ignoredChar","testkey","lkey","defData","paramName","paramVal","paramOutname","paramObj","params","proj","datum","rf","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","lonc","longc","x_0","y_0","k_0","k0","r_a","R_A","zone","south","utmSouth","towgs84","datum_params","unit","from_greenwich","pm","nadgrids","datumCode","axis","legalAxis","latin","keyword","endThings","digets","place","currentObject","mapit","newObj","sExpr","shift","convert","d2r","wkt","lisp","projName","PROJECTION","AXIS","axisOrder","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","sphere","ellps","TOWGS84","outName","inName","rename","cleanWKT","defs","EPSG","ESRI","IAU2000","readCharicter","char","neutral","quoted","afterquote","afterItem","newObjects","WGS84","GOOGLE","codeWords","codes","destination","property","eccent","sinphi","cosphi","con","phi","tan","ts","dphi","eccnth","atan","identity","pt","projs","es","cos","msfnz","forward","lon","lat","adjust_lon","tsfnz","inverse","phi2z","projStore","ellipseName","ellipse","datumName","Projection","srsCode","json","testObj","testDef","testWKT","auth","checkMercator","maybeProjStr","checkProjStr","testProj","parseCode","ourProj","projections","datumDef","sphere_","ecc","ep2","datumObj","datum_type","geodeticToGeocentric","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","geocentricToGeodetic","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","X","Y","Z","atan2","checkParams","crs","denorm","xin","yin","zin","checkCoord","transform","wgs84","checkSanity","checkNotWGS","adjust_axis","compareDatums","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricToWgs84","x_tmp","y_tmp","z_tmp","geocentricFromWgs84","datum_transform","transformer","transformedArray","checkProj","oProj","fromProj","toProj","single","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","I","mgrs","UTMtoLL","decode","bottom","ll","accuracy","utm","row","colOrigin","rowOrigin","colInt","rowInt","rollover","easting","northing","setParm","seasting","snorthing","zoneNumber","zoneLetter","get100kSetForZone","encode","eccPrimeSquared","N","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","degToRad","LongRad","LetterDesignator","UTMEasting","UTMNorthing","LLtoUTM","deg","radToDeg","N1","T1","C1","R1","LongOrigin","mu","phi1Rad","topRight","mgrsString","testChar","hunK","east100k","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","curRow","northingValue","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","Point","fromMGRS","mgrsStr","toMGRS","C04","C06","C08","en","sphi","cphi","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","al","als","cs","tq","ml","acos","pj_inv_mlfn","tan_phi","ds","temp","asin","pp","cos_2B","h1","h2","arg_r","arg_i","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","cosh_arg_i","hr","hi1","hr1","cgb","cbg","utg","gtu","np","Qn","gatg","Zb","clens","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","log1py","asinhy","clens_cmplx","adjust_zone","etmerc","dependsOn","esinp","rc","phic0","ratexp","srat","gauss","sinc0","cosc0","R2","title","sinc","cosc","cosl","rho","coslat0","sinlat0","cons","ms1","X0","ssfn_","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","ce","Chi","phit","eccen","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","b0","k1","k2","k3","Sa1","Sa2","rotI","rotB","lambda","phy","prevPhy","iteration","no_off","no_rot","bl","fl","gl","t0","dl","t1","t2","hl","jl","pl","dlon12","dlon10","gamma0","uc","us","vs","ql","sl","tl","vl","ul","POSITIVE_INFINITY","qp","sp","tp","vp","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","f0","rh1","theta","s45","s90","fi0","alfa","uq","n0","s0","ro0","ad","gfi","deltav","eps","ro","czech","fi1","e0","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","asq","cl","dd","phi1","imlfn","nl1","rl1","tl1","dsq","adjust_lat","S_POLE","N_POLE","EQUIT","OBLIQ","qsfnz","mmf","apa","APA","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","sinb","cosb","cCe","sCe","ab","beta","cosz","sinz","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","qs","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","iqsfnz","dlat","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","delta_x","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","C_y","C_x","delta_theta","ml1","ml2","sinth","costh","gsq","msq","xx","yy","xys","c1","c3","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","GH","Hs","kp","cos_c","s3","s4","cosAz","Ee","sinpsi","qsc_fwd_equat_face_theta","qsc_shift_lon_origin","slon","face","one_minus_f","one_minus_f_squared","xy","sinlon","nu","cosmu","tannu","tantheta","invert_sign","xa","lp","COEFS_X","COEFS_Y","FXC","FYC","poly3_val","coefs","NODES","f_df","max_err","iters","upd","newton_rapshon","poly3_der","azi","tilt","pn1","rp","pfact","omega","gamma","cg","sg","cw","sw","yt","ba","bm","bq","proj4","Proj","tmerc","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","poly","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","tpers","Proj4Defs","asqr","bsqr","createEllipsoid","getProp","props","prop","exists","parseSequence","getColor","toRadians","angleInDegrees","toDegrees","angleInRadians","lon1","dByR","origin","distanceInMeters","radius","lambda1","DeltaPhi","phi2","DeltaPsi","calculateRhumbDestination","direction","zTranslation","mutate","pointCoords","newCoords","PROJECTION_AUTO_DETECT","CONVERT_SURFACES","CONVERT_PARCELS","CONVERT_PIPE_NETWORKS","converters","xmlObj","projection","originalPoints","originalParcels","$","pc","opc","CoordGeom","endCoord","origCoords","Line","oc","Start","pntRef","End","parameters","landxmlClass","class","landxmlState","landxmlParcelType","parcelType","landxmlType","surfacesContainerNodes","sc","attrs","baseProps","surfaceNodes","featureProps","description","colorOpts","surfaceFeatures","surface","boundaryNodes","boundary","seq","convertBoundaries","pointNodes","faceNodes","pointId","faces","pointIds","convertFaces","merged","pipeNetworksNodes","pn","pipeNetworkNodes","structs","localStructs","pipeNetwork","structNodes","centerNode","rectStructNode","circStructNode","inletStructNode","outletStructNode","connectionNode","structType","landxmlStruct","landxmlElevRim","elevRim","landxmlElevSump","elevSump","landxmlDiameter","diameter","landxmlThickness","thickness","landxmlLength","landxmlWidth","width","center","centerCoords","northEast","northWest","southWest","southEast","squareAround","numberOfSegments","flatCoordinates","circleToPolygon","convertStructs","pipes","pipeNodes","circPipeNode","stroke","refStart","refEnd","convertPipes","Converter","defaultOptions","enabledConverters","proj4Defs","featureMapper","parserOptions","configureProj4","convertToGeoJSON","getLandXMLProjection","newFeatures","additionalProj4Defs","manualProjection","findUTMProjection","utmProjection","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","__esModule","definition","globalThis","nmd","paths"],"mappings":"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AAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,IACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,IACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,E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","file":"landxml.native.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n return meta_1.geomReduce(geojson, function (value, geom) {\n return value + calculateArea(geom);\n }, 0);\n}\nexports.default = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n var total = 0;\n var i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * @param {Array<Array<number>>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n }\n else if (i === coordsLength - 1) {\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n }\n else {\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n }\n total = total * RADIUS * RADIUS / 2;\n }\n return total;\n}\nfunction rad(num) {\n return num * Math.PI / 180;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n switch (geojson.type) {\n case \"Feature\":\n return cloneFeature(geojson);\n case \"FeatureCollection\":\n return cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = { type: \"Feature\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) {\n return cloned;\n }\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) {\n // handle null\n cloned[key] = null;\n }\n else if (Array.isArray(value)) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n }\n else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n }\n else {\n cloned[key] = value;\n }\n });\n return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = { type: \"FeatureCollection\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = { type: geometry.type };\n if (geometry.bbox) {\n geom.bbox = geometry.bbox;\n }\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map(function (g) {\n return cloneGeometry(g);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n var cloned = coords;\n if (typeof cloned[0] !== \"object\") {\n return cloned.slice();\n }\n return cloned.map(function (coord) {\n return deepSlice(coord);\n });\n}\nexports.default = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n centimeters: exports.earthRadius * 100,\n centimetres: exports.earthRadius * 100,\n degrees: exports.earthRadius / 111325,\n feet: exports.earthRadius * 3.28084,\n inches: exports.earthRadius * 39.370,\n kilometers: exports.earthRadius / 1000,\n kilometres: exports.earthRadius / 1000,\n meters: exports.earthRadius,\n metres: exports.earthRadius,\n miles: exports.earthRadius / 1609.344,\n millimeters: exports.earthRadius * 1000,\n millimetres: exports.earthRadius * 1000,\n nauticalmiles: exports.earthRadius / 1852,\n radians: 1,\n yards: exports.earthRadius / 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.370,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / exports.earthRadius,\n yards: 1 / 1.0936,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, options) {\n if (options === void 0) { options = {}; }\n switch (type) {\n case \"Point\": return point(coordinates).geometry;\n case \"LineString\": return lineString(coordinates).geometry;\n case \"Polygon\": return polygon(coordinates).geometry;\n case \"MultiPoint\": return multiPoint(coordinates).geometry;\n case \"MultiLineString\": return multiLineString(coordinates).geometry;\n case \"MultiPolygon\": return multiPolygon(coordinates).geometry;\n default: throw new Error(type + \" is invalid\");\n }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = exports.areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = exports.areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexports.validateId = validateId;\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nexports.radians2degrees = radians2degrees;\nfunction degrees2radians() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nexports.degrees2radians = degrees2radians;\nfunction distanceToDegrees() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nexports.distanceToDegrees = distanceToDegrees;\nfunction distanceToRadians() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nexports.distanceToRadians = distanceToRadians;\nfunction radiansToDistance() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nexports.radiansToDistance = radiansToDistance;\nfunction bearingToAngle() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nexports.bearingToAngle = bearingToAngle;\nfunction convertDistance() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\nexports.convertDistance = convertDistance;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return helpers.point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return helpers.point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return helpers.point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar martinez = require(\"martinez-polygon-clipping\");\r\nvar invariant_1 = require(\"@turf/invariant\");\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\r\n *\r\n * @name union\r\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\r\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate Properties to output Feature\r\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-82.574787, 35.594087],\r\n * [-82.574787, 35.615581],\r\n * [-82.545261, 35.615581],\r\n * [-82.545261, 35.594087],\r\n * [-82.574787, 35.594087]\r\n * ]], {\"fill\": \"#0f0\"});\r\n * var poly2 = turf.polygon([[\r\n * [-82.560024, 35.585153],\r\n * [-82.560024, 35.602602],\r\n * [-82.52964, 35.602602],\r\n * [-82.52964, 35.585153],\r\n * [-82.560024, 35.585153]\r\n * ]], {\"fill\": \"#00f\"});\r\n *\r\n * var union = turf.union(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, union];\r\n */\r\nfunction union(polygon1, polygon2, options) {\r\n if (options === void 0) { options = {}; }\r\n var coords1 = invariant_1.getGeom(polygon1).coordinates;\r\n var coords2 = invariant_1.getGeom(polygon2).coordinates;\r\n var unioned = martinez.union(coords1, coords2);\r\n if (unioned.length === 0)\r\n return null;\r\n if (unioned.length === 1)\r\n return helpers_1.polygon(unioned[0], options.properties);\r\n else\r\n return helpers_1.multiPolygon(unioned, options.properties);\r\n}\r\nexports.default = union;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\r\n *\r\n * @name getCoord\r\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\r\n * @returns {Array<number>} coordinates\r\n * @example\r\n * var pt = turf.point([10, 10]);\r\n *\r\n * var coord = turf.getCoord(pt);\r\n * //= [10, 10]\r\n */\r\nfunction getCoord(coord) {\r\n if (!coord) {\r\n throw new Error(\"coord is required\");\r\n }\r\n if (!Array.isArray(coord)) {\r\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\r\n return coord.geometry.coordinates;\r\n }\r\n if (coord.type === \"Point\") {\r\n return coord.coordinates;\r\n }\r\n }\r\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\r\n return coord;\r\n }\r\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\r\n}\r\nexports.getCoord = getCoord;\r\n/**\r\n * Unwrap coordinates from a Feature, Geometry Object or an Array\r\n *\r\n * @name getCoords\r\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\r\n * @returns {Array<any>} coordinates\r\n * @example\r\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\r\n *\r\n * var coords = turf.getCoords(poly);\r\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\r\n */\r\nfunction getCoords(coords) {\r\n if (Array.isArray(coords)) {\r\n return coords;\r\n }\r\n // Feature\r\n if (coords.type === \"Feature\") {\r\n if (coords.geometry !== null) {\r\n return coords.geometry.coordinates;\r\n }\r\n }\r\n else {\r\n // Geometry\r\n if (coords.coordinates) {\r\n return coords.coordinates;\r\n }\r\n }\r\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\r\n}\r\nexports.getCoords = getCoords;\r\n/**\r\n * Checks if coordinates contains a number\r\n *\r\n * @name containsNumber\r\n * @param {Array<any>} coordinates GeoJSON Coordinates\r\n * @returns {boolean} true if Array contains a number\r\n */\r\nfunction containsNumber(coordinates) {\r\n if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) {\r\n return true;\r\n }\r\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\r\n return containsNumber(coordinates[0]);\r\n }\r\n throw new Error(\"coordinates must only contain numbers\");\r\n}\r\nexports.containsNumber = containsNumber;\r\n/**\r\n * Enforce expectations about types of GeoJSON objects for Turf.\r\n *\r\n * @name geojsonType\r\n * @param {GeoJSON} value any GeoJSON object\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction geojsonType(value, type, name) {\r\n if (!type || !name) {\r\n throw new Error(\"type and name required\");\r\n }\r\n if (!value || value.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\r\n }\r\n}\r\nexports.geojsonType = geojsonType;\r\n/**\r\n * Enforce expectations about types of {@link Feature} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name featureOf\r\n * @param {Feature} feature a feature with an expected geometry type\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} error if value is not the expected type.\r\n */\r\nfunction featureOf(feature, type, name) {\r\n if (!feature) {\r\n throw new Error(\"No feature passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".featureOf() requires a name\");\r\n }\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n}\r\nexports.featureOf = featureOf;\r\n/**\r\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name collectionOf\r\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction collectionOf(featureCollection, type, name) {\r\n if (!featureCollection) {\r\n throw new Error(\"No featureCollection passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".collectionOf() requires a name\");\r\n }\r\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\r\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\r\n }\r\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\r\n var feature = _a[_i];\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n }\r\n}\r\nexports.collectionOf = collectionOf;\r\n/**\r\n * Get Geometry from Feature or Geometry Object\r\n *\r\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\r\n * @returns {Geometry|null} GeoJSON Geometry Object\r\n * @throws {Error} if geojson is not a Feature or Geometry Object\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getGeom(point)\r\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\r\n */\r\nfunction getGeom(geojson) {\r\n if (geojson.type === \"Feature\") {\r\n return geojson.geometry;\r\n }\r\n return geojson;\r\n}\r\nexports.getGeom = getGeom;\r\n/**\r\n * Get GeoJSON object's type, Geometry type is prioritize.\r\n *\r\n * @param {GeoJSON} geojson GeoJSON object\r\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\r\n * @returns {string} GeoJSON type\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getType(point)\r\n * //=\"Point\"\r\n */\r\nfunction getType(geojson, name) {\r\n if (geojson.type === \"FeatureCollection\") {\r\n return \"FeatureCollection\";\r\n }\r\n if (geojson.type === \"GeometryCollection\") {\r\n return \"GeometryCollection\";\r\n }\r\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\r\n return geojson.geometry.type;\r\n }\r\n return geojson.type;\r\n}\r\nexports.getType = getType;\r\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('Invalid typed array length')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return fromObject(value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if (isArrayBufferView(obj) || 'length' in obj) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (isArrayBufferView(string) || isArrayBuffer(string)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val, encoding)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check\n// but they should be treated as valid. See: https://github.com/feross/buffer/issues/166\nfunction isArrayBuffer (obj) {\n return obj instanceof ArrayBuffer ||\n (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&\n typeof obj.byteLength === 'number')\n}\n\n// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`\nfunction isArrayBufferView (obj) {\n return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)\n}\n\nfunction numberIsNaN (obj) {\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete require('./_global')[K];\n});\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\nvar $fails = require('./_fails');\n\nvar FORCED = $fails(function () {\n return '𠮷'.at(0) !== '𠮷';\n});\n\n$export($export.P + $export.F * FORCED, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.exec');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * martinez v0.4.3\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.martinez = {})));\n}(this, (function (exports) { 'use strict';\n\n function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\n var SplayTree = function SplayTree(compare, noDuplicates) {\n if ( compare === void 0 ) compare = DEFAULT_COMPARE;\n if ( noDuplicates === void 0 ) noDuplicates = false;\n\n this._compare = compare;\n this._root = null;\n this._size = 0;\n this._noDuplicates = !!noDuplicates;\n };\n\n var prototypeAccessors = { size: { configurable: true } };\n\n\n SplayTree.prototype.rotateLeft = function rotateLeft (x) {\n var y = x.right;\n if (y) {\n x.right = y.left;\n if (y.left) { y.left.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if (x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.left = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype.rotateRight = function rotateRight (x) {\n var y = x.left;\n if (y) {\n x.left = y.right;\n if (y.right) { y.right.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if(x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.right = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype._splay = function _splay (x) {\n var this$1 = this;\n\n while (x.parent) {\n var p = x.parent;\n if (!p.parent) {\n if (p.left === x) { this$1.rotateRight(p); }\n else { this$1.rotateLeft(p); }\n } else if (p.left === x && p.parent.left === p) {\n this$1.rotateRight(p.parent);\n this$1.rotateRight(p);\n } else if (p.right === x && p.parent.right === p) {\n this$1.rotateLeft(p.parent);\n this$1.rotateLeft(p);\n } else if (p.left === x && p.parent.right === p) {\n this$1.rotateRight(p);\n this$1.rotateLeft(p);\n } else {\n this$1.rotateLeft(p);\n this$1.rotateRight(p);\n }\n }\n };\n\n\n SplayTree.prototype.splay = function splay (x) {\n var this$1 = this;\n\n var p, gp, ggp, l, r;\n\n while (x.parent) {\n p = x.parent;\n gp = p.parent;\n\n if (gp && gp.parent) {\n ggp = gp.parent;\n if (ggp.left === gp) { ggp.left= x; }\n else { ggp.right = x; }\n x.parent = ggp;\n } else {\n x.parent = null;\n this$1._root = x;\n }\n\n l = x.left; r = x.right;\n\n if (x === p.left) { // left\n if (gp) {\n if (gp.left === p) {\n /* zig-zig */\n if (p.right) {\n gp.left = p.right;\n gp.left.parent = gp;\n } else { gp.left = null; }\n\n p.right = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (l) {\n gp.right = l;\n l.parent = gp;\n } else { gp.right = null; }\n\n x.left = gp;\n gp.parent = x;\n }\n }\n if (r) {\n p.left = r;\n r.parent = p;\n } else { p.left = null; }\n\n x.right= p;\n p.parent = x;\n } else { // right\n if (gp) {\n if (gp.right === p) {\n /* zig-zig */\n if (p.left) {\n gp.right = p.left;\n gp.right.parent = gp;\n } else { gp.right = null; }\n\n p.left = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (r) {\n gp.left = r;\n r.parent = gp;\n } else { gp.left = null; }\n\n x.right = gp;\n gp.parent = x;\n }\n }\n if (l) {\n p.right = l;\n l.parent = p;\n } else { p.right = null; }\n\n x.left = p;\n p.parent = x;\n }\n }\n };\n\n\n SplayTree.prototype.replace = function replace (u, v) {\n if (!u.parent) { this._root = v; }\n else if (u === u.parent.left) { u.parent.left = v; }\n else { u.parent.right = v; }\n if (v) { v.parent = u.parent; }\n };\n\n\n SplayTree.prototype.minNode = function minNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.left) { u = u.left; } }\n return u;\n };\n\n\n SplayTree.prototype.maxNode = function maxNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.right) { u = u.right; } }\n return u;\n };\n\n\n SplayTree.prototype.insert = function insert (key, data) {\n var z = this._root;\n var p = null;\n var comp = this._compare;\n var cmp;\n\n if (this._noDuplicates) {\n while (z) {\n p = z;\n cmp = comp(z.key, key);\n if (cmp === 0) { return; }\n else if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n } else {\n while (z) {\n p = z;\n if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n }\n\n z = { key: key, data: data, left: null, right: null, parent: p };\n\n if (!p) { this._root = z; }\n else if (comp(p.key, z.key) < 0) { p.right = z; }\n else { p.left= z; }\n\n this.splay(z);\n this._size++;\n return z;\n };\n\n\n SplayTree.prototype.find = function find (key) {\n var z = this._root;\n var comp = this._compare;\n while (z) {\n var cmp = comp(z.key, key);\n if (cmp < 0) { z = z.right; }\n else if (cmp > 0) { z = z.left; }\n else { return z; }\n }\n return null;\n };\n\n /**\n * Whether the tree contains a node with the given key\n * @param{Key} key\n * @return {boolean} true/false\n */\n SplayTree.prototype.contains = function contains (key) {\n var node = this._root;\n var comparator = this._compare;\n while (node){\n var cmp = comparator(key, node.key);\n if (cmp === 0) { return true; }\n else if (cmp < 0) { node = node.left; }\n else { node = node.right; }\n }\n\n return false;\n };\n\n\n SplayTree.prototype.remove = function remove (key) {\n var z = this.find(key);\n\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.removeNode = function removeNode (z) {\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.erase = function erase (key) {\n var z = this.find(key);\n if (!z) { return; }\n\n this.splay(z);\n\n var s = z.left;\n var t = z.right;\n\n var sMax = null;\n if (s) {\n s.parent = null;\n sMax = this.maxNode(s);\n this.splay(sMax);\n this._root = sMax;\n }\n if (t) {\n if (s) { sMax.right = t; }\n else { this._root = t; }\n t.parent = sMax;\n }\n\n this._size--;\n };\n\n /**\n * Removes and returns the node with smallest key\n * @return {?Node}\n */\n SplayTree.prototype.pop = function pop () {\n var node = this._root, returnValue = null;\n if (node) {\n while (node.left) { node = node.left; }\n returnValue = { key: node.key, data: node.data };\n this.remove(node.key);\n }\n return returnValue;\n };\n\n\n /* eslint-disable class-methods-use-this */\n\n /**\n * Successor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.next = function next (node) {\n var successor = node;\n if (successor) {\n if (successor.right) {\n successor = successor.right;\n while (successor && successor.left) { successor = successor.left; }\n } else {\n successor = node.parent;\n while (successor && successor.right === node) {\n node = successor; successor = successor.parent;\n }\n }\n }\n return successor;\n };\n\n\n /**\n * Predecessor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.prev = function prev (node) {\n var predecessor = node;\n if (predecessor) {\n if (predecessor.left) {\n predecessor = predecessor.left;\n while (predecessor && predecessor.right) { predecessor = predecessor.right; }\n } else {\n predecessor = node.parent;\n while (predecessor && predecessor.left === node) {\n node = predecessor;\n predecessor = predecessor.parent;\n }\n }\n }\n return predecessor;\n };\n /* eslint-enable class-methods-use-this */\n\n\n /**\n * @param{forEachCallback} callback\n * @return {SplayTree}\n */\n SplayTree.prototype.forEach = function forEach (callback) {\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n // Reach the left most Node of the current Node\n if (current) {\n // Place pointer to a tree node on the stack\n // before traversing the node's left subtree\n s.push(current);\n current = current.left;\n } else {\n // BackTrack from the empty subtree and visit the Node\n // at the top of the stack; however, if the stack is\n // empty you are done\n if (s.length > 0) {\n current = s.pop();\n callback(current, i++);\n\n // We have visited the node and its left\n // subtree. Now, it's right subtree's turn\n current = current.right;\n } else { done = true; }\n }\n }\n return this;\n };\n\n\n /**\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n * @param{Key} low\n * @param{Key} high\n * @param{Function} fn\n * @param{*?} ctx\n * @return {SplayTree}\n */\n SplayTree.prototype.range = function range (low, high, fn, ctx) {\n var this$1 = this;\n\n var Q = [];\n var compare = this._compare;\n var node = this._root, cmp;\n\n while (Q.length !== 0 || node) {\n if (node) {\n Q.push(node);\n node = node.left;\n } else {\n node = Q.pop();\n cmp = compare(node.key, high);\n if (cmp > 0) {\n break;\n } else if (compare(node.key, low) >= 0) {\n if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned\n }\n node = node.right;\n }\n }\n return this;\n };\n\n /**\n * Returns all keys in order\n * @return {Array<Key>}\n */\n SplayTree.prototype.keys = function keys () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.key);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns `data` fields of all nodes in order.\n * @return {Array<Value>}\n */\n SplayTree.prototype.values = function values () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.data);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns node at given index\n * @param{number} index\n * @return {?Node}\n */\n SplayTree.prototype.at = function at (index) {\n // removed after a consideration, more misleading than useful\n // index = index % this.size;\n // if (index < 0) index = this.size - index;\n\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n if (i === index) { return current; }\n i++;\n current = current.right;\n } else { done = true; }\n }\n }\n return null;\n };\n\n /**\n * Bulk-load items. Both array have to be same size\n * @param{Array<Key>} keys\n * @param{Array<Value>}[values]\n * @param{Boolean} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @return {AVLTree}\n */\n SplayTree.prototype.load = function load (keys, values, presort) {\n if ( keys === void 0 ) keys = [];\n if ( values === void 0 ) values = [];\n if ( presort === void 0 ) presort = false;\n\n if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }\n var size = keys.length;\n if (presort) { sort(keys, values, 0, size - 1, this._compare); }\n this._root = loadRecursive(null, keys, values, 0, size);\n this._size = size;\n return this;\n };\n\n\n SplayTree.prototype.min = function min () {\n var node = this.minNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n\n SplayTree.prototype.max = function max () {\n var node = this.maxNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };\n prototypeAccessors.size.get = function () { return this._size; };\n\n\n /**\n * Create a tree and load it with items\n * @param{Array<Key>} keys\n * @param{Array<Value>?} [values]\n\n * @param{Function?} [comparator]\n * @param{Boolean?} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @param{Boolean?} [noDuplicates=false] Allow duplicates\n * @return {SplayTree}\n */\n SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {\n return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n };\n\n Object.defineProperties( SplayTree.prototype, prototypeAccessors );\n\n\n function loadRecursive (parent, keys, values, start, end) {\n var size = end - start;\n if (size > 0) {\n var middle = start + Math.floor(size / 2);\n var key = keys[middle];\n var data = values[middle];\n var node = { key: key, data: data, parent: parent };\n node.left = loadRecursive(node, keys, values, start, middle);\n node.right = loadRecursive(node, keys, values, middle + 1, end);\n return node;\n }\n return null;\n }\n\n\n function sort(keys, values, left, right, compare) {\n if (left >= right) { return; }\n\n var pivot = keys[(left + right) >> 1];\n var i = left - 1;\n var j = right + 1;\n\n while (true) {\n do { i++; } while (compare(keys[i], pivot) < 0);\n do { j--; } while (compare(keys[j], pivot) > 0);\n if (i >= j) { break; }\n\n var tmp = keys[i];\n keys[i] = keys[j];\n keys[j] = tmp;\n\n tmp = values[i];\n values[i] = values[j];\n values[j] = tmp;\n }\n\n sort(keys, values, left, j, compare);\n sort(keys, values, j + 1, right, compare);\n }\n\n var NORMAL = 0;\n var NON_CONTRIBUTING = 1;\n var SAME_TRANSITION = 2;\n var DIFFERENT_TRANSITION = 3;\n\n var INTERSECTION = 0;\n var UNION = 1;\n var DIFFERENCE = 2;\n var XOR = 3;\n\n /**\n * @param {SweepEvent} event\n * @param {SweepEvent} prev\n * @param {Operation} operation\n */\n function computeFields (event, prev, operation) {\n // compute inOut and otherInOut fields\n if (prev === null) {\n event.inOut = false;\n event.otherInOut = true;\n\n // previous line segment in sweepline belongs to the same polygon\n } else {\n if (event.isSubject === prev.isSubject) {\n event.inOut = !prev.inOut;\n event.otherInOut = prev.otherInOut;\n\n // previous line segment in sweepline belongs to the clipping polygon\n } else {\n event.inOut = !prev.otherInOut;\n event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n }\n\n // compute prevInResult field\n if (prev) {\n event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n ? prev.prevInResult : prev;\n }\n }\n\n // check if the line segment belongs to the Boolean operation\n event.inResult = inResult(event, operation);\n }\n\n\n /* eslint-disable indent */\n function inResult(event, operation) {\n switch (event.type) {\n case NORMAL:\n switch (operation) {\n case INTERSECTION:\n return !event.otherInOut;\n case UNION:\n return event.otherInOut;\n case DIFFERENCE:\n // return (event.isSubject && !event.otherInOut) ||\n // (!event.isSubject && event.otherInOut);\n return (event.isSubject && event.otherInOut) ||\n (!event.isSubject && !event.otherInOut);\n case XOR:\n return true;\n }\n break;\n case SAME_TRANSITION:\n return operation === INTERSECTION || operation === UNION;\n case DIFFERENT_TRANSITION:\n return operation === DIFFERENCE;\n case NON_CONTRIBUTING:\n return false;\n }\n return false;\n }\n /* eslint-enable indent */\n\n var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {\n\n /**\n * Is left endpoint?\n * @type {Boolean}\n */\n this.left = left;\n\n /**\n * @type {Array.<Number>}\n */\n this.point = point;\n\n /**\n * Other edge reference\n * @type {SweepEvent}\n */\n this.otherEvent = otherEvent;\n\n /**\n * Belongs to source or clipping polygon\n * @type {Boolean}\n */\n this.isSubject = isSubject;\n\n /**\n * Edge contribution type\n * @type {Number}\n */\n this.type = edgeType || NORMAL;\n\n\n /**\n * In-out transition for the sweepline crossing polygon\n * @type {Boolean}\n */\n this.inOut = false;\n\n\n /**\n * @type {Boolean}\n */\n this.otherInOut = false;\n\n /**\n * Previous event in result?\n * @type {SweepEvent}\n */\n this.prevInResult = null;\n\n /**\n * Does event belong to result?\n * @type {Boolean}\n */\n this.inResult = false;\n\n\n // connection step\n\n /**\n * @type {Boolean}\n */\n this.resultInOut = false;\n\n this.isExteriorRing = true;\n };\n\n\n /**\n * @param{Array.<Number>}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isBelow = function isBelow (p) {\n var p0 = this.point, p1 = this.otherEvent.point;\n return this.left\n ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n // signedArea(this.point, this.otherEvent.point, p) > 0 :\n : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n //signedArea(this.otherEvent.point, this.point, p) > 0;\n };\n\n\n /**\n * @param{Array.<Number>}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isAbove = function isAbove (p) {\n return !this.isBelow(p);\n };\n\n\n /**\n * @return {Boolean}\n */\n SweepEvent.prototype.isVertical = function isVertical () {\n return this.point[0] === this.otherEvent.point[0];\n };\n\n\n SweepEvent.prototype.clone = function clone () {\n var copy = new SweepEvent(\n this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n copy.inResult = this.inResult;\n copy.prevInResult = this.prevInResult;\n copy.isExteriorRing = this.isExteriorRing;\n copy.inOut = this.inOut;\n copy.otherInOut = this.otherInOut;\n\n return copy;\n };\n\n function equals(p1, p2) {\n if (p1[0] === p2[0]) {\n if (p1[1] === p2[1]) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }\n\n // const EPSILON = 1e-9;\n // const abs = Math.abs;\n // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n // Precision problem.\n //\n // module.exports = function equals(p1, p2) {\n // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n // };\n\n /**\n * Signed area of the triangle (p0, p1, p2)\n * @param {Array.<Number>} p0\n * @param {Array.<Number>} p1\n * @param {Array.<Number>} p2\n * @return {Number}\n */\n function signedArea(p0, p1, p2) {\n return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n }\n\n /**\n * @param {SweepEvent} e1\n * @param {SweepEvent} e2\n * @return {Number}\n */\n function compareEvents(e1, e2) {\n var p1 = e1.point;\n var p2 = e2.point;\n\n // Different x-coordinate\n if (p1[0] > p2[0]) { return 1; }\n if (p1[0] < p2[0]) { return -1; }\n\n // Different points, but same x-coordinate\n // Event with lower y-coordinate is processed first\n if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }\n\n return specialCases(e1, e2, p1, p2);\n }\n\n\n /* eslint-disable no-unused-vars */\n function specialCases(e1, e2, p1, p2) {\n // Same coordinates, but one is a left endpoint and the other is\n // a right endpoint. The right endpoint is processed first\n if (e1.left !== e2.left)\n { return e1.left ? 1 : -1; }\n\n // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n // Same coordinates, both events\n // are left endpoints or right endpoints.\n // not collinear\n if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n // the event associate to the bottom segment is processed first\n return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n }\n\n return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n }\n /* eslint-enable no-unused-vars */\n\n /**\n * @param {SweepEvent} se\n * @param {Array.<Number>} p\n * @param {Queue} queue\n * @return {Queue}\n */\n function divideSegment(se, p, queue) {\n var r = new SweepEvent(p, false, se, se.isSubject);\n var l = new SweepEvent(p, true, se.otherEvent, se.isSubject);\n\n /* eslint-disable no-console */\n if (equals(se.point, se.otherEvent.point)) {\n\n console.warn('what is that, a collapsed segment?', se);\n }\n /* eslint-enable no-console */\n\n r.contourId = l.contourId = se.contourId;\n\n // avoid a rounding error. The left event would be processed after the right event\n if (compareEvents(l, se.otherEvent) > 0) {\n se.otherEvent.left = true;\n l.left = false;\n }\n\n // avoid a rounding error. The left event would be processed after the right event\n // if (compareEvents(se, r) > 0) {}\n\n se.otherEvent.otherEvent = l;\n se.otherEvent = r;\n\n queue.push(l);\n queue.push(r);\n\n return queue;\n }\n\n //const EPS = 1e-9;\n\n /**\n * Finds the magnitude of the cross product of two vectors (if we pretend\n * they're in three dimensions)\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The magnitude of the cross product\n */\n function crossProduct(a, b) {\n return (a[0] * b[1]) - (a[1] * b[0]);\n }\n\n /**\n * Finds the dot product of two vectors.\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The dot product\n */\n function dotProduct(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]);\n }\n\n /**\n * Finds the intersection (if any) between two line segments a and b, given the\n * line segments' end points a1, a2 and b1, b2.\n *\n * This algorithm is based on Schneider and Eberly.\n * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n * Page 244.\n *\n * @param {Array.<Number>} a1 point of first line\n * @param {Array.<Number>} a2 point of first line\n * @param {Array.<Number>} b1 point of second line\n * @param {Array.<Number>} b2 point of second line\n * @param {Boolean=} noEndpointTouch whether to skip single touchpoints\n * (meaning connected segments) as\n * intersections\n * @returns {Array.<Array.<Number>>|Null} If the lines intersect, the point of\n * intersection. If they overlap, the two end points of the overlapping segment.\n * Otherwise, null.\n */\n function intersection (a1, a2, b1, b2, noEndpointTouch) {\n // The algorithm expects our lines in the form P + sd, where P is a point,\n // s is on the interval [0, 1], and d is a vector.\n // We are passed two points. P can be the first point of each pair. The\n // vector, then, could be thought of as the distance (in x and y components)\n // from the first point to the second point.\n // So first, let's make our vectors:\n var va = [a2[0] - a1[0], a2[1] - a1[1]];\n var vb = [b2[0] - b1[0], b2[1] - b1[1]];\n // We also define a function to convert back to regular point form:\n\n /* eslint-disable arrow-body-style */\n\n function toPoint(p, s, d) {\n return [\n p[0] + s * d[0],\n p[1] + s * d[1]\n ];\n }\n\n /* eslint-enable arrow-body-style */\n\n // The rest is pretty much a straight port of the algorithm.\n var e = [b1[0] - a1[0], b1[1] - a1[1]];\n var kross = crossProduct(va, vb);\n var sqrKross = kross * kross;\n var sqrLenA = dotProduct(va, va);\n //const sqrLenB = dotProduct(vb, vb);\n\n // Check for line intersection. This works because of the properties of the\n // cross product -- specifically, two vectors are parallel if and only if the\n // cross product is the 0 vector. The full calculation involves relative error\n // to account for possible very small line segments. See Schneider & Eberly\n // for details.\n if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n // If they're not parallel, then (because these are line segments) they\n // still might not actually intersect. This code checks that the\n // intersection point of the lines is actually on both line segments.\n var s = crossProduct(e, vb) / kross;\n if (s < 0 || s > 1) {\n // not on line segment a\n return null;\n }\n var t = crossProduct(e, va) / kross;\n if (t < 0 || t > 1) {\n // not on line segment b\n return null;\n }\n if (s === 0 || s === 1) {\n // on an endpoint of line segment a\n return noEndpointTouch ? null : [toPoint(a1, s, va)];\n }\n if (t === 0 || t === 1) {\n // on an endpoint of line segment b\n return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n }\n return [toPoint(a1, s, va)];\n }\n\n // If we've reached this point, then the lines are either parallel or the\n // same, but the segments could overlap partially or fully, or not at all.\n // So we need to find the overlap, if any. To do that, we can use e, which is\n // the (vector) difference between the two initial points. If this is parallel\n // with the line itself, then the two lines are the same line, and there will\n // be overlap.\n //const sqrLenE = dotProduct(e, e);\n kross = crossProduct(e, va);\n sqrKross = kross * kross;\n\n if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n // Lines are just parallel, not the same. No overlap.\n return null;\n }\n\n var sa = dotProduct(va, e) / sqrLenA;\n var sb = sa + dotProduct(va, vb) / sqrLenA;\n var smin = Math.min(sa, sb);\n var smax = Math.max(sa, sb);\n\n // this is, essentially, the FindIntersection acting on floats from\n // Schneider & Eberly, just inlined into this function.\n if (smin <= 1 && smax >= 0) {\n\n // overlap on an end point\n if (smin === 1) {\n return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n }\n\n if (smax === 0) {\n return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n }\n\n if (noEndpointTouch && smin === 0 && smax === 1) { return null; }\n\n // There's overlap on a segment -- two points of intersection. Return both.\n return [\n toPoint(a1, smin > 0 ? smin : 0, va),\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n }\n\n return null;\n }\n\n /**\n * @param {SweepEvent} se1\n * @param {SweepEvent} se2\n * @param {Queue} queue\n * @return {Number}\n */\n function possibleIntersection (se1, se2, queue) {\n // that disallows self-intersecting polygons,\n // did cost us half a day, so I'll leave it\n // out of respect\n // if (se1.isSubject === se2.isSubject) return;\n var inter = intersection(\n se1.point, se1.otherEvent.point,\n se2.point, se2.otherEvent.point\n );\n\n var nintersections = inter ? inter.length : 0;\n if (nintersections === 0) { return 0; } // no intersection\n\n // the line segments intersect at an endpoint of both line segments\n if ((nintersections === 1) &&\n (equals(se1.point, se2.point) ||\n equals(se1.otherEvent.point, se2.otherEvent.point))) {\n return 0;\n }\n\n if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n // if(se1.contourId === se2.contourId){\n // console.warn('Edges of the same polygon overlap',\n // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n // }\n //throw new Error('Edges of the same polygon overlap');\n return 0;\n }\n\n // The line segments associated to se1 and se2 intersect\n if (nintersections === 1) {\n\n // if the intersection point is not an endpoint of se1\n if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n divideSegment(se1, inter[0], queue);\n }\n\n // if the intersection point is not an endpoint of se2\n if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n divideSegment(se2, inter[0], queue);\n }\n return 1;\n }\n\n // The line segments associated to se1 and se2 overlap\n var events = [];\n var leftCoincide = false;\n var rightCoincide = false;\n\n if (equals(se1.point, se2.point)) {\n leftCoincide = true; // linked\n } else if (compareEvents(se1, se2) === 1) {\n events.push(se2, se1);\n } else {\n events.push(se1, se2);\n }\n\n if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n rightCoincide = true;\n } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n events.push(se2.otherEvent, se1.otherEvent);\n } else {\n events.push(se1.otherEvent, se2.otherEvent);\n }\n\n if ((leftCoincide && rightCoincide) || leftCoincide) {\n // both line segments are equal or share the left endpoint\n se2.type = NON_CONTRIBUTING;\n se1.type = (se2.inOut === se1.inOut)\n ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n if (leftCoincide && !rightCoincide) {\n // honestly no idea, but changing events selection from [2, 1]\n // to [0, 1] fixes the overlapping self-intersecting polygons issue\n divideSegment(events[1].otherEvent, events[0].point, queue);\n }\n return 2;\n }\n\n // the line segments share the right endpoint\n if (rightCoincide) {\n divideSegment(events[0], events[1].point, queue);\n return 3;\n }\n\n // no line segment includes totally the other one\n if (events[0] !== events[3].otherEvent) {\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[1], events[2].point, queue);\n return 3;\n }\n\n // one line segment includes the other one\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[3].otherEvent, events[2].point, queue);\n\n return 3;\n }\n\n /**\n * @param {SweepEvent} le1\n * @param {SweepEvent} le2\n * @return {Number}\n */\n function compareSegments(le1, le2) {\n if (le1 === le2) { return 0; }\n\n // Segments are not collinear\n if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n // If they share their left endpoint use the right endpoint to sort\n if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }\n\n // Different left endpoint: use the left endpoint to sort\n if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }\n\n // has the line segment associated to e1 been inserted\n // into S after the line segment associated to e2 ?\n if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }\n\n // The line segment associated to e2 has been inserted\n // into S after the line segment associated to e1\n return le1.isBelow(le2.point) ? -1 : 1;\n }\n\n if (le1.isSubject === le2.isSubject) { // same polygon\n var p1 = le1.point, p2 = le2.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }\n else { return le1.contourId > le2.contourId ? 1 : -1; }\n }\n } else { // Segments are collinear, but belong to separate polygons\n return le1.isSubject ? -1 : 1;\n }\n\n return compareEvents(le1, le2) === 1 ? 1 : -1;\n }\n\n function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n var sweepLine = new SplayTree(compareSegments);\n var sortedEvents = [];\n\n var rightbound = Math.min(sbbox[2], cbbox[2]);\n\n var prev, next, begin;\n\n while (eventQueue.length !== 0) {\n var event = eventQueue.pop();\n sortedEvents.push(event);\n\n // optimization by bboxes for intersection and difference goes here\n if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n (operation === DIFFERENCE && event.point[0] > sbbox[2])) {\n break;\n }\n\n if (event.left) {\n next = prev = sweepLine.insert(event);\n begin = sweepLine.minNode();\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n\n var prevEvent = prev ? prev.key : null;\n var prevprevEvent = (void 0);\n computeFields(event, prevEvent, operation);\n if (next) {\n if (possibleIntersection(event, next.key, eventQueue) === 2) {\n computeFields(event, prevEvent, operation);\n computeFields(event, next.key, operation);\n }\n }\n\n if (prev) {\n if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n var prevprev = prev;\n if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }\n else { prevprev = null; }\n\n prevprevEvent = prevprev ? prevprev.key : null;\n computeFields(prevEvent, prevprevEvent, operation);\n computeFields(event, prevEvent, operation);\n }\n }\n } else {\n event = event.otherEvent;\n next = prev = sweepLine.find(event);\n\n if (prev && next) {\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n sweepLine.remove(event);\n\n if (next && prev) {\n possibleIntersection(prev.key, next.key, eventQueue);\n }\n }\n }\n }\n return sortedEvents;\n }\n\n /**\n * @param {Array.<SweepEvent>} sortedEvents\n * @return {Array.<SweepEvent>}\n */\n function orderEvents(sortedEvents) {\n var event, i, len, tmp;\n var resultEvents = [];\n for (i = 0, len = sortedEvents.length; i < len; i++) {\n event = sortedEvents[i];\n if ((event.left && event.inResult) ||\n (!event.left && event.otherEvent.inResult)) {\n resultEvents.push(event);\n }\n }\n // Due to overlapping edges the resultEvents array can be not wholly sorted\n var sorted = false;\n while (!sorted) {\n sorted = true;\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if ((i + 1) < len &&\n compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n tmp = resultEvents[i];\n resultEvents[i] = resultEvents[i + 1];\n resultEvents[i + 1] = tmp;\n sorted = false;\n }\n }\n }\n\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n event.pos = i;\n }\n\n // imagine, the right event is found in the beginning of the queue,\n // when his left counterpart is not marked yet\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n if (!event.left) {\n tmp = event.pos;\n event.pos = event.otherEvent.pos;\n event.otherEvent.pos = tmp;\n }\n }\n\n return resultEvents;\n }\n\n\n /**\n * @param {Number} pos\n * @param {Array.<SweepEvent>} resultEvents\n * @param {Object>} processed\n * @return {Number}\n */\n function nextPos(pos, resultEvents, processed, origIndex) {\n var newPos = pos + 1;\n var length = resultEvents.length;\n if (newPos > length - 1) { return pos - 1; }\n var p = resultEvents[pos].point;\n var p1 = resultEvents[newPos].point;\n\n\n // while in range and not the current one by value\n while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n if (!processed[newPos]) {\n return newPos;\n } else {\n newPos++;\n }\n p1 = resultEvents[newPos].point;\n }\n\n newPos = pos - 1;\n\n while (processed[newPos] && newPos >= origIndex) {\n newPos--;\n }\n return newPos;\n }\n\n\n /**\n * @param {Array.<SweepEvent>} sortedEvents\n * @return {Array.<*>} polygons\n */\n function connectEdges(sortedEvents, operation) {\n var i, len;\n var resultEvents = orderEvents(sortedEvents);\n\n // \"false\"-filled array\n var processed = {};\n var result = [];\n var event;\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if (processed[i]) { continue; }\n var contour = [[]];\n\n if (!resultEvents[i].isExteriorRing) {\n if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n result.push(contour);\n } else if (result.length === 0) {\n result.push([[contour]]);\n } else {\n result[result.length - 1].push(contour[0]);\n }\n } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n result[result.length - 1].push(contour[0]);\n } else {\n result.push(contour);\n }\n\n var ringId = result.length - 1;\n var pos = i;\n\n var initial = resultEvents[i].point;\n contour[0].push(initial);\n\n while (pos >= i) {\n event = resultEvents[pos];\n processed[pos] = true;\n\n if (event.left) {\n event.resultInOut = false;\n event.contourId = ringId;\n } else {\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n pos = event.pos;\n processed[pos] = true;\n contour[0].push(resultEvents[pos].point);\n pos = nextPos(pos, resultEvents, processed, i);\n }\n\n pos = pos === -1 ? i : pos;\n\n event = resultEvents[pos];\n processed[pos] = processed[event.pos] = true;\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n // Handle if the result is a polygon (eg not multipoly)\n // Commented it again, let's see what do we mean by that\n // if (result.length === 1) result = result[0];\n return result;\n }\n\n var tinyqueue = TinyQueue;\n var default_1 = TinyQueue;\n\n function TinyQueue(data, compare) {\n var this$1 = this;\n\n if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }\n }\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n\n TinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) { return undefined; }\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) { break; }\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var this$1 = this;\n\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this$1.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) { break; }\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n };\n tinyqueue.default = default_1;\n\n var max = Math.max;\n var min = Math.min;\n\n var contourId = 0;\n\n\n function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n var i, len, s1, s2, e1, e2;\n for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n s1 = contourOrHole[i];\n s2 = contourOrHole[i + 1];\n e1 = new SweepEvent(s1, false, undefined, isSubject);\n e2 = new SweepEvent(s2, false, e1, isSubject);\n e1.otherEvent = e2;\n\n if (s1[0] === s2[0] && s1[1] === s2[1]) {\n continue; // skip collapsed edges, or it breaks\n }\n\n e1.contourId = e2.contourId = depth;\n if (!isExteriorRing) {\n e1.isExteriorRing = false;\n e2.isExteriorRing = false;\n }\n if (compareEvents(e1, e2) > 0) {\n e2.left = true;\n } else {\n e1.left = true;\n }\n\n var x = s1[0], y = s1[1];\n bbox[0] = min(bbox[0], x);\n bbox[1] = min(bbox[1], y);\n bbox[2] = max(bbox[2], x);\n bbox[3] = max(bbox[3], y);\n\n // Pushing it so the queue is sorted from left to right,\n // with object on the left having the highest priority.\n Q.push(e1);\n Q.push(e2);\n }\n }\n\n\n function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n var eventQueue = new tinyqueue(null, compareEvents);\n var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n for (i = 0, ii = subject.length; i < ii; i++) {\n polygonSet = subject[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n }\n }\n\n for (i = 0, ii = clipping.length; i < ii; i++) {\n polygonSet = clipping[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (operation === DIFFERENCE) { isExteriorRing = false; }\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n }\n }\n\n return eventQueue;\n }\n\n var EMPTY = [];\n\n\n function trivialOperation(subject, clipping, operation) {\n var result = null;\n if (subject.length * clipping.length === 0) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = (subject.length === 0) ? clipping : subject;\n }\n }\n return result;\n }\n\n\n function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n var result = null;\n if (sbbox[0] > cbbox[2] ||\n cbbox[0] > sbbox[2] ||\n sbbox[1] > cbbox[3] ||\n cbbox[1] > sbbox[3]) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = subject.concat(clipping);\n }\n }\n return result;\n }\n\n\n function boolean(subject, clipping, operation) {\n if (typeof subject[0][0][0] === 'number') {\n subject = [subject];\n }\n if (typeof clipping[0][0][0] === 'number') {\n clipping = [clipping];\n }\n var trivial = trivialOperation(subject, clipping, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n var sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n var cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n //console.time('fill queue');\n var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('fill queue');\n\n trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n //console.time('subdivide edges');\n var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('subdivide edges');\n\n //console.time('connect vertices');\n var result = connectEdges(sortedEvents, operation);\n //console.timeEnd('connect vertices');\n return result;\n }\n\n function union (subject, clipping) {\n return boolean(subject, clipping, UNION);\n }\n\n function diff (subject, clipping) {\n return boolean(subject, clipping, DIFFERENCE);\n }\n\n function xor (subject, clipping){\n return boolean(subject, clipping, XOR);\n }\n\n function intersection$1 (subject, clipping) {\n return boolean(subject, clipping, INTERSECTION);\n }\n\n /**\n * @enum {Number}\n */\n var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };\n\n exports.union = union;\n exports.diff = diff;\n exports.xor = xor;\n exports.intersection = intersection$1;\n exports.operations = operations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=martinez.umd.js.map\n","// randomColor by David Merfield under the CC0 license\n// https://github.com/davidmerfield/randomColor/\n\n;(function(root, factory) {\n\n // Support CommonJS\n if (typeof exports === 'object') {\n var randomColor = factory();\n\n // Support NodeJS & Component, which allow module.exports to be a function\n if (typeof module === 'object' && module && module.exports) {\n exports = module.exports = randomColor;\n }\n\n // Support CommonJS 1.1.1 spec\n exports.randomColor = randomColor;\n\n // Support AMD\n } else if (typeof define === 'function' && define.amd) {\n define([], factory);\n\n // Support vanilla script loading\n } else {\n root.randomColor = factory();\n }\n\n}(this, function() {\n\n // Seed to get repeatable colors\n var seed = null;\n\n // Shared color dictionary\n var colorDictionary = {};\n\n // Populate the color dictionary\n loadColorBounds();\n\n // check if a range is taken\n var colorRanges = [];\n\n var randomColor = function (options) {\n\n options = options || {};\n\n // Check if there is a seed and ensure it's an\n // integer. Otherwise, reset the seed value.\n if (options.seed !== undefined && options.seed !== null && options.seed === parseInt(options.seed, 10)) {\n seed = options.seed;\n\n // A string was passed as a seed\n } else if (typeof options.seed === 'string') {\n seed = stringToInteger(options.seed);\n\n // Something was passed as a seed but it wasn't an integer or string\n } else if (options.seed !== undefined && options.seed !== null) {\n throw new TypeError('The seed value must be an integer or string');\n\n // No seed, reset the value outside.\n } else {\n seed = null;\n }\n\n var H,S,B;\n\n // Check if we need to generate multiple colors\n if (options.count !== null && options.count !== undefined) {\n\n var totalColors = options.count,\n colors = [];\n // Value false at index i means the range i is not taken yet.\n for (var i = 0; i < options.count; i++) {\n colorRanges.push(false)\n }\n options.count = null;\n\n while (totalColors > colors.length) {\n\n var color = randomColor(options);\n\n if (seed !== null) {\n options.seed = seed;\n }\n\n colors.push(color);\n }\n\n options.count = totalColors;\n\n return colors;\n }\n\n // First we pick a hue (H)\n H = pickHue(options);\n\n // Then use H to determine saturation (S)\n S = pickSaturation(H, options);\n\n // Then use S and H to determine brightness (B).\n B = pickBrightness(H, S, options);\n\n // Then we return the HSB color in the desired format\n return setFormat([H,S,B], options);\n };\n\n function pickHue(options) {\n if (colorRanges.length > 0) {\n var hueRange = getRealHueRange(options.hue)\n\n var hue = randomWithin(hueRange)\n\n //Each of colorRanges.length ranges has a length equal approximatelly one step\n var step = (hueRange[1] - hueRange[0]) / colorRanges.length\n\n var j = parseInt((hue - hueRange[0]) / step)\n\n //Check if the range j is taken\n if (colorRanges[j] === true) {\n j = (j + 2) % colorRanges.length\n }\n else {\n colorRanges[j] = true\n }\n\n var min = (hueRange[0] + j * step) % 359,\n max = (hueRange[0] + (j + 1) * step) % 359;\n\n hueRange = [min, max]\n\n hue = randomWithin(hueRange)\n\n if (hue < 0) {hue = 360 + hue;}\n return hue\n }\n else {\n var hueRange = getHueRange(options.hue)\n\n hue = randomWithin(hueRange);\n // Instead of storing red as two seperate ranges,\n // we group them, using negative numbers\n if (hue < 0) {\n hue = 360 + hue;\n }\n\n return hue;\n }\n }\n\n function pickSaturation (hue, options) {\n\n if (options.hue === 'monochrome') {\n return 0;\n }\n\n if (options.luminosity === 'random') {\n return randomWithin([0,100]);\n }\n\n var saturationRange = getSaturationRange(hue);\n\n var sMin = saturationRange[0],\n sMax = saturationRange[1];\n\n switch (options.luminosity) {\n\n case 'bright':\n sMin = 55;\n break;\n\n case 'dark':\n sMin = sMax - 10;\n break;\n\n case 'light':\n sMax = 55;\n break;\n }\n\n return randomWithin([sMin, sMax]);\n\n }\n\n function pickBrightness (H, S, options) {\n\n var bMin = getMinimumBrightness(H, S),\n bMax = 100;\n\n switch (options.luminosity) {\n\n case 'dark':\n bMax = bMin + 20;\n break;\n\n case 'light':\n bMin = (bMax + bMin)/2;\n break;\n\n case 'random':\n bMin = 0;\n bMax = 100;\n break;\n }\n\n return randomWithin([bMin, bMax]);\n }\n\n function setFormat (hsv, options) {\n\n switch (options.format) {\n\n case 'hsvArray':\n return hsv;\n\n case 'hslArray':\n return HSVtoHSL(hsv);\n\n case 'hsl':\n var hsl = HSVtoHSL(hsv);\n return 'hsl('+hsl[0]+', '+hsl[1]+'%, '+hsl[2]+'%)';\n\n case 'hsla':\n var hslColor = HSVtoHSL(hsv);\n var alpha = options.alpha || Math.random();\n return 'hsla('+hslColor[0]+', '+hslColor[1]+'%, '+hslColor[2]+'%, ' + alpha + ')';\n\n case 'rgbArray':\n return HSVtoRGB(hsv);\n\n case 'rgb':\n var rgb = HSVtoRGB(hsv);\n return 'rgb(' + rgb.join(', ') + ')';\n\n case 'rgba':\n var rgbColor = HSVtoRGB(hsv);\n var alpha = options.alpha || Math.random();\n return 'rgba(' + rgbColor.join(', ') + ', ' + alpha + ')';\n\n default:\n return HSVtoHex(hsv);\n }\n\n }\n\n function getMinimumBrightness(H, S) {\n\n var lowerBounds = getColorInfo(H).lowerBounds;\n\n for (var i = 0; i < lowerBounds.length - 1; i++) {\n\n var s1 = lowerBounds[i][0],\n v1 = lowerBounds[i][1];\n\n var s2 = lowerBounds[i+1][0],\n v2 = lowerBounds[i+1][1];\n\n if (S >= s1 && S <= s2) {\n\n var m = (v2 - v1)/(s2 - s1),\n b = v1 - m*s1;\n\n return m*S + b;\n }\n\n }\n\n return 0;\n }\n\n function getHueRange (colorInput) {\n\n if (typeof parseInt(colorInput) === 'number') {\n\n var number = parseInt(colorInput);\n\n if (number < 360 && number > 0) {\n return [number, number];\n }\n\n }\n\n if (typeof colorInput === 'string') {\n\n if (colorDictionary[colorInput]) {\n var color = colorDictionary[colorInput];\n if (color.hueRange) {return color.hueRange;}\n } else if (colorInput.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) {\n var hue = HexToHSB(colorInput)[0];\n return [ hue, hue ];\n }\n }\n\n return [0,360];\n\n }\n\n function getSaturationRange (hue) {\n return getColorInfo(hue).saturationRange;\n }\n\n function getColorInfo (hue) {\n\n // Maps red colors to make picking hue easier\n if (hue >= 334 && hue <= 360) {\n hue-= 360;\n }\n\n for (var colorName in colorDictionary) {\n var color = colorDictionary[colorName];\n if (color.hueRange &&\n hue >= color.hueRange[0] &&\n hue <= color.hueRange[1]) {\n return colorDictionary[colorName];\n }\n } return 'Color not found';\n }\n\n function randomWithin (range) {\n if (seed === null) {\n //generate random evenly destinct number from : https://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n var golden_ratio = 0.618033988749895\n var r=Math.random()\n r += golden_ratio\n r %= 1\n return Math.floor(range[0] + r*(range[1] + 1 - range[0]));\n } else {\n //Seeded random algorithm from http://indiegamr.com/generate-repeatable-random-numbers-in-js/\n var max = range[1] || 1;\n var min = range[0] || 0;\n seed = (seed * 9301 + 49297) % 233280;\n var rnd = seed / 233280.0;\n return Math.floor(min + rnd * (max - min));\n}\n }\n\n function HSVtoHex (hsv){\n\n var rgb = HSVtoRGB(hsv);\n\n function componentToHex(c) {\n var hex = c.toString(16);\n return hex.length == 1 ? '0' + hex : hex;\n }\n\n var hex = '#' + componentToHex(rgb[0]) + componentToHex(rgb[1]) + componentToHex(rgb[2]);\n\n return hex;\n\n }\n\n function defineColor (name, hueRange, lowerBounds) {\n\n var sMin = lowerBounds[0][0],\n sMax = lowerBounds[lowerBounds.length - 1][0],\n\n bMin = lowerBounds[lowerBounds.length - 1][1],\n bMax = lowerBounds[0][1];\n\n colorDictionary[name] = {\n hueRange: hueRange,\n lowerBounds: lowerBounds,\n saturationRange: [sMin, sMax],\n brightnessRange: [bMin, bMax]\n };\n\n }\n\n function loadColorBounds () {\n\n defineColor(\n 'monochrome',\n null,\n [[0,0],[100,0]]\n );\n\n defineColor(\n 'red',\n [-26,18],\n [[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]\n );\n\n defineColor(\n 'orange',\n [18,46],\n [[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]\n );\n\n defineColor(\n 'yellow',\n [46,62],\n [[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]\n );\n\n defineColor(\n 'green',\n [62,178],\n [[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]\n );\n\n defineColor(\n 'blue',\n [178, 257],\n [[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]\n );\n\n defineColor(\n 'purple',\n [257, 282],\n [[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]\n );\n\n defineColor(\n 'pink',\n [282, 334],\n [[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]\n );\n\n }\n\n function HSVtoRGB (hsv) {\n\n // this doesn't work for the values of 0 and 360\n // here's the hacky fix\n var h = hsv[0];\n if (h === 0) {h = 1;}\n if (h === 360) {h = 359;}\n\n // Rebase the h,s,v values\n h = h/360;\n var s = hsv[1]/100,\n v = hsv[2]/100;\n\n var h_i = Math.floor(h*6),\n f = h * 6 - h_i,\n p = v * (1 - s),\n q = v * (1 - f*s),\n t = v * (1 - (1 - f)*s),\n r = 256,\n g = 256,\n b = 256;\n\n switch(h_i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n case 5: r = v; g = p; b = q; break;\n }\n\n var result = [Math.floor(r*255), Math.floor(g*255), Math.floor(b*255)];\n return result;\n }\n\n function HexToHSB (hex) {\n hex = hex.replace(/^#/, '');\n hex = hex.length === 3 ? hex.replace(/(.)/g, '$1$1') : hex;\n\n var red = parseInt(hex.substr(0, 2), 16) / 255,\n green = parseInt(hex.substr(2, 2), 16) / 255,\n blue = parseInt(hex.substr(4, 2), 16) / 255;\n\n var cMax = Math.max(red, green, blue),\n delta = cMax - Math.min(red, green, blue),\n saturation = cMax ? (delta / cMax) : 0;\n\n switch (cMax) {\n case red: return [ 60 * (((green - blue) / delta) % 6) || 0, saturation, cMax ];\n case green: return [ 60 * (((blue - red) / delta) + 2) || 0, saturation, cMax ];\n case blue: return [ 60 * (((red - green) / delta) + 4) || 0, saturation, cMax ];\n }\n }\n\n function HSVtoHSL (hsv) {\n var h = hsv[0],\n s = hsv[1]/100,\n v = hsv[2]/100,\n k = (2-s)*v;\n\n return [\n h,\n Math.round(s*v / (k<1 ? k : 2-k) * 10000) / 100,\n k/2 * 100\n ];\n }\n\n function stringToInteger (string) {\n var total = 0\n for (var i = 0; i !== string.length; i++) {\n if (total >= Number.MAX_SAFE_INTEGER) break;\n total += string.charCodeAt(i)\n }\n return total\n }\n\n // get The range of given hue when options.count!=0\n function getRealHueRange(colorHue)\n { if (!isNaN(colorHue)) {\n var number = parseInt(colorHue);\n\n if (number < 360 && number > 0) {\n return getColorInfo(colorHue).hueRange\n }\n }\n else if (typeof colorHue === 'string') {\n\n if (colorDictionary[colorHue]) {\n var color = colorDictionary[colorHue];\n\n if (color.hueRange) {\n return color.hueRange\n }\n } else if (colorHue.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) {\n var hue = HexToHSB(colorHue)[0]\n return getColorInfo(hue).hueRange\n }\n }\n\n return [0,360]\n}\n return randomColor;\n}));\n","// Generated by CoffeeScript 1.11.1\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.11.1\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.11.1\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.11.1\n(function() {\n \"use strict\";\n var bom, defaults, events, isEmpty, processName, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processName = function(processors, processedName) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n processedName = process(processedName);\n }\n return processedName;\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return obj[key] = newValue;\n } else {\n return obj[key] = [newValue];\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n obj[key] = [obj[key]];\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processName(_this.options.attrValueProcessors, node.attributes[key]) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processName(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n obj[attrkey][processedKey] = newValue;\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processName(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, err, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processName(_this.options.valueProcessors, obj[charkey]) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n try {\n obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n _this.emit(\"error\", err);\n }\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n objClone[key] = obj[key];\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n obj[nodeName] = old;\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n return Parser;\n\n })(events.EventEmitter);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.11.1\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.11.1\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n}).call(this);\n","// wrapper for non-node envs\n;(function (sax) {\n\nsax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\nsax.SAXParser = SAXParser\nsax.SAXStream = SAXStream\nsax.createStream = createStream\n\n// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n// since that's the earliest that a buffer overrun could occur. This way, checks are\n// as rare as required, but as often as necessary to ensure never crossing this bound.\n// Furthermore, buffers are only tested at most once per write(), so passing a very\n// large string into write() might have undesirable effects, but this is manageable by\n// the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n// edge case, result in creating at most one complete copy of the string passed in.\n// Set to Infinity to have unlimited buffers.\nsax.MAX_BUFFER_LENGTH = 64 * 1024\n\nvar buffers = [\n \"comment\", \"sgmlDecl\", \"textNode\", \"tagName\", \"doctype\",\n \"procInstName\", \"procInstBody\", \"entity\", \"attribName\",\n \"attribValue\", \"cdata\", \"script\"\n]\n\nsax.EVENTS = // for discoverability.\n [ \"text\"\n , \"processinginstruction\"\n , \"sgmldeclaration\"\n , \"doctype\"\n , \"comment\"\n , \"attribute\"\n , \"opentag\"\n , \"closetag\"\n , \"opencdata\"\n , \"cdata\"\n , \"closecdata\"\n , \"error\"\n , \"end\"\n , \"ready\"\n , \"script\"\n , \"opennamespace\"\n , \"closenamespace\"\n ]\n\nfunction SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) return new SAXParser(strict, opt)\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = \"\"\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\"\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.ENTITIES = Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) parser.ns = Object.create(rootNS)\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, \"onready\")\n}\n\nif (!Object.create) Object.create = function (o) {\n function f () { this.__proto__ = o }\n f.prototype = o\n return new f\n}\n\nif (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) {\n return o.__proto__\n}\n\nif (!Object.keys) Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n}\n\nfunction checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i ++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case \"textNode\":\n closeText(parser)\n break\n\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata)\n parser.cdata = \"\"\n break\n\n case \"script\":\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n break\n\n default:\n error(parser, \"Max buffer length exceeded: \"+buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual)\n + parser.position\n}\n\nfunction clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i ++) {\n parser[buffers[i]] = \"\"\n }\n}\n\nfunction flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata)\n parser.cdata = \"\"\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n }\n}\n\nSAXParser.prototype =\n { end: function () { end(this) }\n , write: write\n , resume: function () { this.error = null; return this }\n , close: function () { return this.write(null) }\n , flush: function () { flushBuffers(this) }\n }\n\ntry {\n var Stream = require(\"stream\").Stream\n} catch (ex) {\n var Stream = function () {}\n}\n\n\nvar streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\"\n})\n\nfunction createStream (strict, opt) {\n return new SAXStream(strict, opt)\n}\n\nfunction SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) return new SAXStream(strict, opt)\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n\n var me = this\n\n this._parser.onend = function () {\n me.emit(\"end\")\n }\n\n this._parser.onerror = function (er) {\n me.emit(\"error\", er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null;\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function () { return me._parser[\"on\" + ev] },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n return me._parser[\"on\"+ev] = h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n}\n\nSAXStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: SAXStream } })\n\nSAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data);\n }\n\n this._parser.write(data.toString())\n this.emit(\"data\", data)\n return true\n}\n\nSAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this.write(chunk)\n this._parser.end()\n return true\n}\n\nSAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n}\n\n\n\n// character classes and tokens\nvar whitespace = \"\\r\\n\\t \"\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n , number = \"0124356789\"\n , letter = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n // (Letter | \"_\" | \":\")\n , quote = \"'\\\"\"\n , entity = number+letter+\"#\"\n , attribEnd = whitespace + \">\"\n , CDATA = \"[CDATA[\"\n , DOCTYPE = \"DOCTYPE\"\n , XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\"\n , XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\"\n , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n// turn all the string character sets into character class objects.\nwhitespace = charClass(whitespace)\nnumber = charClass(number)\nletter = charClass(letter)\n\n// http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n// This implementation works on strings, a single character at a time\n// as such, it cannot ever support astral-plane characters (10000-EFFFF)\n// without a significant breaking change to either this parser, or the\n// JavaScript language. Implementation of an emoji-capable xml parser\n// is left as an exercise for the reader.\nvar nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\nvar nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\.\\d-]/\n\nquote = charClass(quote)\nentity = charClass(entity)\nattribEnd = charClass(attribEnd)\n\nfunction charClass (str) {\n return str.split(\"\").reduce(function (s, c) {\n s[c] = true\n return s\n }, {})\n}\n\nfunction isRegExp (c) {\n return Object.prototype.toString.call(c) === '[object RegExp]'\n}\n\nfunction is (charclass, c) {\n return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]\n}\n\nfunction not (charclass, c) {\n return !is(charclass, c)\n}\n\nvar S = 0\nsax.STATE =\n{ BEGIN : S++\n, TEXT : S++ // general stuff\n, TEXT_ENTITY : S++ // &amp and such.\n, OPEN_WAKA : S++ // <\n, SGML_DECL : S++ // <!BLARG\n, SGML_DECL_QUOTED : S++ // <!BLARG foo \"bar\n, DOCTYPE : S++ // <!DOCTYPE\n, DOCTYPE_QUOTED : S++ // <!DOCTYPE \"//blah\n, DOCTYPE_DTD : S++ // <!DOCTYPE \"//blah\" [ ...\n, DOCTYPE_DTD_QUOTED : S++ // <!DOCTYPE \"//blah\" [ \"foo\n, COMMENT_STARTING : S++ // <!-\n, COMMENT : S++ // <!--\n, COMMENT_ENDING : S++ // <!-- blah -\n, COMMENT_ENDED : S++ // <!-- blah --\n, CDATA : S++ // <![CDATA[ something\n, CDATA_ENDING : S++ // ]\n, CDATA_ENDING_2 : S++ // ]]\n, PROC_INST : S++ // <?hi\n, PROC_INST_BODY : S++ // <?hi there\n, PROC_INST_ENDING : S++ // <?hi \"there\" ?\n, OPEN_TAG : S++ // <strong\n, OPEN_TAG_SLASH : S++ // <strong /\n, ATTRIB : S++ // <a\n, ATTRIB_NAME : S++ // <a foo\n, ATTRIB_NAME_SAW_WHITE : S++ // <a foo _\n, ATTRIB_VALUE : S++ // <a foo=\n, ATTRIB_VALUE_QUOTED : S++ // <a foo=\"bar\n, ATTRIB_VALUE_CLOSED : S++ // <a foo=\"bar\"\n, ATTRIB_VALUE_UNQUOTED : S++ // <a foo=bar\n, ATTRIB_VALUE_ENTITY_Q : S++ // <foo bar=\"&quot;\"\n, ATTRIB_VALUE_ENTITY_U : S++ // <foo bar=&quot;\n, CLOSE_TAG : S++ // </a\n, CLOSE_TAG_SAW_WHITE : S++ // </a >\n, SCRIPT : S++ // <script> ...\n, SCRIPT_ENDING : S++ // <script> ... <\n}\n\nsax.ENTITIES =\n{ \"amp\" : \"&\"\n, \"gt\" : \">\"\n, \"lt\" : \"<\"\n, \"quot\" : \"\\\"\"\n, \"apos\" : \"'\"\n, \"AElig\" : 198\n, \"Aacute\" : 193\n, \"Acirc\" : 194\n, \"Agrave\" : 192\n, \"Aring\" : 197\n, \"Atilde\" : 195\n, \"Auml\" : 196\n, \"Ccedil\" : 199\n, \"ETH\" : 208\n, \"Eacute\" : 201\n, \"Ecirc\" : 202\n, \"Egrave\" : 200\n, \"Euml\" : 203\n, \"Iacute\" : 205\n, \"Icirc\" : 206\n, \"Igrave\" : 204\n, \"Iuml\" : 207\n, \"Ntilde\" : 209\n, \"Oacute\" : 211\n, \"Ocirc\" : 212\n, \"Ograve\" : 210\n, \"Oslash\" : 216\n, \"Otilde\" : 213\n, \"Ouml\" : 214\n, \"THORN\" : 222\n, \"Uacute\" : 218\n, \"Ucirc\" : 219\n, \"Ugrave\" : 217\n, \"Uuml\" : 220\n, \"Yacute\" : 221\n, \"aacute\" : 225\n, \"acirc\" : 226\n, \"aelig\" : 230\n, \"agrave\" : 224\n, \"aring\" : 229\n, \"atilde\" : 227\n, \"auml\" : 228\n, \"ccedil\" : 231\n, \"eacute\" : 233\n, \"ecirc\" : 234\n, \"egrave\" : 232\n, \"eth\" : 240\n, \"euml\" : 235\n, \"iacute\" : 237\n, \"icirc\" : 238\n, \"igrave\" : 236\n, \"iuml\" : 239\n, \"ntilde\" : 241\n, \"oacute\" : 243\n, \"ocirc\" : 244\n, \"ograve\" : 242\n, \"oslash\" : 248\n, \"otilde\" : 245\n, \"ouml\" : 246\n, \"szlig\" : 223\n, \"thorn\" : 254\n, \"uacute\" : 250\n, \"ucirc\" : 251\n, \"ugrave\" : 249\n, \"uuml\" : 252\n, \"yacute\" : 253\n, \"yuml\" : 255\n, \"copy\" : 169\n, \"reg\" : 174\n, \"nbsp\" : 160\n, \"iexcl\" : 161\n, \"cent\" : 162\n, \"pound\" : 163\n, \"curren\" : 164\n, \"yen\" : 165\n, \"brvbar\" : 166\n, \"sect\" : 167\n, \"uml\" : 168\n, \"ordf\" : 170\n, \"laquo\" : 171\n, \"not\" : 172\n, \"shy\" : 173\n, \"macr\" : 175\n, \"deg\" : 176\n, \"plusmn\" : 177\n, \"sup1\" : 185\n, \"sup2\" : 178\n, \"sup3\" : 179\n, \"acute\" : 180\n, \"micro\" : 181\n, \"para\" : 182\n, \"middot\" : 183\n, \"cedil\" : 184\n, \"ordm\" : 186\n, \"raquo\" : 187\n, \"frac14\" : 188\n, \"frac12\" : 189\n, \"frac34\" : 190\n, \"iquest\" : 191\n, \"times\" : 215\n, \"divide\" : 247\n, \"OElig\" : 338\n, \"oelig\" : 339\n, \"Scaron\" : 352\n, \"scaron\" : 353\n, \"Yuml\" : 376\n, \"fnof\" : 402\n, \"circ\" : 710\n, \"tilde\" : 732\n, \"Alpha\" : 913\n, \"Beta\" : 914\n, \"Gamma\" : 915\n, \"Delta\" : 916\n, \"Epsilon\" : 917\n, \"Zeta\" : 918\n, \"Eta\" : 919\n, \"Theta\" : 920\n, \"Iota\" : 921\n, \"Kappa\" : 922\n, \"Lambda\" : 923\n, \"Mu\" : 924\n, \"Nu\" : 925\n, \"Xi\" : 926\n, \"Omicron\" : 927\n, \"Pi\" : 928\n, \"Rho\" : 929\n, \"Sigma\" : 931\n, \"Tau\" : 932\n, \"Upsilon\" : 933\n, \"Phi\" : 934\n, \"Chi\" : 935\n, \"Psi\" : 936\n, \"Omega\" : 937\n, \"alpha\" : 945\n, \"beta\" : 946\n, \"gamma\" : 947\n, \"delta\" : 948\n, \"epsilon\" : 949\n, \"zeta\" : 950\n, \"eta\" : 951\n, \"theta\" : 952\n, \"iota\" : 953\n, \"kappa\" : 954\n, \"lambda\" : 955\n, \"mu\" : 956\n, \"nu\" : 957\n, \"xi\" : 958\n, \"omicron\" : 959\n, \"pi\" : 960\n, \"rho\" : 961\n, \"sigmaf\" : 962\n, \"sigma\" : 963\n, \"tau\" : 964\n, \"upsilon\" : 965\n, \"phi\" : 966\n, \"chi\" : 967\n, \"psi\" : 968\n, \"omega\" : 969\n, \"thetasym\" : 977\n, \"upsih\" : 978\n, \"piv\" : 982\n, \"ensp\" : 8194\n, \"emsp\" : 8195\n, \"thinsp\" : 8201\n, \"zwnj\" : 8204\n, \"zwj\" : 8205\n, \"lrm\" : 8206\n, \"rlm\" : 8207\n, \"ndash\" : 8211\n, \"mdash\" : 8212\n, \"lsquo\" : 8216\n, \"rsquo\" : 8217\n, \"sbquo\" : 8218\n, \"ldquo\" : 8220\n, \"rdquo\" : 8221\n, \"bdquo\" : 8222\n, \"dagger\" : 8224\n, \"Dagger\" : 8225\n, \"bull\" : 8226\n, \"hellip\" : 8230\n, \"permil\" : 8240\n, \"prime\" : 8242\n, \"Prime\" : 8243\n, \"lsaquo\" : 8249\n, \"rsaquo\" : 8250\n, \"oline\" : 8254\n, \"frasl\" : 8260\n, \"euro\" : 8364\n, \"image\" : 8465\n, \"weierp\" : 8472\n, \"real\" : 8476\n, \"trade\" : 8482\n, \"alefsym\" : 8501\n, \"larr\" : 8592\n, \"uarr\" : 8593\n, \"rarr\" : 8594\n, \"darr\" : 8595\n, \"harr\" : 8596\n, \"crarr\" : 8629\n, \"lArr\" : 8656\n, \"uArr\" : 8657\n, \"rArr\" : 8658\n, \"dArr\" : 8659\n, \"hArr\" : 8660\n, \"forall\" : 8704\n, \"part\" : 8706\n, \"exist\" : 8707\n, \"empty\" : 8709\n, \"nabla\" : 8711\n, \"isin\" : 8712\n, \"notin\" : 8713\n, \"ni\" : 8715\n, \"prod\" : 8719\n, \"sum\" : 8721\n, \"minus\" : 8722\n, \"lowast\" : 8727\n, \"radic\" : 8730\n, \"prop\" : 8733\n, \"infin\" : 8734\n, \"ang\" : 8736\n, \"and\" : 8743\n, \"or\" : 8744\n, \"cap\" : 8745\n, \"cup\" : 8746\n, \"int\" : 8747\n, \"there4\" : 8756\n, \"sim\" : 8764\n, \"cong\" : 8773\n, \"asymp\" : 8776\n, \"ne\" : 8800\n, \"equiv\" : 8801\n, \"le\" : 8804\n, \"ge\" : 8805\n, \"sub\" : 8834\n, \"sup\" : 8835\n, \"nsub\" : 8836\n, \"sube\" : 8838\n, \"supe\" : 8839\n, \"oplus\" : 8853\n, \"otimes\" : 8855\n, \"perp\" : 8869\n, \"sdot\" : 8901\n, \"lceil\" : 8968\n, \"rceil\" : 8969\n, \"lfloor\" : 8970\n, \"rfloor\" : 8971\n, \"lang\" : 9001\n, \"rang\" : 9002\n, \"loz\" : 9674\n, \"spades\" : 9824\n, \"clubs\" : 9827\n, \"hearts\" : 9829\n, \"diams\" : 9830\n}\n\nObject.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n})\n\nfor (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S\n\n// shorthand\nS = sax.STATE\n\nfunction emit (parser, event, data) {\n parser[event] && parser[event](data)\n}\n\nfunction emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n}\n\nfunction closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, \"ontext\", parser.textNode)\n parser.textNode = \"\"\n}\n\nfunction textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, \" \")\n return text\n}\n\nfunction error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, \"onerror\", er)\n return parser\n}\n\nfunction end (parser) {\n if (!parser.closedRoot) strictFail(parser, \"Unclosed root tag\")\n if ((parser.state !== S.BEGIN) && (parser.state !== S.TEXT)) error(parser, \"Unexpected end\")\n closeText(parser)\n parser.c = \"\"\n parser.closed = true\n emit(parser, \"onend\")\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n}\n\nfunction strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser))\n throw new Error('bad call to strictFail');\n if (parser.strict) error(parser, message)\n}\n\nfunction newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n , tag = parser.tag = { name : parser.tagName, attributes : {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) tag.ns = parent.ns\n parser.attribList.length = 0\n}\n\nfunction qname (name, attribute) {\n var i = name.indexOf(\":\")\n , qualName = i < 0 ? [ \"\", name ] : name.split(\":\")\n , prefix = qualName[0]\n , local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === \"xmlns\") {\n prefix = \"xmlns\"\n local = \"\"\n }\n\n return { prefix: prefix, local: local }\n}\n\nfunction attrib (parser) {\n if (!parser.strict) parser.attribName = parser.attribName[parser.looseCase]()\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n return parser.attribName = parser.attribValue = \"\"\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n , prefix = qn.prefix\n , local = qn.local\n\n if (prefix === \"xmlns\") {\n // namespace binding attribute; push the binding into scope\n if (local === \"xml\" && parser.attribValue !== XML_NAMESPACE) {\n strictFail( parser\n , \"xml: prefix must be bound to \" + XML_NAMESPACE + \"\\n\"\n + \"Actual: \" + parser.attribValue )\n } else if (local === \"xmlns\" && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail( parser\n , \"xmlns: prefix must be bound to \" + XMLNS_NAMESPACE + \"\\n\"\n + \"Actual: \" + parser.attribValue )\n } else {\n var tag = parser.tag\n , parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect; preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode( parser\n , \"onattribute\"\n , { name: parser.attribName\n , value: parser.attribValue } )\n }\n\n parser.attribName = parser.attribValue = \"\"\n}\n\nfunction openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || \"\"\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, \"Unbound namespace prefix: \"\n + JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode( parser\n , \"onopennamespace\"\n , { prefix: p , uri: tag.ns[p] } )\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i ++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n , value = nv[1]\n , qualName = qname(name, true)\n , prefix = qualName.prefix\n , local = qualName.local\n , uri = prefix == \"\" ? \"\" : (tag.ns[prefix] || \"\")\n , a = { name: name\n , value: value\n , prefix: prefix\n , local: local\n , uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix != \"xmlns\" && !uri) {\n strictFail(parser, \"Unbound namespace prefix: \"\n + JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, \"onattribute\", a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, \"onopentag\", parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === \"script\") {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = \"\"\n }\n parser.attribName = parser.attribValue = \"\"\n parser.attribList.length = 0\n}\n\nfunction closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, \"Weird empty close tag.\")\n parser.textNode += \"</>\"\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== \"script\") {\n parser.script += \"</\" + parser.tagName + \">\"\n parser.tagName = \"\"\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) tagName = tagName[parser.looseCase]()\n var closeTo = tagName\n while (t --) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, \"Unexpected close tag\")\n } else break\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, \"Unmatched closing tag: \"+parser.tagName)\n parser.textNode += \"</\" + parser.tagName + \">\"\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s --> t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, \"onclosetag\", parser.tagName)\n\n var x = {}\n for (var i in tag.ns) x[i] = tag.ns[i]\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, \"onclosenamespace\", { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = \"\"\n parser.attribList.length = 0\n parser.state = S.TEXT\n}\n\nfunction parseEntity (parser) {\n var entity = parser.entity\n , entityLC = entity.toLowerCase()\n , num\n , numStr = \"\"\n if (parser.ENTITIES[entity])\n return parser.ENTITIES[entity]\n if (parser.ENTITIES[entityLC])\n return parser.ENTITIES[entityLC]\n entity = entityLC\n if (entity.charAt(0) === \"#\") {\n if (entity.charAt(1) === \"x\") {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, \"\")\n if (numStr.toLowerCase() !== entity) {\n strictFail(parser, \"Invalid character entity\")\n return \"&\"+parser.entity + \";\"\n }\n\n return String.fromCodePoint(num)\n}\n\nfunction write (chunk) {\n var parser = this\n if (this.error) throw this.error\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\")\n if (chunk === null) return end(parser)\n var i = 0, c = \"\"\n while (parser.c = c = chunk.charAt(i++)) {\n if (parser.trackPosition) {\n parser.position ++\n if (c === \"\\n\") {\n parser.line ++\n parser.column = 0\n } else parser.column ++\n }\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === \"<\") {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (not(whitespace,c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, \"Non-whitespace before first tag.\")\n parser.textNode = c\n parser.state = S.TEXT\n }\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i-1\n while (c && c!==\"<\" && c!==\"&\") {\n c = chunk.charAt(i++)\n if (c && parser.trackPosition) {\n parser.position ++\n if (c === \"\\n\") {\n parser.line ++\n parser.column = 0\n } else parser.column ++\n }\n }\n parser.textNode += chunk.substring(starti, i-1)\n }\n if (c === \"<\") {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot))\n strictFail(parser, \"Text data outside of root node.\")\n if (c === \"&\") parser.state = S.TEXT_ENTITY\n else parser.textNode += c\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === \"<\") {\n parser.state = S.SCRIPT_ENDING\n } else parser.script += c\n continue\n\n case S.SCRIPT_ENDING:\n if (c === \"/\") {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += \"<\" + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === \"!\") {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = \"\"\n } else if (is(whitespace, c)) {\n // wait for it...\n } else if (is(nameStart,c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === \"/\") {\n parser.state = S.CLOSE_TAG\n parser.tagName = \"\"\n } else if (c === \"?\") {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = \"\"\n } else {\n strictFail(parser, \"Unencoded <\")\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(\" \") + c\n }\n parser.textNode += \"<\" + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if ((parser.sgmlDecl+c).toUpperCase() === CDATA) {\n emitNode(parser, \"onopencdata\")\n parser.state = S.CDATA\n parser.sgmlDecl = \"\"\n parser.cdata = \"\"\n } else if (parser.sgmlDecl+c === \"--\") {\n parser.state = S.COMMENT\n parser.comment = \"\"\n parser.sgmlDecl = \"\"\n } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) strictFail(parser,\n \"Inappropriately located doctype declaration\")\n parser.doctype = \"\"\n parser.sgmlDecl = \"\"\n } else if (c === \">\") {\n emitNode(parser, \"onsgmldeclaration\", parser.sgmlDecl)\n parser.sgmlDecl = \"\"\n parser.state = S.TEXT\n } else if (is(quote, c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else parser.sgmlDecl += c\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = \"\"\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === \">\") {\n parser.state = S.TEXT\n emitNode(parser, \"ondoctype\", parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === \"[\") parser.state = S.DOCTYPE_DTD\n else if (is(quote, c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = \"\"\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n parser.doctype += c\n if (c === \"]\") parser.state = S.DOCTYPE\n else if (is(quote,c)) {\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = \"\"\n }\n continue\n\n case S.COMMENT:\n if (c === \"-\") parser.state = S.COMMENT_ENDING\n else parser.comment += c\n continue\n\n case S.COMMENT_ENDING:\n if (c === \"-\") {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) emitNode(parser, \"oncomment\", parser.comment)\n parser.comment = \"\"\n } else {\n parser.comment += \"-\" + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== \">\") {\n strictFail(parser, \"Malformed comment\")\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += \"--\" + c\n parser.state = S.COMMENT\n } else parser.state = S.TEXT\n continue\n\n case S.CDATA:\n if (c === \"]\") parser.state = S.CDATA_ENDING\n else parser.cdata += c\n continue\n\n case S.CDATA_ENDING:\n if (c === \"]\") parser.state = S.CDATA_ENDING_2\n else {\n parser.cdata += \"]\" + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === \">\") {\n if (parser.cdata) emitNode(parser, \"oncdata\", parser.cdata)\n emitNode(parser, \"onclosecdata\")\n parser.cdata = \"\"\n parser.state = S.TEXT\n } else if (c === \"]\") {\n parser.cdata += \"]\"\n } else {\n parser.cdata += \"]]\" + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === \"?\") parser.state = S.PROC_INST_ENDING\n else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY\n else parser.procInstName += c\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && is(whitespace, c)) continue\n else if (c === \"?\") parser.state = S.PROC_INST_ENDING\n else parser.procInstBody += c\n continue\n\n case S.PROC_INST_ENDING:\n if (c === \">\") {\n emitNode(parser, \"onprocessinginstruction\", {\n name : parser.procInstName,\n body : parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = \"\"\n parser.state = S.TEXT\n } else {\n parser.procInstBody += \"?\" + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (is(nameBody, c)) parser.tagName += c\n else {\n newTag(parser)\n if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else {\n if (not(whitespace, c)) strictFail(\n parser, \"Invalid character in tag name\")\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === \">\") {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, \"Forward-slash in opening tag not followed by >\")\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (is(whitespace, c)) continue\n else if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else if (is(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = \"\"\n parser.state = S.ATTRIB_NAME\n } else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_NAME:\n if (c === \"=\") parser.state = S.ATTRIB_VALUE\n else if (c === \">\") {\n strictFail(parser, \"Attribute without value\")\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n }\n else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE\n else if (is(nameBody, c)) parser.attribName += c\n else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === \"=\") parser.state = S.ATTRIB_VALUE\n else if (is(whitespace, c)) continue\n else {\n strictFail(parser, \"Attribute without value\")\n parser.tag.attributes[parser.attribName] = \"\"\n parser.attribValue = \"\"\n emitNode(parser, \"onattribute\",\n { name : parser.attribName, value : \"\" })\n parser.attribName = \"\"\n if (c === \">\") openTag(parser)\n else if (is(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, \"Invalid attribute name\")\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (is(whitespace, c)) continue\n else if (is(quote, c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n strictFail(parser, \"Unquoted attribute value\")\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === \"&\") parser.state = S.ATTRIB_VALUE_ENTITY_Q\n else parser.attribValue += c\n continue\n }\n attrib(parser)\n parser.q = \"\"\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (is(whitespace, c)) {\n parser.state = S.ATTRIB\n } else if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else if (is(nameStart, c)) {\n strictFail(parser, \"No whitespace between attributes\")\n parser.attribName = c\n parser.attribValue = \"\"\n parser.state = S.ATTRIB_NAME\n } else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (not(attribEnd,c)) {\n if (c === \"&\") parser.state = S.ATTRIB_VALUE_ENTITY_U\n else parser.attribValue += c\n continue\n }\n attrib(parser)\n if (c === \">\") openTag(parser)\n else parser.state = S.ATTRIB\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (is(whitespace, c)) continue\n else if (not(nameStart, c)) {\n if (parser.script) {\n parser.script += \"</\" + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, \"Invalid tagname in closing tag.\")\n }\n } else parser.tagName = c\n }\n else if (c === \">\") closeTag(parser)\n else if (is(nameBody, c)) parser.tagName += c\n else if (parser.script) {\n parser.script += \"</\" + parser.tagName\n parser.tagName = \"\"\n parser.state = S.SCRIPT\n } else {\n if (not(whitespace, c)) strictFail(parser,\n \"Invalid tagname in closing tag\")\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (is(whitespace, c)) continue\n if (c === \">\") closeTag(parser)\n else strictFail(parser, \"Invalid characters in closing tag\")\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n switch(parser.state) {\n case S.TEXT_ENTITY:\n var returnState = S.TEXT, buffer = \"textNode\"\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n var returnState = S.ATTRIB_VALUE_QUOTED, buffer = \"attribValue\"\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = \"attribValue\"\n break\n }\n if (c === \";\") {\n parser[buffer] += parseEntity(parser)\n parser.entity = \"\"\n parser.state = returnState\n }\n else if (is(entity, c)) parser.entity += c\n else {\n strictFail(parser, \"Invalid character entity\")\n parser[buffer] += \"&\" + parser.entity + c\n parser.entity = \"\"\n parser.state = returnState\n }\n continue\n\n default:\n throw new Error(parser, \"Unknown state: \" + parser.state)\n }\n } // while\n // cdata blocks can get very big under normal conditions. emit and move on.\n // if (parser.state === S.CDATA && parser.cdata) {\n // emitNode(parser, \"oncdata\", parser.cdata)\n // parser.cdata = \"\"\n // }\n if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser)\n return parser\n}\n\n/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\nif (!String.fromCodePoint) {\n (function() {\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n 'value': fromCodePoint,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.fromCodePoint = fromCodePoint;\n }\n }());\n}\n\n})(typeof exports === \"undefined\" ? sax = {} : exports);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Emitter = require('emitter');\n\nfunction Stream() {\n Emitter.call(this);\n}\nStream.prototype = new Emitter();\nmodule.exports = Stream;\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (!this.hasListeners('error')) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.off('data', ondata);\n dest.off('drain', ondrain);\n\n source.off('end', onend);\n source.off('close', onclose);\n\n source.off('error', onerror);\n dest.off('error', onerror);\n\n source.off('end', cleanup);\n source.off('close', cleanup);\n\n dest.off('end', cleanup);\n dest.off('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('end', cleanup);\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\nexports.every = function(str) {\n return new Every(str);\n};\n\n/*\n Time map\n*/\n\nvar time = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000\n};\n\nfor (var key in time) {\n if (key === 'millisecond') {\n time.ms = time[key];\n } else {\n time[key.charAt(0)] = time[key];\n }\n time[key + 's'] = time[key];\n}\n\n\n/*\n Every constructor\n*/\n\nfunction Every(str) {\n this.count = 0;\n var m = parse(str);\n if (m) {\n this.time = Number(m[0]) * time[m[1]];\n this.type = m[1];\n }\n}\n\nEvery.prototype.do = function(cb) {\n if (this.time) {\n this.interval = setInterval(callback, this.time);\n }\n\n var that = this;\n function callback() {\n that.count++;\n cb.call(that);\n }\n return this;\n};\n\nEvery.prototype.stop = function() {\n if (this.interval) {\n clearInterval(this.interval);\n delete this.interval;\n }\n return this;\n};\n\n\n/*\n Convert string to milliseconds\n\n ms, millisecond(s)?\n s, second(s)?\n m, minute(s)?\n h, hour(s)?\n d, day(s)?\n*/\nvar reg = /^\\s*(\\d+(?:\\.\\d+)?)\\s*([a-z]+)\\s*$/;\n\nfunction parse(str) {\n var m = str.match(reg);\n if (m && time[m[2]]) {\n return m.slice(1);\n }\n return null;\n}\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var assign, camelCase, capitalize, isArray, isEmpty, isFunction, isObject, isPlainObject, kebabCase, snakeCase, titleCase, words,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n words = function(val) {\n return (val.split(/[-_\\s]+|(?=[A-Z][a-z])/) || []).filter(function(n) {\n return !!n;\n });\n };\n\n camelCase = function(val) {\n var i, index, len, r, ref, word;\n r = '';\n ref = words(val);\n for (index = i = 0, len = ref.length; i < len; index = ++i) {\n word = ref[index];\n r += index ? capitalize(word.toLowerCase()) : word.toLowerCase();\n }\n return r;\n };\n\n titleCase = function(val) {\n var i, index, len, r, ref, word;\n r = '';\n ref = words(val);\n for (index = i = 0, len = ref.length; i < len; index = ++i) {\n word = ref[index];\n r += capitalize(word.toLowerCase());\n }\n return r;\n };\n\n kebabCase = function(val) {\n var i, index, len, r, ref, word;\n r = '';\n ref = words(val);\n for (index = i = 0, len = ref.length; i < len; index = ++i) {\n word = ref[index];\n r += (index ? '-' : '') + word.toLowerCase();\n }\n return r;\n };\n\n snakeCase = function(val) {\n var i, index, len, r, ref, word;\n r = '';\n ref = words(val);\n for (index = i = 0, len = ref.length; i < len; index = ++i) {\n word = ref[index];\n r += (index ? '_' : '') + word.toLowerCase();\n }\n return r;\n };\n\n capitalize = function(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n module.exports.camelCase = camelCase;\n\n module.exports.titleCase = titleCase;\n\n module.exports.kebabCase = kebabCase;\n\n module.exports.snakeCase = snakeCase;\n\n module.exports.capitalize = capitalize;\n\n module.exports.words = words;\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLAttribute;\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n if (name == null) {\n throw new Error(\"Missing attribute name of element \" + parent.name);\n }\n if (value == null) {\n throw new Error(\"Missing attribute value for attribute \" + name + \" of element \" + parent.name);\n }\n this.name = this.stringify.attName(name);\n this.value = this.stringify.attValue(value);\n }\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.set(options).attribute(this);\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLCData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text\");\n }\n this.text = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.set(options).cdata(this);\n };\n\n return XMLCData;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLComment, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text\");\n }\n this.text = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.set(options).comment(this);\n };\n\n return XMLComment;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name\");\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type\");\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default\");\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT\");\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT\");\n }\n this.elementName = this.stringify.eleName(elementName);\n this.attributeName = this.stringify.attName(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdAttList(this);\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name\");\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.eleName(name);\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdElement(this);\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing entity name\");\n }\n if (value == null) {\n throw new Error(\"Missing entity value\");\n }\n this.pe = !!pe;\n this.name = this.stringify.eleName(name);\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity\");\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity\");\n }\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity\");\n }\n }\n }\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdEntity(this);\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing notation name\");\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity\");\n }\n this.name = this.stringify.eleName(name);\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.set(options).dtdNotation(this);\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.set(options).declaration(this);\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var ref, ref1;\n XMLDocType.__super__.constructor.call(this, parent);\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref = pubID, pubID = ref.pubID, sysID = ref.sysID;\n }\n if (sysID == null) {\n ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.set(options).docType(this);\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLNode = require('./XMLNode');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n this.isDocument = true;\n }\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer.set(writerOptions);\n }\n return writer.document(this);\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.set(options).document(this);\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject;\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter(options);\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter(writerOptions);\n }\n this.options = options;\n this.writer = options.writer;\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node\");\n }\n this.openCurrent();\n name = name.valueOf();\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.dtdElement.apply(this, arguments);\n } else {\n return this.node(name, attributes, text);\n }\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode\");\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.currentNode.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.currentLevel + 1));\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.currentLevel + 1));\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node instanceof XMLElement) {\n this.root = node;\n }\n this.onData(this.writer.openNode(node, this.currentLevel));\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n if (!node.isClosed) {\n this.onData(this.writer.closeNode(node, this.currentLevel));\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk) {\n this.documentStarted = true;\n return this.onDataCallback(chunk);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode instanceof XMLDocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLAttribute, XMLElement, XMLNode, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction;\n\n XMLNode = require('./XMLNode');\n\n XMLAttribute = require('./XMLAttribute');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name\");\n }\n this.name = this.stringify.eleName(name);\n this.attributes = {};\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.isDocument) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n }\n }\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attributes = {};\n ref1 = this.attributes;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attributes[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = name.valueOf();\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (!this.options.skipNullAttributes || (value != null)) {\n this.attributes[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, i, len;\n if (name == null) {\n throw new Error(\"Missing attribute name\");\n }\n name = name.valueOf();\n if (Array.isArray(name)) {\n for (i = 0, len = name.length; i < len; i++) {\n attName = name[i];\n delete this.attributes[attName];\n }\n } else {\n delete this.attributes[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.set(options).element(this);\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLProcessingInstruction, XMLRaw, XMLText, isEmpty, isFunction, isObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isEmpty = ref.isEmpty;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.children = [];\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n }\n }\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref1, val;\n lastChild = null;\n if (attributes == null) {\n attributes = {};\n }\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n if (name != null) {\n name = name.valueOf();\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if ((isObject(val)) && (isEmpty(val))) {\n val = null;\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n lastChild = this.element(key);\n lastChild.element(val);\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name);\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level\");\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref1;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element\");\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref1 = [])), ref1;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref1;\n if (name != null) {\n name = name.valueOf();\n }\n attributes || (attributes = {});\n attributes = attributes.valueOf();\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = target.valueOf();\n }\n if (value != null) {\n value = value.valueOf();\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children[0] instanceof XMLDeclaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.doctype = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref1, ref2;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref1 = doc.children;\n for (i = j = 0, len = ref1.length; j < len; i = ++j) {\n child = ref1[i];\n if (child instanceof XMLDocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref2 = doc.children;\n for (i = k = 0, len1 = ref2.length; k < len1; i = ++k) {\n child = ref2[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.isDocument) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node\");\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node\");\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n return this.doctype(pubID, sysID);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLNode, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target\");\n }\n this.target = this.stringify.insTarget(target);\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.set(options).processingInstruction(this);\n };\n\n return XMLProcessingInstruction;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text\");\n }\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.set(options).raw(this);\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStreamWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n this.stream = stream;\n XMLStreamWriter.__super__.constructor.call(this, options);\n }\n\n XMLStreamWriter.prototype.document = function(doc) {\n var child, i, j, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n child.isLastRootNode = false;\n }\n doc.children[doc.children.length - 1].isLastRootNode = true;\n ref1 = doc.children;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n child = ref1[j];\n switch (false) {\n case !(child instanceof XMLDeclaration):\n results.push(this.declaration(child));\n break;\n case !(child instanceof XMLDocType):\n results.push(this.docType(child));\n break;\n case !(child instanceof XMLComment):\n results.push(this.comment(child));\n break;\n case !(child instanceof XMLProcessingInstruction):\n results.push(this.processingInstruction(child));\n break;\n default:\n results.push(this.element(child));\n }\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att) {\n return this.stream.write(' ' + att.name + '=\"' + att.value + '\"');\n };\n\n XMLStreamWriter.prototype.cdata = function(node, level) {\n return this.stream.write(this.space(level) + '<![CDATA[' + node.text + ']]>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.comment = function(node, level) {\n return this.stream.write(this.space(level) + '<!-- ' + node.text + ' -->' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, level) {\n this.stream.write(this.space(level));\n this.stream.write('<?xml version=\"' + node.version + '\"');\n if (node.encoding != null) {\n this.stream.write(' encoding=\"' + node.encoding + '\"');\n }\n if (node.standalone != null) {\n this.stream.write(' standalone=\"' + node.standalone + '\"');\n }\n this.stream.write('?>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.docType = function(node, level) {\n var child, i, len, ref;\n level || (level = 0);\n this.stream.write(this.space(level));\n this.stream.write('<!DOCTYPE ' + node.root().name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.children.length > 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node));\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n this.dtdAttList(child, level + 1);\n break;\n case !(child instanceof XMLDTDElement):\n this.dtdElement(child, level + 1);\n break;\n case !(child instanceof XMLDTDEntity):\n this.dtdEntity(child, level + 1);\n break;\n case !(child instanceof XMLDTDNotation):\n this.dtdNotation(child, level + 1);\n break;\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }\n this.stream.write(']');\n }\n this.stream.write('>');\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n this.stream.write(space + '<' + node.name);\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n this.stream.write('></' + node.name + '>');\n } else {\n this.stream.write('/>');\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n this.stream.write('>');\n this.stream.write(node.children[0].value);\n this.stream.write('</' + node.name + '>');\n } else {\n this.stream.write('>' + this.newline);\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n switch (false) {\n case !(child instanceof XMLCData):\n this.cdata(child, level + 1);\n break;\n case !(child instanceof XMLComment):\n this.comment(child, level + 1);\n break;\n case !(child instanceof XMLElement):\n this.element(child, level + 1);\n break;\n case !(child instanceof XMLRaw):\n this.raw(child, level + 1);\n break;\n case !(child instanceof XMLText):\n this.text(child, level + 1);\n break;\n case !(child instanceof XMLProcessingInstruction):\n this.processingInstruction(child, level + 1);\n break;\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }\n this.stream.write(space + '</' + node.name + '>');\n }\n return this.stream.write(this.endline(node));\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, level) {\n this.stream.write(this.space(level) + '<?' + node.target);\n if (node.value) {\n this.stream.write(' ' + node.value);\n }\n return this.stream.write('?>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.raw = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.text = function(node, level) {\n return this.stream.write(this.space(level) + node.value + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, level) {\n this.stream.write(this.space(level) + '<!ATTLIST ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType);\n if (node.defaultValueType !== '#DEFAULT') {\n this.stream.write(' ' + node.defaultValueType);\n }\n if (node.defaultValue) {\n this.stream.write(' \"' + node.defaultValue + '\"');\n }\n return this.stream.write('>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, level) {\n return this.stream.write(this.space(level) + '<!ELEMENT ' + node.name + ' ' + node.value + '>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, level) {\n this.stream.write(this.space(level) + '<!ENTITY');\n if (node.pe) {\n this.stream.write(' %');\n }\n this.stream.write(' ' + node.name);\n if (node.value) {\n this.stream.write(' \"' + node.value + '\"');\n } else {\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.nData) {\n this.stream.write(' NDATA ' + node.nData);\n }\n }\n return this.stream.write('>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, level) {\n this.stream.write(this.space(level) + '<!NOTATION ' + node.name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.pubID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n return this.stream.write('>' + this.endline(node));\n };\n\n XMLStreamWriter.prototype.endline = function(node) {\n if (!node.isLastRootNode) {\n return this.newline;\n } else {\n return '';\n }\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLText, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc) {\n var child, i, len, r, ref;\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDeclaration):\n return this.declaration(child);\n case !(child instanceof XMLDocType):\n return this.docType(child);\n case !(child instanceof XMLComment):\n return this.comment(child);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child);\n default:\n return this.element(child, 0);\n }\n }).call(this);\n }\n if (this.pretty && r.slice(-this.newline.length) === this.newline) {\n r = r.slice(0, -this.newline.length);\n }\n return r;\n };\n\n XMLStringWriter.prototype.attribute = function(att) {\n return ' ' + att.name + '=\"' + att.value + '\"';\n };\n\n XMLStringWriter.prototype.cdata = function(node, level) {\n return this.space(level) + '<![CDATA[' + node.text + ']]>' + this.newline;\n };\n\n XMLStringWriter.prototype.comment = function(node, level) {\n return this.space(level) + '<!-- ' + node.text + ' -->' + this.newline;\n };\n\n XMLStringWriter.prototype.declaration = function(node, level) {\n var r;\n r = this.space(level);\n r += '<?xml version=\"' + node.version + '\"';\n if (node.encoding != null) {\n r += ' encoding=\"' + node.encoding + '\"';\n }\n if (node.standalone != null) {\n r += ' standalone=\"' + node.standalone + '\"';\n }\n r += '?>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.docType = function(node, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n r = this.space(level);\n r += '<!DOCTYPE ' + node.root().name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children.length > 0) {\n r += ' [';\n r += this.newline;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLDTDAttList):\n return this.dtdAttList(child, level + 1);\n case !(child instanceof XMLDTDElement):\n return this.dtdElement(child, level + 1);\n case !(child instanceof XMLDTDEntity):\n return this.dtdEntity(child, level + 1);\n case !(child instanceof XMLDTDNotation):\n return this.dtdNotation(child, level + 1);\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown DTD node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += ']';\n }\n r += '>';\n r += this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.element = function(node, level) {\n var att, child, i, len, name, r, ref, ref1, space;\n level || (level = 0);\n space = this.space(level);\n r = '';\n r += space + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n if (node.children.length === 0 || node.children.every(function(e) {\n return e.value === '';\n })) {\n if (this.allowEmpty) {\n r += '></' + node.name + '>' + this.newline;\n } else {\n r += '/>' + this.newline;\n }\n } else if (this.pretty && node.children.length === 1 && (node.children[0].value != null)) {\n r += '>';\n r += node.children[0].value;\n r += '</' + node.name + '>' + this.newline;\n } else {\n r += '>' + this.newline;\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n r += (function() {\n switch (false) {\n case !(child instanceof XMLCData):\n return this.cdata(child, level + 1);\n case !(child instanceof XMLComment):\n return this.comment(child, level + 1);\n case !(child instanceof XMLElement):\n return this.element(child, level + 1);\n case !(child instanceof XMLRaw):\n return this.raw(child, level + 1);\n case !(child instanceof XMLText):\n return this.text(child, level + 1);\n case !(child instanceof XMLProcessingInstruction):\n return this.processingInstruction(child, level + 1);\n default:\n throw new Error(\"Unknown XML node type: \" + child.constructor.name);\n }\n }).call(this);\n }\n r += space + '</' + node.name + '>' + this.newline;\n }\n return r;\n };\n\n XMLStringWriter.prototype.processingInstruction = function(node, level) {\n var r;\n r = this.space(level) + '<?' + node.target;\n if (node.value) {\n r += ' ' + node.value;\n }\n r += '?>' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.raw = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.text = function(node, level) {\n return this.space(level) + node.value + this.newline;\n };\n\n XMLStringWriter.prototype.dtdAttList = function(node, level) {\n var r;\n r = this.space(level) + '<!ATTLIST ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n if (node.defaultValueType !== '#DEFAULT') {\n r += ' ' + node.defaultValueType;\n }\n if (node.defaultValue) {\n r += ' \"' + node.defaultValue + '\"';\n }\n r += '>' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdElement = function(node, level) {\n return this.space(level) + '<!ELEMENT ' + node.name + ' ' + node.value + '>' + this.newline;\n };\n\n XMLStringWriter.prototype.dtdEntity = function(node, level) {\n var r;\n r = this.space(level) + '<!ENTITY';\n if (node.pe) {\n r += ' %';\n }\n r += ' ' + node.name;\n if (node.value) {\n r += ' \"' + node.value + '\"';\n } else {\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.nData) {\n r += ' NDATA ' + node.nData;\n }\n }\n r += '>' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.dtdNotation = function(node, level) {\n var r;\n r = this.space(level) + '<!NOTATION ' + node.name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.pubID) {\n r += ' PUBLIC \"' + node.pubID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n r += '>' + this.newline;\n return r;\n };\n\n XMLStringWriter.prototype.openNode = function(node, level) {\n var att, name, r, ref;\n level || (level = 0);\n if (node instanceof XMLElement) {\n r = this.space(level) + '<' + node.name;\n ref = node.attributes;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att);\n }\n r += (node.children ? '>' : '/>') + this.newline;\n return r;\n } else {\n r = this.space(level) + '<!DOCTYPE ' + node.rootNodeName;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n r += (node.children ? ' [' : '>') + this.newline;\n return r;\n }\n };\n\n XMLStringWriter.prototype.closeNode = function(node, level) {\n level || (level = 0);\n switch (false) {\n case !(node instanceof XMLElement):\n return this.space(level) + '</' + node.name + '>' + this.newline;\n case !(node instanceof XMLDocType):\n return this.space(level) + ']>' + this.newline;\n }\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLStringifier, camelCase, kebabCase, ref, snakeCase, titleCase,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), camelCase = ref.camelCase, titleCase = ref.titleCase, kebabCase = ref.kebabCase, snakeCase = ref.snakeCase;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref1, value;\n options || (options = {});\n this.allowSurrogateChars = options.allowSurrogateChars;\n this.noDoubleEncoding = options.noDoubleEncoding;\n this.textCase = options.textCase;\n ref1 = options.stringify || {};\n for (key in ref1) {\n if (!hasProp.call(ref1, key)) continue;\n value = ref1[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.eleName = function(val) {\n val = '' + val || '';\n val = this.applyCase(val);\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.eleText = function(val) {\n val = '' + val || '';\n return this.assertLegalChar(this.elEscape(val));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n val = '' + val || '';\n val = val.replace(']]>', ']]]]><![CDATA[>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attName = function(val) {\n val = '' + val || '';\n return val = this.applyCase(val);\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n val = '' + val || '';\n return this.attEscape(val);\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-]|-)*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (val != null) {\n return '' + val || '';\n } else {\n return val;\n }\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n return '' + val || '';\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var chars, chr;\n if (this.allowSurrogateChars) {\n chars = /[\\u0000-\\u0008\\u000B-\\u000C\\u000E-\\u001F\\uFFFE-\\uFFFF]/;\n } else {\n chars = /[\\u0000-\\u0008\\u000B-\\u000C\\u000E-\\u001F\\uD800-\\uDFFF\\uFFFE-\\uFFFF]/;\n }\n chr = str.match(chars);\n if (chr) {\n throw new Error(\"Invalid character (\" + chr + \") in string: \" + str + \" at index \" + chr.index);\n }\n return str;\n };\n\n XMLStringifier.prototype.applyCase = function(str) {\n switch (this.textCase) {\n case \"camel\":\n return camelCase(str);\n case \"title\":\n return titleCase(str);\n case \"kebab\":\n case \"lower\":\n return kebabCase(str);\n case \"snake\":\n return snakeCase(str);\n case \"upper\":\n return kebabCase(str).toUpperCase();\n default:\n return str;\n }\n };\n\n XMLStringifier.prototype.elEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\\r/g, '&#xD;');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n ampregex = this.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&amp;').replace(/</g, '&lt;').replace(/\"/g, '&quot;').replace(/\\t/g, '&#x9;').replace(/\\n/g, '&#xA;').replace(/\\r/g, '&#xD;');\n };\n\n return XMLStringifier;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLNode, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text\");\n }\n this.value = this.stringify.eleText(text);\n }\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.set(options).text(this);\n };\n\n return XMLText;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLWriterBase,\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLWriterBase = (function() {\n function XMLWriterBase(options) {\n var key, ref, ref1, ref2, ref3, ref4, value;\n options || (options = {});\n this.pretty = options.pretty || false;\n this.allowEmpty = (ref = options.allowEmpty) != null ? ref : false;\n if (this.pretty) {\n this.indent = (ref1 = options.indent) != null ? ref1 : ' ';\n this.newline = (ref2 = options.newline) != null ? ref2 : '\\n';\n this.offset = (ref3 = options.offset) != null ? ref3 : 0;\n } else {\n this.indent = '';\n this.newline = '';\n this.offset = 0;\n }\n ref4 = options.writer || {};\n for (key in ref4) {\n if (!hasProp.call(ref4, key)) continue;\n value = ref4[key];\n this[key] = value;\n }\n }\n\n XMLWriterBase.prototype.set = function(options) {\n var key, ref, value;\n options || (options = {});\n if (\"pretty\" in options) {\n this.pretty = options.pretty;\n }\n if (\"allowEmpty\" in options) {\n this.allowEmpty = options.allowEmpty;\n }\n if (this.pretty) {\n this.indent = \"indent\" in options ? options.indent : ' ';\n this.newline = \"newline\" in options ? options.newline : '\\n';\n this.offset = \"offset\" in options ? options.offset : 0;\n } else {\n this.indent = '';\n this.newline = '';\n this.offset = 0;\n }\n ref = options.writer || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n return this;\n };\n\n XMLWriterBase.prototype.space = function(level) {\n if (this.pretty) {\n return new Array((level || 0) + this.offset + 1).join(this.indent);\n } else {\n return '';\n }\n };\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.doctype(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n}).call(this);\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = wkt.AXIS[i];\n var descriptor = axis[0].toLowerCase();\n if (descriptor.indexOf('north') !== -1) {\n axisOrder += 'n';\n } else if (descriptor.indexOf('south') !== -1) {\n axisOrder += 's';\n } else if (descriptor.indexOf('east') !== -1) {\n axisOrder += 'e';\n } else if (descriptor.indexOf('west') !== -1) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\n var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calulated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_NODATUM} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n\n // Do we need to go through geocentric coordinates?\n if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source.es, source.a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n return geocentricToGeodetic(point, dest.es, dest.a, dest.b);\n\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\n case 's':\n out[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function (coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (this.es === undefined || this.es <= 0) {\n throw new Error('incorrect elliptical usage');\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {EPSLN, HALF_PI, FORTPI} from '../constants/values';\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n}\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n}\n\nexport function inverse(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","\nvar mode = {\n N_POLE: 0,\n S_POLE: 1,\n EQUIT: 2,\n OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7\n azi: { def: 0, num: true, degrees: true }, // default is North\n tilt: { def: 0, num: true, degrees: true }, // default is Nadir\n long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic\n lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n Object.keys(params).forEach(function (p) {\n if (typeof this[p] === \"undefined\") {\n this[p] = params[p].def;\n } else if (params[p].num && isNaN(this[p])) {\n throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n } else if (params[p].num) {\n this[p] = parseFloat(this[p]);\n }\n if (params[p].degrees) {\n this[p] = this[p] * D2R;\n }\n }.bind(this));\n\n if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n } else if (Math.abs(this.lat0) < EPSLN) {\n this.mode = mode.EQUIT;\n } else {\n this.mode = mode.OBLIQ;\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n\n this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius\n\n if (this.pn1 <= 0 || this.pn1 > 1e10) {\n throw new Error(\"Invalid height\");\n }\n \n this.p = 1 + this.pn1;\n this.rp = 1 / this.p;\n this.h1 = 1 / this.pn1;\n this.pfact = (this.p + 1) * this.h1;\n this.es = 0;\n\n var omega = this.tilt;\n var gamma = this.azi;\n this.cg = Math.cos(gamma);\n this.sg = Math.sin(gamma);\n this.cw = Math.cos(omega);\n this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n p.x -= this.long0;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var coslam = Math.cos(p.x);\n var x, y;\n switch (this.mode) {\n case mode.OBLIQ:\n y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y = cosphi * coslam;\n break;\n case mode.S_POLE:\n y = -sinphi;\n break;\n case mode.N_POLE:\n y = sinphi;\n break;\n }\n y = this.pn1 / (this.p - y);\n x = y * cosphi * Math.sin(p.x);\n\n switch (this.mode) {\n case mode.OBLIQ:\n y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y *= sinphi;\n break;\n case mode.N_POLE:\n y *= -(cosphi * coslam);\n break;\n case mode.S_POLE:\n y *= cosphi * coslam;\n break;\n }\n\n // Tilt \n var yt, ba;\n yt = y * this.cg + x * this.sg;\n ba = 1 / (yt * this.sw * this.h1 + this.cw);\n x = (x * this.cg - y * this.sg) * this.cw * ba;\n y = yt * ba;\n\n p.x = x * this.a;\n p.y = y * this.a;\n return p;\n}\n\nexport function inverse(p) {\n p.x /= this.a;\n p.y /= this.a;\n var r = { x: p.x, y: p.y };\n\n // Un-Tilt\n var bm, bq, yt;\n yt = 1 / (this.pn1 - p.y * this.sw);\n bm = this.pn1 * p.x * yt;\n bq = this.pn1 * p.y * this.cw * yt;\n p.x = bm * this.cg + bq * this.sg;\n p.y = bq * this.cg - bm * this.sg;\n\n var rh = hypot(p.x, p.y);\n if (Math.abs(rh) < EPSLN) {\n r.x = 0;\n r.y = p.y;\n } else {\n var cosz, sinz;\n sinz = 1 - rh * rh * this.pfact;\n sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n cosz = Math.sqrt(1 - sinz * sinz);\n switch (this.mode) {\n case mode.OBLIQ:\n r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n p.x *= sinz * this.cosph0;\n break;\n case mode.EQUIT:\n r.y = Math.asin(p.y * sinz / rh);\n p.y = cosz * rh;\n p.x *= sinz;\n break;\n case mode.N_POLE:\n r.y = Math.asin(cosz);\n p.y = -p.y;\n break;\n case mode.S_POLE:\n r.y = -Math.asin(cosz);\n break;\n }\n r.x = Math.atan2(p.x, p.y);\n }\n\n p.x = r.x + this.long0;\n p.y = r.y;\n return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n proj4.Proj.projections.add(tpers);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","import proj4 from 'proj4';\n// Development tools\n// Map application with coordinates projection\n// https://dominoc925-pages.appspot.com/mapplets/cs_ecef.html\n// The World coordinates converter\n// https://twcc.fr/#\nexport const Projections = [\n {\n title: \"RGF93 (Lambert-93)\",\n url: \"http://spatialreference.org/ref/epsg/rgf93-lambert-93/\",\n code: \"EPSG:2154\",\n proj4: \"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC50)\",\n code: \"EPSG:3950\",\n url: \"http://spatialreference.org/ref/epsg/3950/\",\n proj4: \"+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC49)\",\n code: \"EPSG:3949\",\n url: \"http://spatialreference.org/ref/epsg/3949/\",\n proj4: \"+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC48)\",\n code: \"EPSG:3948\",\n url: \"http://spatialreference.org/ref/epsg/3948/\",\n proj4: \"+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC47)\",\n code: \"EPSG:3947\",\n url: \"http://spatialreference.org/ref/epsg/3947/\",\n proj4: \"+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC46)\",\n code: \"EPSG:3946\",\n url: \"http://spatialreference.org/ref/epsg/3946/\",\n proj4: \"+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC45)\",\n code: \"EPSG:3945\",\n url: \"http://spatialreference.org/ref/epsg/3945/\",\n proj4: \"+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC44)\",\n code: \"EPSG:3944\",\n url: \"http://spatialreference.org/ref/epsg/3944/\",\n proj4: \"+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"NTF (Lambert II)\",\n code: \"EPSG:27572\",\n url: \"http://spatialreference.org/ref/epsg/27572/\",\n proj4: \"+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs\"\n },\n {\n title: \"NTF (Lambert III)\",\n code: \"EPSG:27573\",\n url: \"http://spatialreference.org/ref/epsg/27573/\",\n proj4: \"+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs\"\n },\n {\n title: \"NTF\",\n code: \"EPSG:4275\",\n url: \"http://spatialreference.org/ref/epsg/4275/\",\n proj4: \"+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs\"\n },\n {\n title: \"WGS84\",\n code: \"EPSG:4326\",\n url: \"https://epsg.io/4326\",\n proj4: \"+proj=longlat +datum=WGS84 +no_defs\"\n }\n];\nexport const Proj4Defs = Projections.map(p => [p.code, p.proj4]);\nproj4.defs(Proj4Defs);\nexport function project(from, to, y, x) {\n console.log(`Projecting coordinates '${x},${y}' from '${from}' to '${to}'`);\n const coords = proj4(from, to, [x, y]);\n return { x: coords[0], y: coords[1] };\n}\n;\n// Voir https://geodesie.ign.fr/contenu/fichiers/documentation/pedagogiques/TransformationsCoordonneesGeodesiques.pdf\nexport const WGS84Ellipsoid = createEllipsoid(6378137, 1 / 298.257223563);\nfunction createEllipsoid(a, f) {\n const b = a * (1 - f);\n const asqr = a * a;\n const bsqr = b * b;\n const e = Math.sqrt((asqr - bsqr) / asqr);\n const eprime = Math.sqrt((asqr - bsqr) / bsqr);\n return { a, f, b, e, bsqr, asqr, eprime };\n}\nfunction degrees(angle) {\n return angle * (180 / Math.PI);\n}\nexport function XYZtoLLA(x, y, z, ellipsoid) {\n const p = Math.sqrt(x * x + y * y);\n const theta = Math.atan((z * ellipsoid.a) / (p * ellipsoid.b));\n const sintheta = Math.sin(theta);\n const costheta = Math.cos(theta);\n const num = z + ellipsoid.eprime * ellipsoid.eprime * ellipsoid.b * sintheta * sintheta * sintheta;\n const denom = p - ellipsoid.e * ellipsoid.e * ellipsoid.a * costheta * costheta * costheta;\n const lat = Math.atan(num / denom);\n let lon = Math.atan(y / x);\n const n = getN(lat, ellipsoid);\n const alt = (p / Math.cos(lat)) - n;\n if (x < 0 && y < 0) {\n lon = lon - Math.PI;\n }\n if (x < 0 && y > 0) {\n lon = lon + Math.PI;\n }\n return { latitude: degrees(lat), longitude: degrees(lon), altitude: alt };\n}\nfunction getN(lat, ellipsoid) {\n const sinlat = Math.sin(lat);\n const denom = Math.sqrt(1 - ellipsoid.e * ellipsoid.e * sinlat * sinlat);\n const n = ellipsoid.a / denom;\n return n;\n}\nexport function LLAtoXYZ(latitude, longitude, altitude, ellipsoid) {\n const cosLat = Math.cos(latitude * Math.PI / 180.0);\n const sinLat = Math.sin(latitude * Math.PI / 180.0);\n const cosLon = Math.cos(longitude * Math.PI / 180.0);\n const sinLon = Math.sin(longitude * Math.PI / 180.0);\n const rad = ellipsoid.a;\n const f = ellipsoid.f;\n const C = 1.0 / Math.sqrt(cosLat * cosLat + (1 - f) * (1 - f) * sinLat * sinLat);\n const S = (1.0 - f) * (1.0 - f) * C;\n const h = altitude;\n const x = (rad * C + h) * cosLat * cosLon;\n const y = (rad * C + h) * cosLat * sinLon;\n const z = (rad * S + h) * sinLat;\n return { x, y, z };\n}\n","import randomColor from 'randomcolor';\nimport { polygon } from '@turf/helpers';\nexport function getProp(obj, ...props) {\n if (props.length === 0)\n throw new Error(\"You must at least provide one property.\");\n const prop = props.shift();\n const exists = obj.hasOwnProperty(prop);\n if (props.length === 0) {\n return exists ? obj[prop] : undefined;\n }\n if (obj[prop] === undefined) {\n return undefined;\n }\n return getProp(obj[prop], ...props);\n}\nexport function parseSequence(str) {\n return str.replace(/\\r?\\n?\\t?/g, '').split(' ');\n}\nconst colors = {};\nexport function getColor(key, opts) {\n if (key in colors) {\n return colors[key];\n }\n const color = randomColor(opts);\n colors[key] = color;\n return color;\n}\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\nexport function circleToPolygon(center, radius, numberOfSegments, properties) {\n const n = numberOfSegments ? numberOfSegments : 32;\n const flatCoordinates = [];\n const coordinates = [];\n for (var i = 0; i < n; ++i) {\n flatCoordinates.push(...offset(center, radius, 2 * Math.PI * i / n));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n for (let i = 0, j = 0; j < flatCoordinates.length; j += 2) {\n coordinates[i++] = flatCoordinates.slice(j, j + 2);\n }\n return polygon([coordinates.reverse()], properties);\n}\n;\nexport function offset(c1, distance, bearing) {\n const lat1 = toRadians(c1[1]);\n const lon1 = toRadians(c1[0]);\n const dByR = distance / 6378137; // distance divided by 6378137 (radius of the earth) wgs84\n const lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n const lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) throw new Error('geojson is required');\n\n switch (geojson.type) {\n case 'Feature':\n return cloneFeature(geojson);\n case 'FeatureCollection':\n return cloneFeatureCollection(geojson);\n case 'Point':\n case 'LineString':\n case 'Polygon':\n case 'MultiPoint':\n case 'MultiLineString':\n case 'MultiPolygon':\n case 'GeometryCollection':\n return cloneGeometry(geojson);\n default:\n throw new Error('unknown GeoJSON type');\n }\n}\n\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = {type: 'Feature'};\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'properties':\n case 'geometry':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) return cloned;\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === 'object') {\n if (value === null) {\n // handle null\n cloned[key] = null;\n } else if (value.length) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n } else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n } else cloned[key] = value;\n });\n return cloned;\n}\n\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = {type: 'FeatureCollection'};\n\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'features':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = {type: geometry.type};\n if (geometry.bbox) geom.bbox = geometry.bbox;\n\n if (geometry.type === 'GeometryCollection') {\n geom.geometries = geometry.geometries.map(function (geom) {\n return cloneGeometry(geom);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n if (typeof coords[0] !== 'object') { return coords.slice(); }\n return coords.map(function (coord) {\n return deepSlice(coord);\n });\n}\n\nexport default clone;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { convertLength, degreesToRadians, earthRadius, isObject, point } from '@turf/helpers';\nimport { getCoord } from '@turf/invariant';\n\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature<Point>} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */\nfunction rhumbDestination(origin, distance, bearing, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var properties = options.properties;\n\n // validation\n if (!origin) throw new Error('origin is required');\n if (distance === undefined || distance === null) throw new Error('distance is required');\n if (bearing === undefined || bearing === null) throw new Error('bearing is required');\n if (!(distance >= 0)) throw new Error('distance must be greater than 0');\n\n var distanceInMeters = convertLength(distance, units, 'meters');\n var coords = getCoord(origin);\n var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);\n\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += (destination[0] - coords[0] > 180) ? -360 : (coords[0] - destination[0] > 180) ? 360 : 0;\n return point(destination, properties);\n}\n\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param {Array<number>} origin - point\n * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param {number} bearing - Bearing in degrees from north.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array<number>} Destination point.\n */\nfunction calculateRhumbDestination(origin, distance, bearing, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n\n radius = (radius === undefined) ? earthRadius : Number(radius);\n\n var delta = distance / radius; // angular distance in radians\n var lambda1 = origin[0] * Math.PI / 180; // to radians, but without normalize to 𝜋\n var phi1 = degreesToRadians(origin[1]);\n var theta = degreesToRadians(bearing);\n\n var DeltaPhi = delta * Math.cos(theta);\n var phi2 = phi1 + DeltaPhi;\n\n // check for some daft bugger going past the pole, normalise latitude if so\n if (Math.abs(phi2) > Math.PI / 2) phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1); // E-W course becomes ill-conditioned with 0/0\n\n var DeltaLambda = delta * Math.sin(theta) / q;\n var lambda2 = lambda1 + DeltaLambda;\n\n return [((lambda2 * 180 / Math.PI) + 540) % 360 - 180, phi2 * 180 / Math.PI]; // normalise to 180..+180°\n}\n\nexport default rhumbDestination;\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { coordEach } from '@turf/meta';\nimport { isObject } from '@turf/helpers';\nimport { getCoords } from '@turf/invariant';\nimport clone from '@turf/clone';\nimport rhumbDestination from '@turf/rhumb-destination';\n\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformTranslate(geojson, distance, direction, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var zTranslation = options.zTranslation;\n var mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n if (distance === undefined || distance === null || isNaN(distance)) throw new Error('distance is required');\n if (zTranslation && typeof zTranslation !== 'number' && isNaN(zTranslation)) throw new Error('zTranslation is not a number');\n\n // Shortcut no-motion\n zTranslation = (zTranslation !== undefined) ? zTranslation : 0;\n if (distance === 0 && zTranslation === 0) return geojson;\n\n if (direction === undefined || direction === null || isNaN(direction)) throw new Error('direction is required');\n\n // Invert with negative distances\n if (distance < 0) {\n distance = -distance;\n direction = -direction;\n }\n\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = clone(geojson);\n\n // Translate each coordinate\n coordEach(geojson, function (pointCoords) {\n var newCoords = getCoords(rhumbDestination(pointCoords, distance, direction, {units: units}));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n if (zTranslation && pointCoords.length === 3) pointCoords[2] += zTranslation;\n });\n return geojson;\n}\n\nexport default transformTranslate;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { getProp, parseSequence, getColor, circleToPolygon } from './util';\nimport { point, lineString, polygon } from '@turf/helpers';\nimport transformTranslate from '@turf/transform-translate';\nimport clone from '@turf/clone';\nimport proj4 from 'proj4';\nexport const LANDXML_PIPE_NETWORK_PIPE = 'pipe_network_pipe';\nexport const LANDXML_PIPE_NETWORK_STRUCT = 'pipe_network_struct';\nexport function convertPipeNetworks(xmlObj, projection, opts) {\n const features = [];\n const pipeNetworksNodes = getProp(xmlObj, \"LandXML\", \"PipeNetworks\");\n if (!pipeNetworksNodes)\n return features;\n pipeNetworksNodes.forEach(pn => {\n const pipeNetworkNodes = getProp(pn, \"PipeNetwork\");\n if (!Array.isArray(pipeNetworkNodes))\n return;\n let structs = {};\n pipeNetworkNodes.forEach(pn => {\n const baseProps = {\n name: pn.$.name,\n description: pn.$.desc,\n \"stroke-width\": 0.1,\n \"fill-opacity\": 0.5,\n };\n const localStructs = convertStructs(pn, projection, baseProps, opts);\n features.push(...Object.values(localStructs).map(s => s.geometry));\n Object.assign(structs, localStructs);\n });\n pipeNetworkNodes.forEach(pn => {\n const baseProps = {\n name: pn.$.name,\n description: pn.$.desc,\n landxmlType: LANDXML_PIPE_NETWORK_PIPE,\n \"stroke-width\": 1,\n \"fill-opacity\": 1,\n };\n const pipes = convertPipes(pn, structs, projection, baseProps, opts);\n features.push(...pipes);\n });\n });\n return features;\n}\nfunction convertPipes(pipeNetwork, structs, projection, baseProps, opts) {\n const pipes = [];\n const pipeNodes = getProp(pipeNetwork, \"Pipes\", 0, \"Pipe\");\n if (!Array.isArray(pipeNodes))\n return;\n pipeNodes.forEach(p => {\n const circPipeNode = getProp(p, \"CircPipe\", 0);\n const name = baseProps.name ? baseProps.name + ' - ' + p.$.name : p.$.name;\n const featureProps = Object.assign({}, baseProps, {\n name: name,\n description: baseProps.description ? baseProps.description + ' - ' + p.$.desc : p.$.desc,\n stroke: getColor(`pipe-network-pipe-${name}`, opts.colorOpts)\n });\n if (circPipeNode !== undefined) {\n const attrs = circPipeNode.$;\n if ('diameter' in attrs)\n featureProps.landxmlDiameter = parseFloat(attrs.diameter);\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n }\n const refStart = structs[p.$.refStart];\n const refEnd = structs[p.$.refEnd];\n if (!refStart)\n throw new Error(`Cannot find pipe \"${featureProps.name}\" refStart \"${p.$.refStart}\" !`);\n if (!refEnd)\n throw new Error(`Cannot find pipe \"${featureProps.name}\" refEnd \"${p.$.refEnd}\" !`);\n const pipe = lineString([\n refStart.center,\n refEnd.center,\n ], featureProps);\n pipes.push(pipe);\n });\n return pipes;\n}\nfunction convertStructs(pipeNetwork, projection, baseProps, opts) {\n const structs = {};\n const structNodes = getProp(pipeNetwork, \"Structs\", 0, \"Struct\");\n if (!Array.isArray(structNodes))\n return;\n structNodes.forEach(s => {\n const centerNode = getProp(s, \"Center\", 0);\n const rectStructNode = getProp(s, \"RectStruct\", 0);\n const circStructNode = getProp(s, \"CircStruct\", 0);\n const inletStructNode = getProp(s, \"InletStruct\", 0);\n const outletStructNode = getProp(s, \"OutletStruct\", 0);\n const connectionNode = getProp(s, \"Connection\", 0);\n const structType = rectStructNode !== undefined ? \"rect\" : ((circStructNode !== undefined ? \"circ\" :\n (inletStructNode !== undefined ? \"inlet\" :\n (outletStructNode !== undefined ? \"outlet\" :\n (connectionNode !== undefined ? \"connection\" :\n (null))))));\n const name = baseProps.name ? baseProps.name + ' - ' + s.$.name : s.$.name;\n const featureProps = Object.assign({}, baseProps, {\n name: name,\n description: baseProps.description ? baseProps.description + ' - ' + s.$.desc : s.$.desc,\n landxmlType: LANDXML_PIPE_NETWORK_STRUCT,\n landxmlStruct: structType,\n landxmlElevRim: 'elevRim' in s.$ ? parseFloat(s.$.elevRim) : undefined,\n landxmlElevSump: 'elevSump' in s.$ ? parseFloat(s.$.elevSump) : undefined,\n fill: getColor(`pipe-network-struct-${name}`, opts.colorOpts)\n });\n if (circStructNode !== undefined) {\n const attrs = circStructNode.$;\n if ('diameter' in attrs)\n featureProps.landxmlDiameter = parseFloat(attrs.diameter);\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n }\n if (rectStructNode !== undefined) {\n const attrs = rectStructNode.$;\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n if ('length' in attrs)\n featureProps.landxmlLength = parseFloat(attrs.length);\n if ('width' in attrs)\n featureProps.landxmlWidth = parseFloat(attrs.width);\n }\n // Parse and convert center coordinates\n const seq = parseSequence(centerNode).map(v => parseFloat(v));\n let center = [seq[1], seq[0]];\n center = proj4(projection, 'WGS84', center);\n let geometry;\n if (rectStructNode) {\n const length = featureProps.length ? featureProps.length : 1;\n const width = featureProps.width ? featureProps.width : 1;\n geometry = squareAround(center, length, width, 'meters', featureProps);\n }\n else {\n const diameter = featureProps.landxmlDiameter ? featureProps.landxmlDiameter : 1;\n geometry = circleToPolygon(center, diameter / 2, 128, featureProps);\n }\n if (!geometry) {\n throw new Error(\"Unsupported struct type\");\n }\n ;\n structs[s.$.name] = { geometry, center };\n });\n return structs;\n}\nfunction squareAround(centerCoords, length, width, units, properties) {\n const center = point(centerCoords);\n const northEast = clone(center);\n transformTranslate(northEast, width / 2, 270, { units, mutate: true });\n transformTranslate(northEast, length / 2, 0, { units, mutate: true });\n const northWest = clone(center);\n transformTranslate(northWest, width / 2, 90, { units, mutate: true });\n transformTranslate(northWest, length / 2, 0, { units, mutate: true });\n const southWest = clone(center);\n transformTranslate(southWest, width / 2, 90, { units, mutate: true });\n transformTranslate(southWest, length / 2, 180, { units, mutate: true });\n const southEast = clone(center);\n transformTranslate(southEast, width / 2, 270, { units, mutate: true });\n transformTranslate(southEast, length / 2, 180, { units, mutate: true });\n const points = [\n northEast.geometry.coordinates, northWest.geometry.coordinates,\n southWest.geometry.coordinates, southEast.geometry.coordinates,\n northEast.geometry.coordinates\n ];\n return polygon([points], properties);\n}\n","//////////////////////////\nimport xml2js from 'react-native-xml2js';\n/////////\n////////////////////////////\n//////////\nimport { featureCollection } from '@turf/helpers';\nimport area from '@turf/area';\nimport proj4 from 'proj4';\nimport { Proj4Defs } from './projection';\nimport { getProp } from './util';\nimport { convertSurfaces } from './surface';\nimport { convertParcels } from './parcel';\nimport { convertPipeNetworks } from './pipe-network';\nexport const PROJECTION_AUTO_DETECT = 'auto_detect';\nexport const CONVERT_SURFACES = 'surfaces';\nexport const CONVERT_PARCELS = 'parcels';\nexport const CONVERT_PIPE_NETWORKS = 'pipe_networks';\nconst converters = {\n [CONVERT_PARCELS]: convertParcels,\n [CONVERT_SURFACES]: convertSurfaces,\n [CONVERT_PIPE_NETWORKS]: convertPipeNetworks,\n};\n// Based on alexgleith's preliminary work\n// github.com/alexgleith/land-xml-to-geojson\nexport class Converter {\n constructor() {\n this.defaultOptions = {\n projection: PROJECTION_AUTO_DETECT,\n enabledConverters: [CONVERT_SURFACES, CONVERT_PARCELS, CONVERT_PIPE_NETWORKS],\n parser: {\n normalize: true\n },\n proj4Defs: [\n [\n \"EPSG:28355\",\n \"+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\",\n ],\n ...Proj4Defs,\n ],\n featureMapper: (feature, opts) => feature,\n colorOpts: {\n hue: 'monochrome',\n luminosity: 'dark',\n seed: 1,\n },\n };\n }\n toGeoJSON(xml, opts = {}) {\n const parserOptions = Object.assign({}, this.defaultOptions.parser, opts.parser);\n const parser = new xml2js.Parser(parserOptions);\n this.configureProj4(opts.proj4Defs);\n return new Promise((resolve, reject) => {\n parser.parseString(xml, (err, xmlObj) => {\n if (err)\n return reject(err);\n let geojson;\n try {\n geojson = this.convertToGeoJSON(xmlObj, opts);\n }\n catch (err) {\n return reject(err);\n }\n return resolve(geojson);\n });\n });\n }\n convertToGeoJSON(xmlObj, opts = {}) {\n const options = Object.assign({}, this.defaultOptions, opts);\n // Use specified projection or try to find one in the LandXML file\n const projection = this.getLandXMLProjection(xmlObj, options.projection || this.defaultOptions.projection);\n if (!projection)\n throw new Error(\"Source projection can not be found !\");\n // List enabled converters\n const enabledConverters = Array.isArray(opts.enabledConverters) ?\n opts.enabledConverters :\n this.defaultOptions.enabledConverters;\n let features = [];\n // Convert LandXML entities to GeoJSON features\n enabledConverters.forEach(c => {\n if (!(c in converters))\n return;\n console.log(\"Executing convert '%s'...\", c);\n const newFeatures = converters[c](xmlObj, projection, options);\n features.push(...newFeatures);\n });\n // Apply features mapper function if defined\n if (typeof options.featureMapper === 'function') {\n features = features.map(f => {\n return options.featureMapper(f, options);\n });\n }\n // Sort feature by reverse area\n // to ease rendering\n features.sort((a, b) => {\n if (area(a) > area(b))\n return -1;\n if (area(a) < area(b))\n return 1;\n return 0;\n });\n // Return extracted features as a feature collection\n return featureCollection(features);\n }\n configureProj4(additionalProj4Defs) {\n const proj4Defs = this.defaultOptions.proj4Defs.slice(0);\n if (Array.isArray(additionalProj4Defs))\n proj4Defs.push(...additionalProj4Defs);\n proj4.defs(proj4Defs);\n }\n getLandXMLProjection(xmlObj, manualProjection) {\n if (manualProjection !== PROJECTION_AUTO_DETECT)\n return manualProjection;\n let projection = null;\n if (!projection)\n projection = this.findUTMProjection(xmlObj);\n return projection;\n }\n findUTMProjection(xmlObj) {\n const projection = getProp(xmlObj, \"LandXML\", \"CoordinateSystem\", 0, \"$\", \"datum\");\n const zone = getProp(xmlObj, \"LandXML\", \"CgPoints\", 0, \"$\", \"zoneNumber\");\n let utmProjection = null;\n if (projection && zone) {\n utmProjection = `+proj=utm +zone=${zone} +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs `;\n }\n return utmProjection;\n }\n}\n","import { getProp, parseSequence } from './util';\nimport { polygon } from '@turf/helpers';\nimport proj4 from 'proj4';\nexport const LANDXML_PARCEL = 'parcel';\nexport function convertParcels(xmlObj, projection, opts) {\n const originalPoints = getProp(xmlObj, \"LandXML\", \"CgPoints\", 0, \"CgPoint\");\n const originalParcels = getProp(xmlObj, \"LandXML\", \"Parcels\", 0, \"Parcel\");\n const points = {};\n const polygons = [];\n // Parse out the points\n for (let pt in originalPoints) {\n const opt = originalPoints[pt];\n const name = opt.$.name.replace(/ /g, '');\n let coords = parseSequence(opt._).map(coord => parseFloat(coord));\n coords = [coords[1], coords[0]];\n coords = proj4(projection, 'WGS84', coords);\n points[name] = coords;\n }\n // Parse out the parcels\n for (let pc in originalParcels) {\n var opc = originalParcels[pc];\n var geom = opc.CoordGeom;\n if (geom !== undefined) {\n let coords = [];\n // Need to store the start to add at the end\n var endCoord = null;\n var origCoords = opc.CoordGeom[0].Line;\n for (let oc in origCoords) {\n // VERY important note. This code does NOT handle the other two types\n // of coordinate definitions, curves and irregular lines. TODO: fixme.\n var start = origCoords[oc].Start[0].$.pntRef;\n // We don't use the end (it probably should be checked, because if the end isn't the start)\n var end = origCoords[oc].End[0].$.pntRef;\n var startPoint = points[start];\n if (!startPoint) {\n // console.log('Failed to get start point', start, startPoint)\n }\n else {\n // Start creating the polygon\n coords.push(points[start]);\n if (!endCoord) {\n // Store the first coord, to put back on to close the polygon\n endCoord = points[start];\n }\n }\n }\n if (coords.length > 2) {\n coords.push(endCoord);\n coords = [coords];\n // name=\"101\" class=\"Lot\" state=\"proposed\" parcelType=\"Single\"\n var parameters = {\n name: opc.$.name,\n landxmlClass: opc.$.class,\n landxmlState: opc.$.state,\n landxmlParcelType: opc.$.parcelType,\n landxmlType: LANDXML_PARCEL,\n };\n polygons.push(polygon(coords, parameters));\n }\n else {\n // console.log(\"Couldn't create a polygon because we found less than 2 coords\")\n }\n }\n else {\n // console.log(\"No geometry\")\n }\n }\n return polygons;\n}\n","import { getProp, parseSequence, getColor } from './util';\nimport { polygon } from '@turf/helpers';\nimport union from '@turf/union';\nimport proj4 from 'proj4';\nexport const LANDXML_SURFACE = 'surface';\nexport function convertSurfaces(xmlObj, projection, opts) {\n const features = [];\n const surfacesContainerNodes = getProp(xmlObj, \"LandXML\", \"Surfaces\");\n if (!surfacesContainerNodes)\n return features;\n surfacesContainerNodes.forEach(sc => {\n const attrs = (sc.$ || {});\n const baseProps = {\n name: attrs.name || \"\",\n description: attrs.desc,\n };\n const surfaceNodes = getProp(sc, \"Surface\");\n if (!Array.isArray(surfaceNodes))\n return;\n surfaceNodes.forEach(s => {\n const name = baseProps.name ? (baseProps.name + ' - ' + s.$.name) : s.$.name;\n const description = baseProps.description ? (baseProps.description + ' - ' + s.$.desc) : s.$.desc;\n const featureProps = {\n name: name,\n description: description,\n landxmlType: LANDXML_SURFACE,\n \"stroke-width\": 0,\n \"color\": \"transparent\",\n \"fill\": getColor(`surface-${name}`, opts.colorOpts),\n \"fill-opacity\": 0.3,\n };\n let surfaceFeatures = convertBoundaries(s, projection, featureProps, opts);\n if (surfaceFeatures.length !== 0) {\n features.push(...surfaceFeatures);\n }\n else {\n surfaceFeatures = convertFaces(s, projection, featureProps, opts);\n let merged = surfaceFeatures[0];\n console.error(\"Applying union to %s faces (%d faces to merge)\", merged.properties.name, surfaceFeatures.length);\n for (let i = 1; i < surfaceFeatures.length - 1; i++) {\n const next = surfaceFeatures[i + 1];\n if (!next)\n return;\n try {\n merged = union(merged, next);\n }\n catch (err) {\n console.error(\"--> Could not apply union to %s (#%d)\", next.properties.name, i + 1);\n // Ignore\n }\n }\n merged.properties = featureProps;\n features.push(merged);\n }\n });\n });\n return features;\n}\nfunction convertFaces(surface, projection, featureProps, opts) {\n const pointNodes = getProp(surface, \"Definition\", 0, \"Pnts\", 0, \"P\");\n const faceNodes = getProp(surface, \"Definition\", 0, \"Faces\", 0, \"F\");\n const points = {};\n pointNodes.forEach(p => {\n let pointCoords = parseSequence(p._).map(v => parseFloat(v));\n pointCoords = [pointCoords[1], pointCoords[0]];\n pointCoords = proj4(projection, 'WGS84', pointCoords);\n const pointId = p.$.id;\n points[pointId] = { name: p.$.name, coords: pointCoords };\n });\n const faces = [];\n faceNodes.forEach(f => {\n const pointIds = parseSequence(f);\n const coords = [];\n pointIds.forEach(id => {\n const p = points[id];\n coords.push(p.coords);\n });\n coords.push(points[pointIds[0]].coords);\n faces.push(polygon([coords], featureProps));\n });\n return [...faces];\n}\nfunction convertBoundaries(surface, projection, featureProps, opts) {\n const boundaryNodes = getProp(surface, \"SourceData\", 0, \"Boundaries\", 0, \"Boundary\");\n if (!boundaryNodes)\n return [];\n const polygons = [];\n boundaryNodes.forEach(boundary => {\n const pntList3DNode = getProp(boundary, 'PntList3D', 0);\n const seq = parseSequence(pntList3DNode).map(p => parseFloat(p));\n const coords = [];\n for (let i = 0; i < seq.length; i += 3) {\n let c = [seq[i + 1], seq[i]];\n c = proj4(projection, 'WGS84', c);\n coords.push(c);\n }\n coords.push(coords[0]);\n polygons.push(polygon([coords], featureProps));\n });\n return polygons;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\n__webpack_require__(6007);\nreturn __webpack_require__(4237);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};"],"sourceRoot":""}