@cortex-js/compute-engine 0.129.0 → 0.129.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm-min/chunks/{chunk-RKFNDUDQ.js → chunk-75MH3VS7.js} +3 -3
- package/dist/esm-min/chunks/{chunk-3XFZFOXD.js → chunk-S6UB43FH.js} +1 -1
- package/dist/esm-min/cli/epsil.js +1 -1
- package/dist/esm-min/compile.js +2 -2
- package/dist/esm-min/compute-engine.js +2 -2
- package/dist/esm-min/core.js +2 -2
- package/dist/esm-min/epsil.js +3 -3
- package/dist/esm-min/identities.js +2 -2
- package/dist/esm-min/integration-rules.js +3 -3
- package/dist/esm-min/interval.js +2 -2
- package/dist/esm-min/latex-syntax.js +2 -2
- package/dist/esm-min/math-json.js +2 -2
- package/dist/esm-min/numerics.js +2 -2
- package/dist/types/big-decimal/big-decimal.d.ts +1 -1
- package/dist/types/big-decimal/index.d.ts +1 -1
- package/dist/types/big-decimal/transcendentals.d.ts +1 -1
- package/dist/types/big-decimal/utils.d.ts +1 -1
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/cache-stats.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/debug-hook.d.ts +1 -1
- package/dist/types/common/debug.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/kleene.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +1 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/styled-text.d.ts +1 -1
- package/dist/types/common/terminal.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/compatibility.d.ts +1 -1
- package/dist/types/common/type/conditional-conformance.d.ts +1 -1
- package/dist/types/common/type/effects.d.ts +1 -1
- package/dist/types/common/type/facts.d.ts +1 -1
- package/dist/types/common/type/immutable.d.ts +1 -1
- package/dist/types/common/type/instantiate.d.ts +1 -1
- package/dist/types/common/type/intern.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/numeric-range.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/reference.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/size-cap.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/type/variance.d.ts +1 -1
- package/dist/types/common/type/widen-value.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ambient-chain.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/async-only-descendants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/binders.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/binding-sites.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/binding-tombstone.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-character.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-object.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/broadcast-cell-widening.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/broadcast-lift-type.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/call-result-type.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/callback-arity.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/collection-element-memo.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/conditional-value.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/cycle-guard.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/definition-guards.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/derive-application-type.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/diophantine.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/effects-inference.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/effects-of.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/effects-provenance.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/error-value.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/exp-to-trig.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/explain-labels.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/explain.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/function-literal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/generic-instantiation.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/inferred-annotations.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/infinite-point.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/literal-tier.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/logarithm.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/machine-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match-dispatch.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/modular-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/multivariate-gcd.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/multivariate-poly.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/named-arguments.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/number-set-types.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/object-deps.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/object-walk.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/operand-descriptor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/overload.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/provisional-application.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/recursive-list-builder.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-congruence.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-domain.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-system.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/tensor-view.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/tuple-pattern.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-compatibility-error.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-provenance.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/value-membership.d.ts +1 -1
- package/dist/types/compute-engine/checkpoint-journal.d.ts +1 -1
- package/dist/types/compute-engine/checkpoint.d.ts +1 -1
- package/dist/types/compute-engine/clause-identity.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/angular-unit.d.ts +1 -1
- package/dist/types/compute-engine/compilation/auto-escalation.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/builtin-callback.d.ts +1 -1
- package/dist/types/compute-engine/compilation/color-space-fact.d.ts +1 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
- package/dist/types/compute-engine/compilation/cse.d.ts +1 -1
- package/dist/types/compute-engine/compilation/deprecation-warnings.d.ts +1 -1
- package/dist/types/compute-engine/compilation/derivative-closed-form.d.ts +1 -1
- package/dist/types/compute-engine/compilation/diagnostics.d.ts +1 -1
- package/dist/types/compute-engine/compilation/fixed-width-unroll.d.ts +1 -1
- package/dist/types/compute-engine/compilation/function-purity.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-value-facts.d.ts +1 -1
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-selection-fusion.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-statements.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/javascript-value-facts.d.ts +1 -1
- package/dist/types/compute-engine/compilation/jet-derivative.d.ts +1 -1
- package/dist/types/compute-engine/compilation/protocol-dispatch.d.ts +1 -1
- package/dist/types/compute-engine/compilation/provable-kind.d.ts +1 -1
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/storage-hints.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +1 -1
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/declaration-origin.d.ts +1 -1
- package/dist/types/compute-engine/differential-equation-utils.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-boxing-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-inspectable-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
- package/dist/types/compute-engine/engine-protocols.d.ts +1 -1
- package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/free-functions.d.ts +1 -1
- package/dist/types/compute-engine/function-properties/index.d.ts +1 -1
- package/dist/types/compute-engine/function-properties/types.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/fungrim/loader.d.ts +1 -1
- package/dist/types/compute-engine/fungrim/types.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/implicit-compile.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +1 -1
- package/dist/types/compute-engine/inference-rollback.d.ts +1 -1
- package/dist/types/compute-engine/interpret-oeis.d.ts +1 -1
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/collections.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- package/dist/types/compute-engine/interval/integrate.d.ts +1 -1
- package/dist/types/compute-engine/interval/rounding.d.ts +1 -1
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/delimiter-tables.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/style-options.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/distributions.d.ts +1 -1
- package/dist/types/compute-engine/library/fractals.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/map-auto-compile.d.ts +1 -1
- package/dist/types/compute-engine/library/map-broadcast-shape.d.ts +1 -1
- package/dist/types/compute-engine/library/map-exact-proof.d.ts +1 -1
- package/dist/types/compute-engine/library/map-lowering.d.ts +1 -1
- package/dist/types/compute-engine/library/measurement-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/missing-data.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/random-utils.d.ts +1 -1
- package/dist/types/compute-engine/library/regexp.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/ring-constructions.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics-data.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/type-value-utils.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- package/dist/types/compute-engine/map-auto-compile-stats.d.ts +1 -1
- package/dist/types/compute-engine/multi-clause.d.ts +1 -1
- package/dist/types/compute-engine/nonlinear-fit.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-integer-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bernoulli.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/complex-esm-augment.d.ts +1 -1
- package/dist/types/compute-engine/numerics/differential-equations.d.ts +1 -1
- package/dist/types/compute-engine/numerics/diophantine.d.ts +1 -1
- package/dist/types/compute-engine/numerics/distributions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/gauss-kronrod.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/levenberg-marquardt.d.ts +1 -1
- package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/oscillatory-quadrature.d.ts +1 -1
- package/dist/types/compute-engine/numerics/polynomial-roots.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/random.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/numerics/value-scaled-caps.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/rubi/compile.d.ts +1 -1
- package/dist/types/compute-engine/rubi/driver.d.ts +1 -1
- package/dist/types/compute-engine/rubi/explain-trace.d.ts +1 -1
- package/dist/types/compute-engine/rubi/loader.d.ts +1 -1
- package/dist/types/compute-engine/rubi/match.d.ts +1 -1
- package/dist/types/compute-engine/rubi/normal-form.d.ts +1 -1
- package/dist/types/compute-engine/rubi/rubi-utils.d.ts +1 -1
- package/dist/types/compute-engine/rubi/types.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/sum-representation.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/angular-unit.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/differential-equations.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/explain-derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/interior-pole.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/interpret.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/limit.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/recurrences.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/residue.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/series.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/solver-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/trig-rewrite.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- package/dist/types/compute-engine/type-constructors.d.ts +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +1 -1
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/epsil/characters.d.ts +1 -1
- package/dist/types/epsil/definition-sites.d.ts +1 -1
- package/dist/types/epsil/diagnostics.d.ts +1 -1
- package/dist/types/epsil/error-location.d.ts +1 -1
- package/dist/types/epsil/execute-epsil.d.ts +1 -1
- package/dist/types/epsil/formatter.d.ts +1 -1
- package/dist/types/epsil/lexer.d.ts +1 -1
- package/dist/types/epsil/library-names.d.ts +1 -1
- package/dist/types/epsil/match-exhaustiveness.d.ts +1 -1
- package/dist/types/epsil/occurrences.d.ts +1 -1
- package/dist/types/epsil/operators.d.ts +1 -1
- package/dist/types/epsil/parse-epsil.d.ts +1 -1
- package/dist/types/epsil/parser.d.ts +1 -1
- package/dist/types/epsil/reserved-words.d.ts +1 -1
- package/dist/types/epsil/resolve-library-names.d.ts +1 -1
- package/dist/types/epsil/serialize-epsil.d.ts +1 -1
- package/dist/types/epsil/signature-notes.d.ts +1 -1
- package/dist/types/epsil/static-diagnostics.d.ts +1 -1
- package/dist/types/epsil/tokens.d.ts +1 -1
- package/dist/types/epsil.d.ts +2 -2
- package/dist/types/identities.d.ts +1 -1
- package/dist/types/integration-rules.d.ts +1 -1
- package/dist/types/interval.d.ts +1 -1
- package/dist/types/latex-syntax.d.ts +2 -2
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/dist/types/numerics.d.ts +1 -1
- package/dist/umd-min/compile.cjs +2 -2
- package/dist/umd-min/compute-engine.cjs +2 -2
- package/dist/umd-min/core.cjs +2 -2
- package/dist/umd-min/epsil.cjs +3 -3
- package/dist/umd-min/identities.cjs +2 -2
- package/dist/umd-min/integration-rules.cjs +2 -2
- package/dist/umd-min/interval.cjs +2 -2
- package/dist/umd-min/latex-syntax.cjs +2 -2
- package/dist/umd-min/math-json.cjs +2 -2
- package/dist/umd-min/numerics.cjs +2 -2
- package/package.json +1 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** Numerics 0.129.
|
|
1
|
+
/** Numerics 0.129.1 */
|
|
2
2
|
(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Numerics = {}));})(this, (function (exports) { 'use strict';
|
|
3
3
|
"use strict";var Numerics=(()=>{var wn=Object.defineProperty;var Mo=Object.getOwnPropertyDescriptor;var wo=Object.getOwnPropertyNames;var ko=Object.prototype.hasOwnProperty;var xo=(t,e)=>{for(var n in e)wn(t,n,{get:e[n],enumerable:!0})},Po=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of wo(e))!ko.call(t,r)&&r!==n&&wn(t,r,{get:()=>e[r],enumerable:!(i=Mo(e,r))||i.enumerable});return t};var So=t=>Po(wn({},"__esModule",{value:!0}),t);var qc={};xo(qc,{BigNumericValue:()=>nn,DEFAULT_PRECISION:()=>er,DEFAULT_TOLERANCE:()=>jn,ExactNumericValue:()=>K,LARGEST_SMALL_PRIME:()=>Qi,MACHINE_PRECISION:()=>tr,MACHINE_PRECISION_BITS:()=>Vn,MAX_BIGINT_DIGITS:()=>nr,MAX_ITERATION:()=>ir,MAX_SYMBOLIC_TERMS:()=>rr,MachineNumericValue:()=>rn,NumericValue:()=>V,SMALL_INTEGER:()=>L,add:()=>F,airyAi:()=>mo,airyBi:()=>po,areCompatibleUnits:()=>ic,asMachineRational:()=>ca,besselI:()=>Ce,besselJ:()=>Ie,besselK:()=>so,besselY:()=>bn,beta:()=>to,bigBeta:()=>Xs,bigCorrelation:()=>Qu,bigCovariance:()=>Ju,bigDigamma:()=>ki,bigGamma:()=>Ys,bigGammaln:()=>Gs,bigInterquartileRange:()=>ec,bigKurtosis:()=>qu,bigLambertW:()=>zs,bigMean:()=>Ou,bigMedian:()=>on,bigMode:()=>Gu,bigPolygamma:()=>Hs,bigPopulationCovariance:()=>Xu,bigPopulationStandardDeviation:()=>ju,bigPopulationVariance:()=>xs,bigPrimeFactors:()=>_n,bigQuartiles:()=>Ss,bigSkewness:()=>Zu,bigStandardDeviation:()=>_u,bigTrigamma:()=>xi,bigVariance:()=>ws,bigZeta:()=>Ks,bigint:()=>U,bigintCanonicalInteger:()=>xe,bigintFactorial:()=>$n,bigintGcd:()=>ke,bigintLcm:()=>Dt,bigintValue:()=>ya,bignumFactorial2:()=>Ns,bignumGcd:()=>Ti,bignumLcm:()=>bs,cancelUnitFactors:()=>ac,canonicalInteger:()=>ne,cantorEnumerateComplexNumbers:()=>mr,cantorEnumerateIntegers:()=>dr,cantorEnumerateNaturalNumbers:()=>pr,cantorEnumeratePositiveRationals:()=>fr,cantorEnumerateRationals:()=>lr,centeredDiff8thOrder:()=>cr,chop:()=>ur,complexGamma:()=>Bi,complexGammaln:()=>Ai,convertCompoundUnit:()=>fc,convertUnit:()=>Cs,correlation:()=>Ku,covariance:()=>Wu,determinant:()=>Is,digamma:()=>Tn,dimensionsEqual:()=>ln,div:()=>ua,erf:()=>yn,erfInv:()=>Us,erfc:()=>Nn,extrapolate:()=>St,factorial:()=>or,factorial2:()=>ar,findNamedUnit:()=>sc,flattenUnitFactors:()=>oc,fresnelC:()=>vo,fresnelS:()=>Io,fromDigits:()=>Gn,gamma:()=>Oe,gammaln:()=>yt,gcd:()=>G,getExpressionDimension:()=>Be,getExpressionScale:()=>Ae,getUnitDimension:()=>Nt,getUnitScale:()=>bt,interquartileRange:()=>zu,interval:()=>xu,intervalContains:()=>Pu,intervalSubset:()=>Su,inverse:()=>Pe,isBigRational:()=>tt,isDimensionless:()=>tc,isInMachineRange:()=>ht,isInteger:()=>de,isMachineRational:()=>C,isNeg:()=>aa,isNegativeOne:()=>Ft,isOne:()=>Ct,isPositive:()=>qe,isPrime:()=>Qo,isPrimeBigint:()=>Cn,isRational:()=>ra,isZero:()=>R,kurtosis:()=>Lu,lambertW:()=>io,lcm:()=>Ot,limit:()=>Bt,literalIntervalEndpoints:()=>ku,machineDenominator:()=>oa,machineNumerator:()=>sa,mean:()=>Au,median:()=>sn,modPow:()=>zi,mode:()=>Uu,monteCarloEstimate:()=>Bu,mul:()=>S,neg:()=>re,nextDown:()=>sr,nextUp:()=>Ln,numberToExpression:()=>q,numberToString:()=>O,parseUnitDSL:()=>lc,polygamma:()=>eo,populationCovariance:()=>Hu,populationStandardDeviation:()=>Vu,populationVariance:()=>ks,pow:()=>la,primeFactors:()=>Rt,quartiles:()=>Ps,rationalAsFloat:()=>_t,rationalGcd:()=>Zn,rationalize:()=>da,reduceRationalRoot:()=>ha,reduceRationalSquareRoot:()=>pa,reducedInteger:()=>hr,reducedRational:()=>ie,reducedRationalFromDecimal:()=>ma,roundMeasurementForDisplay:()=>ba,roundToDecimalPlace:()=>nt,roundToSignificant:()=>br,sinc:()=>Eo,skewness:()=>$u,sqrt:()=>fa,standardDeviation:()=>Fu,trigamma:()=>In,unitExpressionFromFactors:()=>uc,variance:()=>Ms,version:()=>Lc,zeta:()=>vn});var V=class{get bignumRe(){}im;get bignumIm(){}isZeroWithTolerance(e){return this.isZero}valueOf(){return this.im===0?this.bignumRe?this.bignumRe.toNumber():this.re:this.toString()}[Symbol.toPrimitive](e){return e==="string"?this.toString():this.valueOf()}toJSON(){if(this.im===0){let e=this.re;if(Number.isFinite(e))return e}return this.N().toString()}print(){let e=console.log;e?.(this.toString())}};var Oi=new Map,Ro=1e5;function w(t){if(t<=Ro){let e=Oi.get(t);return e===void 0&&(e=10n**BigInt(t),Oi.set(t,e)),e}return 10n**BigInt(t)}function le(t){if(t<0n&&(t=-t),t===0n)return 0;let e=0,n=1;for(;t>>BigInt(n)>0n;)n*=2;for(let i=n>>1;i>=1;i>>=1)t>>BigInt(i)>0n&&(e+=i,t>>=BigInt(i));return e+1}function Ci(t,e,n){return t*e>>BigInt(n)}function Fi(t,e,n){return(t<<BigInt(n))/e}function Mt(t,e){if(t===0n)return 0n;if(t<0n)throw new RangeError("fpsqrt: negative input");let n=t<<BigInt(e),i;if(e<Bo){i=xn(n);let a;do a=i,i=(i+n/i)/2n;while(X(i-a)>1n)}else i=Pn(n,le(n));let r=(i+n/i)/2n,s=X(i*i-n);return X(r*r-n)<s?r:i}function xn(t){let e=le(t);if(e<=1023){let o=Math.sqrt(Number(t));if(Number.isFinite(o)&&o>=1)return BigInt(Math.floor(o))}let n=e-52,i=Number(t>>BigInt(n)),r=Math.sqrt(i);n&1&&(r*=Math.SQRT2);let s=BigInt(Math.round(r))<<BigInt(n>>1);return s>0n?s:1n}var _i=1024,Bo=640;function Pn(t,e){if(e<_i){let s=xn(t),o;do o=s,s=(s+t/s)/2n;while(X(s-o)>1n);for(;s*s>t;)s-=1n;for(;(s+1n)*(s+1n)<=t;)s+=1n;return s}let n=e>>2<<1,i=Pn(t>>BigInt(n),e-n)<<BigInt(n>>1),r;do r=i,i=(i+t/i)/2n;while(X(i-r)>1n);for(;i*i>t;)i-=1n;for(;(i+1n)*(i+1n)<=t;)i+=1n;return i}function X(t){return t<0n?-t:t}function je(t){if(t===0n)return 1;if(t<0n&&(t=-t),t<0x20000000000000n){let i=Number(t);return i<1e8?i<1e4?i<100?i<10?1:2:i<1e3?3:4:i<1e6?i<1e5?5:6:i<1e7?7:8:i<1e12?i<1e10?i<1e9?9:10:i<1e11?11:12:i<1e14?i<1e13?13:14:i<1e15?15:16}let e=t.toString(16).length*4,n=Math.ceil(e*.30102999566398);for(;t<w(n-1);)n--;for(;t>=w(n);)n++;return n}var Ao=.7;function Sn(t,e){if(t===0n)return 1n<<BigInt(e);let n=Math.round(Ao*Math.sqrt(e)),i=n+8,r=e+i,s=BigInt(r),o=1n<<s,a=BigInt(i),c=t<<a,l=c<0n,f=l?-c:c,m=Math.max(0,le(f)-r+n);f>>=BigInt(m),c=l?-f:f;let d=o,p=c;d+=p;for(let h=2;p=(p*c>>s)/BigInt(h),p!==0n;h++)d+=p;for(let h=0;h<m;h++)d=d*d>>s;return d+(1n<<a-1n)>>a}var Oo=4e4;function Rn(t,e){let n=1n<<BigInt(e);if(t<=0n)throw new RangeError("fpln: input must be positive");return t===n?0n:e>=Oo?Fo(t,e):Do(t,e)}function Do(t,e){let n=BigInt(e),i=1n<<n,r=52,s=e-r,o;if(s>0){let h=Number(t>>BigInt(s))/2**r;o=BigInt(Math.round(Math.log(h)*2**r))<<BigInt(s)}else{let h=Number(t)/Number(i);o=BigInt(Math.round(Math.log(h)*Number(i)))}let a=t*Sn(-o,e)>>n,l=(a-i<<n)/(a+i),f=l<0n?-l:l,m=f*f>>n,d=f,p=f;for(let h=3n;d=d*m>>n,d!==0n;h+=2n)p+=d/h;return o+(l<0n?-2n:2n)*p}var Ee=null;function Co(t){if(Ee!==null){if(Ee.bits===t)return Ee.value;if(Ee.bits>t)return Ee.value>>BigInt(Ee.bits-t)}let e=Math.ceil(t*wt)+12,n;if(e<=Di.length){let i=Di.slice(0,e);n=(BigInt(i)<<BigInt(t))/w(i.length)}else n=$o(t);return Ee={bits:t,value:n},n}function Fo(t,e){let n=BigInt(e),i=le(t)-e,r=Math.max(2,Math.ceil(e/2+4-i)),s=t<<BigInt(r-2),o=1n<<n,a=s;for(;X(o-a)>1n;){let l=o+a>>1n;a=Qe(o*a),o=l}return Et(e)*s/(2n*o)-BigInt(r)*Co(e)}var Ve="314159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913151557485724245415069595082953311686172785588907509838175463746493931925506040092770167113900984882401285836160356370766010471018194295559619894676783744944825537977472684710404753464620804668425906949129331367702898915210475216205696602405803815019351125338243003558764024749647326391419927260426992279678235478163600934172164121992458631503028618297455570674983850549458858692699569092721079750930295532116534498720275596023648066549911988183479775356636980742654252786255181841757467289097777279380008164706001614524919217321721477235014144197356854816136115735255213347574184946843852332390739414333454776241686251898356948556209921922218427255025425688767179049460165346680498862723279178608578438382796797668145410095388378636095068006422512520511739298489608412848862694560424196528502221066118630674427862203919494504712371378696095636437191728746776465757396241389086583264599581339047802759009946576407895126946839835259570982582262052248940772671947826848260147699090264013639443745530506820349625245174939965143142980919065925093722169646151570985838741059788595977297549893016175392846813826868386894277415599185592524595395943104997252468084598727364469584865383673622262609912460805124388439045124413654976278079771569143599770012961608944169486855584840635",wt=Math.log10(2),Di="693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996418687542001481020570685733685520235758130557032670751635075961930727570828371435190307038623891673471123350115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740430385500801944170641671518644712839968171784546957026271631064546150257207402481637773389638550695260668341137273873722928956493547025762652098859693201965058554764703306793654432547632744951250406069438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608293803172714367782654877566485085674077648451464439940461422603193096735402574446070308096085047486638523138181676751438667476647890881437141985494231519973548803751658612753529166100071053558249879414729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591070882368362758984258918535302436342143670611892367891923723146723217205340164925687274778234453534764811494186423867767744060695626573796008670762571991847340226514628379048830620330611446300737194890027436439650025809365194430411911506080948793067865158870900605203468429736193841289652556539686022194122924207574321757489097706752687115817051137009158942665478595964890653058460258668382940022833005382074005677053046787001841624044188332327983863490015631218895606505531512721993983320307514084260914790012651682434438935724727882054862715527418772430024897945401961872339808608316648114909306675193393128904316413706813977764981769748689038877899912965036192707108892641052309247839173735012298424204995689359922066022046549415106139187885744245577510206837030866619480896412186807790208181588580001688115973056186676199187395200766719214592236720602539595436541655311295175989940056000366513567569051245926825743946483168332624901803824240824231452306140963805700702551387702681785163069025513703234053802145019015374029509942262995779647427138157363801729873940704242179972266962979939312706935747240493386530879758721699645129446491883771156701678598804981838896784134938314014073166472765327635919233511233389338709513209059272185471328975470797891384445466676192702885533423429899321803769154973340267546758873236778342916191810430116091695265547859732891763545556742863877463987101912431754255888301206779210280341206879759143081283307230300883494705792496591005860012341561757413272465943",_o=13591409n,Vo=545140134n,jo=10939058860032000n,Lo=47.11;function vt(t,e){if(e-t===1){let l,f;if(t===0)l=1n,f=1n;else{l=BigInt(6*t-5)*BigInt(2*t-1)*BigInt(6*t-1);let d=BigInt(t);f=d*d*d*jo}let m=l*(_o+Vo*BigInt(t));return t&1&&(m=-m),[l,f,m]}let n=t+e>>1,[i,r,s]=vt(t,n),[o,a,c]=vt(n,e);return[i*o,r*a,a*s+i*c]}function Vi(t){return Math.max(2,Math.floor(t/Lo)+3)}function qo(t){let[,e,n]=vt(0,Vi(t)),i=1n<<BigInt(t),r=Qe(10005n*i*i);return e*426880n*r/n}function ji(t){let[,e,n]=vt(0,Vi(Math.ceil(t/wt))),i=w(t),r=Qe(10005n*i*i);return e*426880n*r/n}function kn(t,e){if(e-t===1){let l=t===0?1n:BigInt(2*t-1),f=t===0?1n:9n*BigInt(2*t+1);return[l,f,l]}let n=t+e>>1,[i,r,s]=kn(t,n),[o,a,c]=kn(n,e);return[i*o,r*a,a*s+i*c]}function $o(t){let e=Math.max(2,Math.ceil(t/3.169925)+5),[,n,i]=kn(0,e);return(i<<BigInt(t+1))/(3n*n)}function Qe(t){if(t<0n)throw new RangeError("bigintSqrt: negative input");if(t===0n)return 0n;let e=le(t);if(e>=_i)return Pn(t,e);let n=xn(t),i;do i=n,n=(n+t/n)/2n;while(X(n-i)>1n);for(;n*n>t;)n-=1n;for(;(n+1n)*(n+1n)<=t;)n+=1n;return n}var Me=null;function Et(t){if(Me!==null){if(Me.bits===t)return Me.value;if(Me.bits>t)return Me.value>>BigInt(Me.bits-t)}let e=Zo(t);return Me={bits:t,value:e},e}function Zo(t){let e=Math.ceil(t*wt)+12;if(e+1<=Ve.length){let n=Ve.slice(0,e+1);return(BigInt(n)<<BigInt(t))/w(n.length-1)}return qo(t)}function kt(t,e){let n=BigInt(e),i=1n<<n;if(t===0n)return[0n,i];let r=Et(e),s=2n*r,o=r/2n,a,c=X(t);if(c>i<<30n){let v=le(c)-e+64,D=e+v,H=t<<BigInt(v),ee=2n*Et(D),te=H%ee;te<0n&&(te+=ee),a=te>>BigInt(v)}else a=t%s;a<0n&&(a+=s);let l=1n,f=1n;a>3n*o?(a=s-a,l=-1n):a>r?(a=a-r,l=-1n,f=-1n):a>o&&(a=r-a,f=-1n);let m=Math.round(e*wt),d=Math.min(18,Math.max(2,Math.ceil(.87*Math.sqrt(m)))),p=0,h=i>>BigInt(d);for(;a>h;)a=a/2n,p++;let g=a,y=i,I=a,T=i,N=a*a,E=2n*n;for(let v=2;;v+=2){if(T=(T*N>>E)/(BigInt(v)*BigInt(v-1)),T===0n){I=(I*N>>E)/(BigInt(v+1)*BigInt(v)),I!==0n&&(v%4===2?(y-=T,g-=I):(y+=T,g+=I));break}if(I=(I*N>>E)/(BigInt(v+1)*BigInt(v)),v%4===2?(y-=T,g-=I):(y+=T,g+=I),I===0n)break}for(let v=0;v<p;v++){let D=2n*g*y>>n,H=(2n*y*y>>n)-i;g=D,y=H}return[l*g,f*y]}function Ke(t,e){if(t===0n)return 0n;if(t<0n)return-Ke(-t,e);let n=BigInt(e),i=1n<<n,s=Et(e)/2n;if(t>i){let p=(i<<n)/t;return s-Ke(p,e)}let o=4n*i/10n,a=0,c=t;for(;c>o;){let p=c*c,h=(i<<n)+p>>n,g=Mt(h,e);c=(c<<n)/(i+g),a++}let l=c,f=c,m=c*c,d=2n*n;for(let p=3;f=f*m>>d,f!==0n;p+=2)p%4===3?l-=f/BigInt(p):l+=f/BigInt(p);for(let p=0;p<a;p++)l=2n*l;return l}var Bn=NaN,u=class t{static precision=50;static ZERO=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:0n,exponent:0}));static ONE=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:1n,exponent:0}));static TWO=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:2n,exponent:0}));static NEGATIVE_ONE=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:-1n,exponent:0}));static HALF=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:5n,exponent:-1}));static NAN=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:0n,exponent:NaN}));static POSITIVE_INFINITY=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:1n,exponent:1/0}));static NEGATIVE_INFINITY=Object.freeze(Object.assign(Object.create(t.prototype),{_digits:1,significand:-1n,exponent:1/0}));static _piFullPrecision=null;static _piCache=null;static _piCachePrecision=0;static _eulerGammaCache=null;static _eulerGammaCachePrecision=0;static get PI(){let e=t.precision;if(t._piCache!==null&&t._piCachePrecision===e)return t._piCache;let n=e+4,i;if(n+1<=Ve.length)t._piFullPrecision===null&&(t._piFullPrecision=new t(Ve[0]+"."+Ve.slice(1))),i=t._piFullPrecision.toPrecision(n);else{let r=n+4;i=M(ji(r),-r).toPrecision(n)}return t._piCache=i,t._piCachePrecision=e,i}static get EULER_GAMMA(){let e=t.precision;if(t._eulerGammaCache!==null&&t._eulerGammaCachePrecision>=e)return t._eulerGammaCache.toPrecision(e);let n=Yo(e);return t._eulerGammaCache=n,t._eulerGammaCachePrecision=e,n}significand;exponent;_digits;_digitCount(){return this._digits??(this._digits=je(this.significand))}constructor(e){if(e instanceof t){this.significand=e.significand,this.exponent=e.exponent;return}if(typeof e=="bigint"){[this.significand,this.exponent]=xt(e,0);return}if(typeof e=="number"){[this.significand,this.exponent]=Wo(e);return}[this.significand,this.exponent]=Zi(e)}isNaN(){return Number.isNaN(this.exponent)}isZero(){return this.exponent===0&&this.significand===0n}isFinite(){return Number.isFinite(this.exponent)}isInteger(){return this.isFinite()&&this.exponent>=0}isPositive(){return this.significand>0n}isNegative(){return this.significand<0n}cmp(e){if(typeof e=="number"){if(Number.isNaN(e))return Bn;let p=this.exponent;if(Number.isNaN(p))return Bn;if(e===0)return this.significand===0n?0:this.significand>0n?1:-1;if(!Number.isFinite(p))return e===1/0?this.significand>0n?0:-1:e===-1/0?this.significand<0n?0:1:this.significand>0n?1:-1;if(this.significand===0n)return e>0?-1:1;if(e===1/0)return-1;if(e===-1/0)return 1;if(this.significand>0n!=e>0)return this.significand>0n?1:-1;if(Number.isInteger(e)&&p>=0&&p<=15){let h=this.significand*w(p),g=BigInt(e);return h<g?-1:h>g?1:0}e=new t(e)}let n=this.exponent,i=e.exponent,r=this.significand,s=e.significand;if(n!==n||i!==i)return Bn;if(!Number.isFinite(n)||!Number.isFinite(i))return!Number.isFinite(n)&&!Number.isFinite(i)?r===s?0:r>s?1:-1:Number.isFinite(n)?s>0n?-1:1:r>0n?1:-1;if(r===0n)return s===0n?0:s>0n?-1:1;if(s===0n)return r>0n?1:-1;if(r>0n&&s<0n)return 1;if(r<0n&&s>0n)return-1;if(n===i)return r<s?-1:r>s?1:0;let o=this._digitCount(),a=e._digitCount(),c=o+n,l=a+i;if(c!==l){let p=r>0n?1:-1;return c>l?p:-p}let f=r,m=s,d=Math.abs(n-i);if(d>1e3){let p=o,h=a,g=Math.max(p,h)+1;p<g&&(f=f*w(g-p)),h<g&&(m=m*w(g-h))}else n<i?m=m*w(d):f=f*w(d);return f<m?-1:f>m?1:0}eq(e){return typeof e=="number"?e===0?this.significand===0n&&this.exponent===0:e===1?this.significand===1n&&this.exponent===0:e===-1?this.significand===-1n&&this.exponent===0:Number.isInteger(e)&&Number.isFinite(this.exponent)&&this.exponent>=0&&this.exponent<=15?this.significand*w(this.exponent)===BigInt(e):this.cmp(e)===0:this.significand===e.significand&&this.exponent===e.exponent}lt(e){return this.cmp(e)===-1}lte(e){let n=this.cmp(e);return n===-1||n===0}gt(e){return this.cmp(e)===1}gte(e){let n=this.cmp(e);return n===1||n===0}add(e){typeof e=="number"&&(e=new t(e));let n=this.exponent,i=e.exponent;if(Number.isFinite(n)&&Number.isFinite(i)){if(n===i)return M(this.significand+e.significand,n);let o=n-i;return o>0?M(this.significand*w(o)+e.significand,i):M(this.significand+e.significand*w(-o),n)}if(n!==n||i!==i)return t.NAN;let r=!Number.isFinite(n),s=!Number.isFinite(i);return r&&s?this.significand!==e.significand?t.NAN:this.significand>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY:r?this.significand>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY:e.significand>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY}sub(e){typeof e=="number"&&(e=new t(e));let n=this.exponent,i=e.exponent;if(Number.isFinite(n)&&Number.isFinite(i)){if(n===i)return M(this.significand-e.significand,n);let o=n-i;return o>0?M(this.significand*w(o)-e.significand,i):M(this.significand-e.significand*w(-o),n)}if(n!==n||i!==i)return t.NAN;let r=!Number.isFinite(n),s=!Number.isFinite(i);return r&&s?this.significand===e.significand?t.NAN:this.significand>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY:r?this.significand>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY:e.significand>0n?t.NEGATIVE_INFINITY:t.POSITIVE_INFINITY}mul(e){typeof e=="number"&&(e=new t(e));let n=this.exponent,i=e.exponent;if(Number.isFinite(n)&&Number.isFinite(i))return M(this.significand*e.significand,n+i);if(n!==n||i!==i||this.significand===0n||e.significand===0n)return t.NAN;let r=this.significand>0n?1n:-1n,s=e.significand>0n?1n:-1n;return r*s>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY}_mulToPrecision(e,n){typeof e=="number"&&(e=new t(e));let i=this.exponent,r=e.exponent,s=this.significand,o=e.significand;if(s!==0n&&o!==0n&&Number.isFinite(i)&&Number.isFinite(r)){let a=s*o,c=i+r,l=this._digitCount()+e._digitCount()-1,m=(a<0n?-a:a)>=w(l)?l+1:l;return m<=n?M(a,c):Li(a,c).roundToPrecKnownDigits(n,m)}return this.mul(e).toPrecision(n)}neg(){let e=this.significand;return e===0n?this:Number.isFinite(this.exponent)?M(-e,this.exponent):e>0n?t.NEGATIVE_INFINITY:t.POSITIVE_INFINITY}abs(){return this.significand>=0n?this:Number.isFinite(this.exponent)?M(-this.significand,this.exponent):t.POSITIVE_INFINITY}floor(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let n=this.trunc();return this.significand<0n?n.sub(M(1n,0)):n}return this}ceil(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let n=this.trunc();return this.significand>0n?n.add(M(1n,0)):n}return this}round(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let n=M(5n,-1);return this.significand>0n?this.add(n).trunc():this.sub(n).trunc()}return this}trunc(){let e=this.exponent;if(e>=0)return this;if(Number.isFinite(e)){let n=this.significand/w(-e);return M(n===0n?0n:n,0)}return this}div(e){typeof e=="number"&&(e=new t(e));let n=this.exponent,i=e.exponent,r=this.significand,s=e.significand;if(Number.isFinite(n)&&Number.isFinite(i)){if(s===0n)return r===0n?t.NAN:r>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY;if(r===0n)return M(0n,0);let c=t.precision,l=10,f=this._digitCount(),m=e._digitCount(),d=c+l+Math.max(0,m-f),p=w(d),h=r*p/s,g=n-i-d,y=h<0n?-h:h,I=f+d-m,T=y>=w(I)?I+1:I;return Li(h,g).roundToPrecKnownDigits(c,T)}if(n!==n||i!==i)return t.NAN;let o=!Number.isFinite(n),a=!Number.isFinite(i);if(o&&a)return t.NAN;if(o){let c=r>0n?1n:-1n,l=s>0n?1n:s<0n?-1n:1n;return c*l>0n?t.POSITIVE_INFINITY:t.NEGATIVE_INFINITY}return M(0n,0)}inv(){return M(1n,0).div(this)}divToward(e,n){typeof e=="number"&&(e=new t(e));let i=this.exponent,r=e.exponent,s=this.significand,o=e.significand;if(!Number.isFinite(i)||!Number.isFinite(r)||o===0n||s===0n)return this.div(e);let a=s<0n!=o<0n,c=s<0n?-s:s,l=o<0n?-o:o,f=t.precision,d=f+10+Math.max(0,e._digitCount()-this._digitCount()),p=c*w(d),h=p/l,g=p%l!==0n,y=i-r-d,I=this._digitCount()+d-e._digitCount(),T=h>=w(I)?I+1:I,N=a?n==="floor":n==="ceiling",[E,v]=An(h,g,y,f,N,T);return M(a?-E:E,v)}sqrtToward(e){if(this.significand===0n)return this.exponent!==this.exponent?this:t.ZERO;if(!Number.isFinite(this.exponent))return this.significand>0n?t.POSITIVE_INFINITY:t.NAN;if(this.significand<0n)return t.NAN;let n=t.precision,i=4,r=this.significand,s=this.exponent,o=s+this._digitCount()-1,a=Math.floor(o/2),c=n+i-a;s+2*c<0&&(c=Math.ceil(-s/2)+1);let l=s+2*c,f=l>=0?r*w(l):r/w(-l),m=Qe(f),d=m*m!==f,[p,h]=An(m,d,-c,n,e==="ceiling");return M(p,h)}mod(e){typeof e=="number"&&(e=new t(e));let n=this.exponent,i=e.exponent;if(Number.isFinite(n)&&Number.isFinite(i)){if(e.significand===0n)return t.NAN;if(this.significand===0n)return M(0n,0);let r=n-i,s=r>=0?this.significand*w(r):this.significand,o=r>=0?e.significand:e.significand*w(-r),a=s/o;return this.sub(M(a,0).mul(e))}return n!==n||i!==i||!Number.isFinite(n)?t.NAN:new t(this)}pow(e){if(typeof e=="number"&&(e=new t(e)),this.isNaN()||e.isNaN()||!e.isFinite())return t.NAN;if(e.isInteger()){let a=e.toBigInt();if(a===0n)return M(1n,0);if(!this.isFinite())return a>0n?this.significand<0n&&a%2n!==0n?t.NEGATIVE_INFINITY:t.POSITIVE_INFINITY:M(0n,0);if(this.isZero())return a>0n?M(0n,0):t.POSITIVE_INFINITY;if(a<0n)return this.pow(e.neg()).inv();let c=this.significand<0n?-this.significand:this.significand,l=this._digitCount(),f=l>15?l-15:0,m=f>0?Number(c/10n**BigInt(f)):Number(c),d=Math.log10(m)+f+this.exponent,p=Number(a)*d;if(p>9e15)return this.significand<0n&&a%2n!==0n?t.NEGATIVE_INFINITY:t.POSITIVE_INFINITY;if(p<-9e15)return M(0n,0);let h=t.precision,g=a.toString(2).length,y=Math.min(2*g+5,100),I=h+y,T=M(1n,0),N=this,E=a;for(;E>0n;)E&1n&&(T=T._mulToPrecision(N,I)),E>>=1n,E>0n&&(N=N._mulToPrecision(N,I));return T.toPrecision(h)}if(!this.isFinite())return this.significand<0n?t.NAN:e.significand>0n?t.POSITIVE_INFINITY:t.ZERO;if(this.isZero())return e.significand>0n?t.ZERO:t.POSITIVE_INFINITY;if(this.significand<0n)return t.NAN;let n=this.exponent+this._digitCount()-1,r=e.exponent+e._digitCount()-1+Math.log10(Math.abs(n)*2.303+3)+1,s=Math.min(20,Math.max(2,Math.ceil(r)+2)),o=t.precision;t.precision=o+s;try{let a=Go(this,o+s);return e.mul(a).exp().toPrecision(o)}finally{t.precision=o}}toNumber(){return Number.isFinite(this.exponent)?this.significand===0n?0:this.exponent===0?Number(this.significand):Number(this.toString()):this.exponent!==this.exponent?NaN:this.significand>0n?1/0:-1/0}toString(){if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";if(this.significand===0n)return"0";let e=this.significand<0n,n=(e?-this.significand:this.significand).toString(),i=n.length,r=i+this.exponent-1,s=e?"-":"";if(r>20||r<-6){let c=i===1?n:n[0]+"."+n.slice(1),l=r>=0?"+":"";return`${s}${c}e${l}${r}`}if(this.exponent>=0)return s+n+"0".repeat(this.exponent);let o=-this.exponent;if(o<i){let c=n.slice(0,i-o),l=n.slice(i-o);return`${s}${c}.${l}`}let a=o-i;return`${s}0.${"0".repeat(a)}${n}`}toFixed(e){let n=e??0;if(!Number.isFinite(this.exponent))return this.exponent!==this.exponent?"NaN":this.significand>0n?"Infinity":"-Infinity";let i=this.significand<0n,r=i?-this.significand:this.significand,s=this.exponent+n,o,a;if(s>=0)a=r===0n,o=a?"0":r.toString()+"0".repeat(s);else{let m=w(-s),d=r/m,p=r%m,h=m/2n,g;p>h?g=d+1n:p<h||m%2n!==0n||d%2n===0n?g=d:g=d+1n,a=g===0n,o=g.toString()}let c=i&&!a?"-":"";if(n===0)return`${c}${o}`;if(o.length<=n){let m=o.padStart(n,"0");return`${c}0.${m}`}let l=o.slice(0,o.length-n),f=o.slice(o.length-n);return`${c}${l}.${f}`}toPrecision(e){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let n=this._digitCount();return n<=e?this:this.roundToPrecKnownDigits(e,n)}roundToPrecKnownDigits(e,n){let i=this.significand<0n?-this.significand:this.significand,r=n-e,s=w(r),o=i/s,a=i-o*s,c=s/2n;(a>c||a===c&&o%2n!==0n)&&(o+=1n);let l=this.significand<0n?-o:o;return M(l,this.exponent+r)}toPrecisionToward(e,n){if(this.significand===0n||!Number.isFinite(this.exponent))return this;let i=this._digitCount();if(i<=e)return this;let r=this.significand<0n,[s,o]=An(r?-this.significand:this.significand,!1,this.exponent,e,n==="ceiling"!==r,i);return M(r?-s:s,o)}toBigInt(){if(!Number.isFinite(this.exponent))throw this.exponent!==this.exponent?new RangeError("Cannot convert NaN to BigInt"):new RangeError("Cannot convert Infinity to BigInt");if(this.exponent>=0)return this.significand*w(this.exponent);let e=w(-this.exponent);return this.significand/e}},Uo=8,ze=[];function Go(t,e){let n=t.significand,i=t.exponent;for(let s=ze.length-1;s>=0;s--){let o=ze[s];if(o.prec===e&&o.exp===i&&o.sig===n)return o.ln}let r=t.ln();return ze.push({sig:n,exp:i,prec:e,ln:r}),ze.length>Uo&&ze.shift(),r}function Yo(t){let e=t+20+Math.ceil(Math.log10(t+10)),n=u.precision;u.precision=e;try{let i=Math.ceil(e*Math.LN10/4)+5,r=new u(i),s=r.mul(r),o=u.ONE,a=u.ONE,c=u.ZERO,l=u.ZERO,f=u.ONE.div(new u(10).pow(e)),m=6*i+100;for(let d=1;d<=m;d++){let p=new u(d).mul(d);if(o=o.mul(s).div(p).toPrecision(e),l=l.add(u.ONE.div(d)).toPrecision(e),a=a.add(o).toPrecision(e),c=c.add(o.mul(l)).toPrecision(e),d>i&&o.lt(a.mul(f)))break}return c.div(a).sub(r.ln()).toPrecision(t)}finally{u.precision=n}}function M(t,e){let[n,i]=xt(t,e),r=Object.create(u.prototype);return r.significand=n,r.exponent=i,r}function Li(t,e){let n=Object.create(u.prototype);return n.significand=t,n.exponent=e,n}function An(t,e,n,i,r,s){if(t===0n)return[r&&e?1n:0n,n];let o=s??je(t);if(o<=i)return[r&&e?t+1n:t,n];let a=o-i,c=w(a),l=t/c,f=e||t%c!==0n;return r&&f&&(l+=1n),[l,n+a]}var qi=1000000000n,$i=1000n;function xt(t,e){if(t===0n)return[0n,0];if((t&1n)!==0n)return[t,e];if(t%10n!==0n)return[t,e];for(;t%qi===0n;)t/=qi,e+=9;for(;t%$i===0n;)t/=$i,e+=3;for(;t%10n===0n;)t/=10n,e+=1;return[t,e]}function Wo(t){return Number.isNaN(t)?[0n,NaN]:t===1/0?[1n,1/0]:t===-1/0?[-1n,1/0]:Number.isInteger(t)?xt(BigInt(t),0):Zi(t.toString())}function Zi(t){if(t=t.trim(),t===""||t==="NaN")return[0n,NaN];if(t==="Infinity"||t==="+Infinity")return[1n,1/0];if(t==="-Infinity")return[-1n,1/0];let e,n=0,i=t.search(/[eE]/);if(i!==-1){if(e=t.slice(0,i),n=Number(t.slice(i+1)),!Number.isFinite(n))return[0n,NaN]}else e=t;let r=!1;e.startsWith("-")?(r=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let s=e.indexOf("."),o,a;s===-1?(o=e,a=""):(o=e.slice(0,s),a=e.slice(s+1)),o=o.replace(/^0+/,"")||"0";let c=o+a;if(c.length===0||!/^\d+$/.test(c))return[0n,NaN];let l=BigInt(c);r&&(l=-l);let f=-a.length;return xt(l,f+n)}var Jo=Math.log2(10),Yi=Math.log10(2),Ho=16,Dn=1e6;function fe(t,e){let n=Math.ceil(e*Jo)+Ho,i=BigInt(n);return t.exponent>=0?[t.significand*w(t.exponent)<<i,n]:[(t.significand<<i)/w(-t.exponent),n]}function me(t,e,n){if(t===0n)return u.ZERO;let i=t<0n,r=i?-t:t,s=BigInt(e),o=le(r)-e,a=Math.floor(o*Yi),c=n+4-a,l,f;if(c>=0)l=r*w(c)+(1n<<s-1n)>>s,f=-c;else{let d=w(-c)<<s;l=(r+d/2n)/d,f=-c}if(l===0n)return u.ZERO;let m=je(l);if(m>n){let d=m-n,p=w(d),h=p/2n,g=l%p;l=l/p,g>=h&&(l+=1n),f+=d}return M(i?-l:l,f)}function j(t){return t.exponent+t._digitCount()-1}function On(t,e){if(t===0n)return 0;let n=t<0n?-t:t,i=e*Yi-(je(n)-1);return i>0?Math.ceil(i):0}var Wi=5,Ui=BigInt(Number.MAX_SAFE_INTEGER),we=null;function Ji(t){if(we!==null){if(we.bits===t)return we.value;if(we.bits>t)return we.value>>BigInt(we.bits-t)}let e=Rn(10n<<BigInt(t),t);return we={bits:t,value:e},e}u.prototype.sqrt=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.significand<0n)return u.NAN;let t=u.precision,e=t+10,n=j(this),i=Math.floor(n/2),r=M(this.significand,this.exponent-2*i),[s,o]=fe(r,e),a=Mt(s,o),c=me(a,o,t);return M(c.significand,c.exponent+i)};u.prototype.cbrt=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;if(this.significand<0n)return this.neg().cbrt().neg();let t=u.precision,e=t+10,n=j(this),i=Math.floor(n/3),r=M(this.significand,this.exponent-3*i),[s,o]=fe(r,e),a=s<<BigInt(2*o),c,l=r.toNumber();if(o<=1e3&&Number.isFinite(l)&&l>0){let d=Number(1n<<BigInt(o)),p=Math.cbrt(l);Number.isFinite(p)&&p>0?(c=BigInt(Math.floor(p*d)),c===0n&&(c=1n)):c=Gi(a)}else c=Gi(a);let f;do{f=c;let d=c*c;if(d===0n){c=1n;break}c=(2n*c+a/d)/3n}while(X(c-f)>1n);{let d=(2n*c+a/(c*c))/3n,p=X(c*c*c-a);X(d*d*d-a)<p&&(c=d)}let m=me(c,o,t);return M(m.significand,m.exponent+i)};u.sqrt=function(t){return t.sqrt()};u.cbrt=function(t){return t.cbrt()};u.prototype.exp=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.ZERO;if(this.isZero())return u.ONE;if(j(this)>=17)return this.significand>0n?u.POSITIVE_INFINITY:u.ZERO;let t=u.precision,e=Math.max(0,this.exponent+this._digitCount()),n=t+20+e,[i,r]=fe(this,n),s=Ji(r),o=i/s,a=i-o*s;if(a<0n&&(o-=1n,a+=s),o>Ui||o<-Ui)return o>0n?u.POSITIVE_INFINITY:u.ZERO;let c=me(Sn(a,r),r,t),l=c.exponent+Number(o);return Number.isSafeInteger(l)?M(c.significand,l):o>0n?u.POSITIVE_INFINITY:u.ZERO};u.prototype.ln=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.isZero())return u.NEGATIVE_INFINITY;if(this.significand<0n)return u.NAN;if(this.eq(1))return u.ZERO;let t=u.precision,e=this.significand,n=this._digitCount(),i=this.exponent+n-1,r=M(e,-(n-1)),s=Math.abs(i).toString().length,o=0;if(i===0||i===-1){let d=this.sub(u.ONE);if(!d.isZero()){let p=j(d);p<0&&(o=-p)}}let a=t+20+s+o,[c,l]=fe(r,a),f=Ji(l),m=Rn(c,l)+BigInt(i)*f;return me(m,l,t)};u.prototype.log=function(t){let e=t instanceof u?t:new u(t),n=u.precision;u.precision=n+10;try{return this.ln().div(e.ln()).toPrecision(n)}finally{u.precision=n}};u.exp=function(t){return t.exp()};u.ln=function(t){return t.ln()};u.log10=function(t){return t.log(10)};u.log2=function(t){return t.log(2)};u.prototype.sin=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let t=u.precision,e=j(this);if(e<0&&-2*e>=t+4)return this.toPrecision(t);let n=t+15+(e<0?-e:0);if(e+n+30>Dn)return u.NAN;let[i,r]=fe(this,n),[s]=kt(i,r);return me(s,r,t)};u.prototype.cos=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ONE;let t=u.precision,e=j(this),n=0;for(let i=0;;i++){let r=t+15+n;if(e+r+30>Dn)return u.NAN;let[s,o]=fe(this,r),[,a]=kt(s,o);if(a===0n){if(i>=3)return u.ZERO;n+=t+30;continue}let c=On(a,o);if(c<=n+Wi||i>=3)return me(a,o,t);n=c+5}};u.prototype.tan=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let t=u.precision,e=j(this);if(e<0&&-2*e>=t+4)return this.toPrecision(t);let n=e<0?-e:0,i=0;for(let r=0;;r++){let s=t+15+n+i;if(e+s+30>Dn)return u.NAN;let[o,a]=fe(this,s),[c,l]=kt(o,a);if(l===0n){if(r>=3)return c>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;i+=t+30;continue}let f=Math.max(c===0n?0:On(c,a),On(l,a));if(f<=i+Wi||r>=3){let m=(c<<BigInt(a))/l;return me(m,a,t)}i=f+5}};u.prototype.atan=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite()){let o=u.PI.div(u.TWO);return this.significand>0n?o:o.neg()}let t=u.precision,e=j(this);if(e<0&&-2*e>=t+4)return this.toPrecision(t);let n=t+15+(e<0?-e:0),[i,r]=fe(this,n),s=Ke(i,r);return me(s,r,t)};u.prototype.asin=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let t=this.abs(),e=u.ONE;if(t.gt(e))return u.NAN;if(t.eq(e)){let p=u.PI.div(u.TWO);return this.significand>0n?p:p.neg()}let n=u.precision,i=j(this);if(i<0&&-2*i>=n+4)return this.toPrecision(n);let r=n+20+(i<0?-i:0),[s,o]=fe(this,r),a=1n<<BigInt(o),c=Ci(s,s,o),l=a-c,f=Mt(l,o),m=Fi(s,f,o),d=Ke(m,o);return me(d,o,n)};u.prototype.acos=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.abs().gt(u.ONE))return u.NAN;if(this.eq(1))return u.ZERO;if(this.eq(-1))return u.PI;let e=u.precision,n=u.precision;u.precision=e+10;try{let i=u.TWO;if(this.significand>=0n){let s=u.ONE.sub(this)._mulToPrecision(u.HALF,e+10).sqrt();return i._mulToPrecision(s.asin(),e)}let r=u.ONE.add(this)._mulToPrecision(u.HALF,e+10).sqrt();return u.PI.sub(i.mul(r.asin())).toPrecision(e)}finally{u.precision=n}};u.sin=function(t){return t.sin()};u.cos=function(t){return t.cos()};u.tan=function(t){return t.tan()};u.asin=function(t){return t.asin()};u.acos=function(t){return t.acos()};u.atan=function(t){return t.atan()};u.atan2=function(t,e){let n=t instanceof u?t:new u(t);if(n.isNaN()||e.isNaN())return u.NAN;let i=u.PI,r=i.div(u.TWO);if(e.isZero())return n.isZero()?u.ZERO:n.significand>0n?r:r.neg();let s=n.div(e);return e.significand>0n?s.atan():n.significand>=0n?s.atan().add(i):s.atan().sub(i)};u.prototype.sinh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;let t=u.precision,e=j(this);if(e<0){if(-2*e>=t+4)return this.toPrecision(t);let r=u.precision;u.precision=t-e+5;try{let s=this.exp();return s.sub(s.inv())._mulToPrecision(u.HALF,t)}finally{u.precision=r}}if(Math.abs(this.toNumber())>1.16*(t+3)){let r=this.abs().exp().div(u.TWO);return this.significand>0n?r:r.neg()}let n=this.exp(),i=n.inv();return n.sub(i).div(u.TWO)};u.prototype.cosh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ONE;if(!this.isFinite())return u.POSITIVE_INFINITY;let t=u.precision;if(Math.abs(this.toNumber())>1.16*(t+3))return this.abs().exp().div(u.TWO);let e=this.exp(),n=e.inv();return e.add(n).div(u.TWO)};u.prototype.tanh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.ONE:u.NEGATIVE_ONE;let t=u.precision,e=j(this);if(e<0){if(-2*e>=t+4)return this.toPrecision(t);let i=u.precision;u.precision=t-e+5;try{let r=this.mul(u.TWO).exp();return r.sub(u.ONE).div(r.add(u.ONE)).toPrecision(t)}finally{u.precision=i}}if(Math.abs(this.toNumber())>1.16*(t+3))return this.significand>0n?u.ONE:u.NEGATIVE_ONE;let n=this.mul(u.TWO).exp();return n.sub(u.ONE).div(n.add(u.ONE))};u.sinh=function(t){return t.sinh()};u.cosh=function(t){return t.cosh()};u.tanh=function(t){return t.tanh()};u.prototype.expm1=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_ONE;if(this.isZero())return u.ZERO;let t=u.precision,e=j(this);if(e<0&&-e>=t+2)return this.toPrecision(t);if(e<0){let n=u.precision;u.precision=t-e+5;try{return this.exp().sub(u.ONE).toPrecision(t)}finally{u.precision=n}}return this.exp().sub(u.ONE)};u.prototype.log1p=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.isZero())return u.ZERO;let t=u.ONE.add(this);if(t.isZero())return u.NEGATIVE_INFINITY;if(t.significand<0n)return u.NAN;let e=u.precision,n=j(this);if(n<0&&-n>=e+2)return this.toPrecision(e);if(n<0){let i=u.precision;u.precision=e-n+5;try{return u.ONE.add(this).ln().toPrecision(e)}finally{u.precision=i}}return u.ONE.add(this).ln()};u.prototype.asinh=function(){if(this.isNaN())return u.NAN;if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;let t=this.significand<0n,e=this.abs(),n=u.precision,i=j(this);if(i<0&&-2*i>=n+4)return this.toPrecision(n);let r=()=>e.add(e.mul(e).add(u.ONE).sqrt()).ln(),s;if(i<0){let o=u.precision;u.precision=n-i+5;try{s=r().toPrecision(n)}finally{u.precision=o}}else s=r();return t?s.neg():s};u.prototype.acosh=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:u.NAN;if(this.lt(u.ONE))return u.NAN;if(this.eq(1))return u.ZERO;let t=this.sub(u.ONE).div(u.TWO).sqrt();return u.TWO.mul(t.asinh())};u.prototype.atanh=function(){if(this.isNaN())return u.NAN;if(!this.isFinite())return u.NAN;if(this.isZero())return u.ZERO;let t=this.abs();if(t.eq(1))return this.significand>0n?u.POSITIVE_INFINITY:u.NEGATIVE_INFINITY;if(t.gt(u.ONE))return u.NAN;let e=u.precision,n=j(this);if(-2*n>=e+4)return this.toPrecision(e);let i=u.precision;u.precision=e-n+5;try{return u.ONE.add(this).div(u.ONE.sub(this)).ln()._mulToPrecision(u.HALF,e)}finally{u.precision=i}};u.prototype.nthRoot=function(t){if(this.isNaN()||!Number.isInteger(t)||t===0)return u.NAN;if(t===1)return this;if(t===2)return this.sqrt();if(t===3)return this.cbrt();if(t<0)return this.nthRoot(-t).inv();if(this.isZero())return u.ZERO;if(!this.isFinite())return this.significand>0n?u.POSITIVE_INFINITY:t%2===0?u.NAN:u.NEGATIVE_INFINITY;if(this.significand<0n)return t%2===0?u.NAN:this.neg().nthRoot(t).neg();let e=u.precision,n=u.precision;u.precision=e+8;try{return u.exp(this.ln().div(new u(t))).toPrecision(e)}finally{u.precision=n}};u.asinh=function(t){return t.asinh()};u.acosh=function(t){return t.acosh()};u.atanh=function(t){return t.atanh()};u.expm1=function(t){return t.expm1()};u.log1p=function(t){return t.log1p()};u.nthRoot=function(t,e){return t.nthRoot(e)};function Gi(t){let e=le(t);if(e<=1023){let c=Math.cbrt(Number(t));if(Number.isFinite(c)&&c>=1)return BigInt(Math.floor(c))}let n=e-51,i=Number(t>>BigInt(n)),r=Math.cbrt(i),s=Math.floor(n/3),o=n%3;o===1&&(r*=1.2599210498948732),o===2&&(r*=1.5874010519681994);let a=BigInt(Math.round(r))<<BigInt(s);return a>0n?a:1n}var Xo=0;var be=class extends Error{cause;value;attribution;spans;constructor({message:e,value:n,cause:i,attribution:r,spans:s}={}){super(e??"Operation canceled"),n&&(this.value=n),this.cause=i,r!==void 0&&(this.attribution=r),s!==void 0&&(this.spans=s),this.name="CancellationError",i==="iteration-limit-exceeded"&&(Xo+=1)}};function A(t){if(t===void 0)return;let e=typeof t=="number"?t:t.at;if(Date.now()>=e)throw typeof t=="number"?new be({cause:"timeout",message:"Timeout exceeded"}):new be({cause:"timeout",message:"Timeout exceeded",attribution:t.owner,spans:t.spans})}var Pt;function Le(){return Pt}function et(t,e){let n=Pt;Pt=t;try{return e()}finally{Pt=n}}function St(t,e,n={}){let{contract:i=.125,step:r=1,power:s=1,atol:o=1e-16,rtol:a=o>0?0:Math.sqrt(Number.EPSILON),maxeval:c=1e6,breaktol:l=2,deadline:f=Le()}=n;return isFinite(e)?et(f,()=>{let m=r,d=Math.pow(1/i,s),p=t(e+m),h=[p],g=1/0,y=1;for(;y<c;){A(f),y+=1,m*=i,h.push(t(e+m));let I=d,T=1/0;for(let N=h.length-2;N>=0;N--){let E=h[N];h[N]=h[N+1]+(h[N+1]-h[N])/(I-1);let v=Math.abs(h[N]-E);T=Math.min(T,v),v<g&&(p=h[N],g=v),I*=d}if(T>l*g||!isFinite(T)||g<=Math.max(a*Math.abs(p),o))break}return[p,g]}):St(m=>t(1/m),1/e,{rtol:a,atol:o,maxeval:c,contract:Math.abs(i)>1?1/i:i,step:1/r,power:s,deadline:f})}function U(t){if(typeof t=="bigint")return t;if(typeof t=="number")return Number.isInteger(t)?BigInt(t):null;if(t instanceof u||typeof t=="object"&&t!==null&&typeof t.isInteger=="function"&&typeof t.toFixed=="function"){let r=t;return r.isInteger()?BigInt(r.toFixed(0)):null}if(typeof t!="string")return null;let e=t.toLowerCase(),n=e.match(/^([+-]?[0-9]+)e([+-]?[0-9]+)$/);if(n){let r=parseInt(n[2]);if(r<0||r>1e6)return null;e=n[1]+"0".repeat(r)}if(e.indexOf(".")>=0||!/^[+-]?[0-9]+$/.test(e))return null;try{return BigInt(e)}catch(r){return console.error(r instanceof Error?r.message:String(r)),null}}var Hi=1e7,Ko=new Set([2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163,3167,3169,3181,3187,3191,3203,3209,3217,3221,3229,3251,3253,3257,3259,3271,3299,3301,3307,3313,3319,3323,3329,3331,3343,3347,3359,3361,3371,3373,3389,3391,3407,3413,3433,3449,3457,3461,3463,3467,3469,3491,3499,3511,3517,3527,3529,3533,3539,3541,3547,3557,3559,3571,3581,3583,3593,3607,3613,3617,3623,3631,3637,3643,3659,3671,3673,3677,3691,3697,3701,3709,3719,3727,3733,3739,3761,3767,3769,3779,3793,3797,3803,3821,3823,3833,3847,3851,3853,3863,3877,3881,3889,3907,3911,3917,3919,3923,3929,3931,3943,3947,3967,3989,4001,4003,4007,4013,4019,4021,4027,4049,4051,4057,4073,4079,4091,4093,4099,4111,4127,4129,4133,4139,4153,4157,4159,4177,4201,4211,4217,4219,4229,4231,4241,4243,4253,4259,4261,4271,4273,4283,4289,4297,4327,4337,4339,4349,4357,4363,4373,4391,4397,4409,4421,4423,4441,4447,4451,4457,4463,4481,4483,4493,4507,4513,4517,4519,4523,4547,4549,4561,4567,4583,4591,4597,4603,4621,4637,4639,4643,4649,4651,4657,4663,4673,4679,4691,4703,4721,4723,4729,4733,4751,4759,4783,4787,4789,4793,4799,4801,4813,4817,4831,4861,4871,4877,4889,4903,4909,4919,4931,4933,4937,4943,4951,4957,4967,4969,4973,4987,4993,4999,5003,5009,5011,5021,5023,5039,5051,5059,5077,5081,5087,5099,5101,5107,5113,5119,5147,5153,5167,5171,5179,5189,5197,5209,5227,5231,5233,5237,5261,5273,5279,5281,5297,5303,5309,5323,5333,5347,5351,5381,5387,5393,5399,5407,5413,5417,5419,5431,5437,5441,5443,5449,5471,5477,5479,5483,5501,5503,5507,5519,5521,5527,5531,5557,5563,5569,5573,5581,5591,5623,5639,5641,5647,5651,5653,5657,5659,5669,5683,5689,5693,5701,5711,5717,5737,5741,5743,5749,5779,5783,5791,5801,5807,5813,5821,5827,5839,5843,5849,5851,5857,5861,5867,5869,5879,5881,5897,5903,5923,5927,5939,5953,5981,5987,6007,6011,6029,6037,6043,6047,6053,6067,6073,6079,6089,6091,6101,6113,6121,6131,6133,6143,6151,6163,6173,6197,6199,6203,6211,6217,6221,6229,6247,6257,6263,6269,6271,6277,6287,6299,6301,6311,6317,6323,6329,6337,6343,6353,6359,6361,6367,6373,6379,6389,6397,6421,6427,6449,6451,6469,6473,6481,6491,6521,6529,6547,6551,6553,6563,6569,6571,6577,6581,6599,6607,6619,6637,6653,6659,6661,6673,6679,6689,6691,6701,6703,6709,6719,6733,6737,6761,6763,6779,6781,6791,6793,6803,6823,6827,6829,6833,6841,6857,6863,6869,6871,6883,6899,6907,6911,6917,6947,6949,6959,6961,6967,6971,6977,6983,6991,6997,7001,7013,7019,7027,7039,7043,7057,7069,7079,7103,7109,7121,7127,7129,7151,7159,7177,7187,7193,7207,7211,7213,7219,7229,7237,7243,7247,7253,7283,7297,7307,7309,7321,7331,7333,7349,7351,7369,7393,7411,7417,7433,7451,7457,7459,7477,7481,7487,7489,7499,7507,7517,7523,7529,7537,7541,7547,7549,7559,7561,7573,7577,7583,7589,7591,7603,7607,7621,7639,7643,7649,7669,7673,7681,7687,7691,7699,7703,7717,7723,7727,7741,7753,7757,7759,7789,7793,7817,7823,7829,7841,7853,7867,7873,7877,7879,7883,7901,7907,7919]),Qi=7919;function Rt(t,e){if(Number.isInteger(t)&&t>=0&&t<Number.MAX_SAFE_INTEGER,t<=3)return{[t]:1};let n={},i=0;for(;t%2===0;)i+=1,t/=2;for(i>0&&(n[2]=i),i=0;t%3===0;)i+=1,t/=3;i>0&&(n[3]=i);let r=!1;for(;!r;){if(t===1)return n;if(t>=2**32){let o=new Map;Fn(BigInt(t),o,e);for(let[a,c]of o){let l=Number(a);n[l]=(n[l]??0)+c}return n}let s=Math.sqrt(t);r=!0;for(let o=6;o<=s+6;o+=6){if(t%(o-1)===0){n[o-1]=(n[o-1]??0)+1,t/=o-1,r=!1;break}if(t%(o+1)===0){n[o+1]=(n[o+1]??0)+1,t/=o+1,r=!1;break}}}return n[t]!==void 0?n[t]+=1:n[t]=1,n}function Qo(t){return!Number.isInteger(t)||!Number.isFinite(t)||t<=1?!1:Cn(BigInt(t))}var zo=1n<<32n,Xi=[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n];function Cn(t){if(t<2n)return!1;if(t<=Qi)return Ko.has(Number(t));if(t<zo){if(t%2n===0n||t%3n===0n)return!1;for(let e=5n;e*e<=t;e+=6n)if(t%e===0n||t%(e+2n)===0n)return!1;return!0}return ea(t)}function zi(t,e,n){if(n===1n)return 0n;let i=1n;for(t=(t%n+n)%n;e>0n;)e&1n&&(i=i*t%n),t=t*t%n,e>>=1n;return i}function ea(t){for(let i of Xi)if(t%i===0n)return t===i;let e=t-1n,n=0n;for(;e%2n===0n;)e/=2n,n+=1n;e:for(let i of Xi){let r=zi(i,e,t);if(!(r===1n||r===t-1n)){for(let s=1n;s<n;s++)if(r=r*r%t,r===t-1n)continue e;return!1}}return!0}function Ki(t,e){for(;e!==0n;){let n=t%e;t=e,e=n}return t}function ta(t,e){let n=128n,i=0,r=()=>{if((++i&1023)===0&&(A(e),i>Hi))throw new be({cause:"iteration-limit-exceeded",message:`Pollard rho: exceeded ${Hi} iterations`})};for(let s=1n;;s++){let o=2n,a=2n,c=2n,l=1n,f=1n,m=1n;for(;f===1n;){o=a;for(let d=0n;d<m;d++)a=(a*a+s)%t,r();for(let d=0n;d<m&&f===1n;d+=n){c=a;let p=m-d<n?m-d:n;for(let h=0n;h<p;h++)a=(a*a+s)%t,l=l*(o>a?o-a:a-o)%t,r();f=Ki(l,t)}m<<=1n}if(f===t)for(f=1n;f===1n;)c=(c*c+s)%t,f=Ki(o>c?o-c:c-o,t),r();if(f!==t)return f}}function Fn(t,e,n){for(;t!==1n;){if(Cn(t)){e.set(t,(e.get(t)??0)+1);return}let i=ta(t,n);Fn(i,e,n),t/=i}}var na=[BigInt(4),BigInt(2),BigInt(4),BigInt(2),BigInt(4),BigInt(6),BigInt(2),BigInt(6)];function _n(t,e){if(t<Number.MAX_SAFE_INTEGER){let p=Rt(Number(t),e),h=new Map;for(let g of Object.keys(p))h.set(U(g),p[Number(g)]);return h}let n=t,i=new Map,r=0,s=0,o=0,a=BigInt(10);for(;n%a===BigInt(0);)r+=1,o+=1,n=n/a;for(a=BigInt(5);n%a===BigInt(0);)o+=1,n=n/a;for(a=BigInt(3);n%a===BigInt(0);)s+=1,n=n/a;for(a=BigInt(2);n%a===BigInt(0);)r+=1,n=n/a;r>0&&i.set("2",r),s>0&&i.set("3",s),o>0&&i.set("5",o),a=BigInt(7);let c="",l=0,f=BigInt(65536),m=0;for(;a*a<=n&&a<=f;)(++m&1023)===0&&A(e),n%a===BigInt(0)?(c||(c=a.toString()),i.set(c,(i.get(c)??0)+1),n=n/a):(a=a+na[l],c="",l=l<7?l+1:0);let d=new Map;for(let[p,h]of i)d.set(U(p),h);return n!==BigInt(1)&&Fn(n,d,e),d}var er=21,Vn=53,tr=Math.floor(Math.log10(Math.pow(2,Vn))),jn=1e-10,At=1e-14,L=1e6,nr=1024,ir=1e4,rr=200;function Ln(t){if(t!==t)return t;if(t===-1/0)return-Number.MAX_VALUE;if(t===1/0||t===Number.MAX_VALUE)return 1/0;let e=t*(t<0?1-Number.EPSILON/2:1+Number.EPSILON);e===t&&(e=Number.MIN_VALUE*Number.EPSILON>0?t+Number.MIN_VALUE*Number.EPSILON:t+Number.MIN_VALUE),e===1/0&&(e=+Number.MAX_VALUE);let n=t+(e-t)/2;t<n&&n<e&&(e=n);let i=(e+t)/2;return t<i&&i<e&&(e=i),e===0?-0:e}function sr(t){return-Ln(-t)}function qn(t,e){if(e===1)return t;if(e===2)return Math.sqrt(t);if(e===3)return Math.cbrt(t);if(!Number.isInteger(e)||t===0||!Number.isFinite(t)||t<0)return Math.pow(t,1/e);let n=Math.pow(t,1/e);if(!Number.isFinite(n)||n===0)return n;n=((e-1)*n+t/Math.pow(n,e-1))/e;let i=Math.round(n);return i>0&&Math.abs(n-i)<=8*Number.EPSILON*i&&i**e===t?i:n}function ne(t,e){if(t>=Number.MAX_SAFE_INTEGER)return[1,t];if(t===0)return[0,0];if(t===1)return[1,1];if(Number.isInteger(t)&&t>0&&t<Number.MAX_SAFE_INTEGER,e===2){let s=[[0,0],[1,1],[1,2],[1,3],[2,1],[1,5],[1,6],[1,7],[2,2],[3,1],[1,10],[1,11],[2,3],[1,13],[1,14],[1,15],[4,1],[1,17],[3,2],[1,19],[2,5]][t];if(s)return s}let n=Rt(t),i=BigInt(1),r=BigInt(1);for(let s of Object.keys(n)){let o=BigInt(parseInt(s)),a=BigInt(e);i=i*o**(BigInt(n[Number(s)])/a),r=r*o**(BigInt(n[Number(s)])%a)}return[Number(i),Number(r)]}function G(t,e){if(t===0)return e;if(e===0||t===e)return t;if(!Number.isInteger(t)||!Number.isInteger(e))return NaN;for(;e!==0;)[t,e]=[e,t%e];return t<0?-t:t}function Ot(t,e){if(t===0||e===0)return 0;let n=BigInt(t)*BigInt(e)/BigInt(G(t,e));return n<0n&&(n=-n),Number(n)}function or(t){if(!Number.isInteger(t)||t<0)return NaN;if(t>170)return 1/0;let e=1;for(let n=2;n<=t;n++)e=e*n;return e}function ar(t){if(!Number.isInteger(t)||t<0)return NaN;if(t<0)return NaN;if(t<=1)return 1;let e=t;for(;t>2;)if(t-=2,e*=t,!Number.isFinite(e))return e;return e}function ur(t,e=jn){return typeof t=="number"&&Math.abs(t)<=e?0:t}function cr(t,e,n=.1){return(t(e-4*n)/280-4*t(e-3*n)/105+t(e-2*n)/5-4*t(e-n)/5+4*t(e+n)/5-t(e+2*n)/5+4*t(e+3*n)/105-t(e+4*n)/280)/n}function ia(t,e,n,i){let o=!Number.isFinite(e),a=h=>o?1/h:e+h,c=(h,g,y)=>{let I=.01*Math.max(1,Math.abs(y));for(let T=1;T<=5;T++){A(i);let N=t(a(h*Math.pow(g/h,T/6)));if(!Number.isFinite(N)||Math.abs(N-y)>I)return!1}return!0},l=o?1/n:n,f=0,m=!1,d=NaN,p=NaN;for(let h=1;h<=60;h++){A(i);let g=t(a(l));if(!Number.isFinite(g))return h-1;let y=Math.abs(g);if(h===1){f=y,d=y,p=l,l*=.125;continue}if(Math.abs(y-d)<=1e-10*Math.max(1,y))return c(p,l,g)?1/0:0;if(m&&f>1e-6&&y<1e-8*f)return h-1;y>f&&(m=!0,f=y),d=y,p=l,l*=.125}return 1/0}function Bt(t,e,n=1,i){if(i??=Le(),n===0){let c=Bt(t,e,-1,i),l=Bt(t,e,1,i);return c===void 0||l===void 0?NaN:Math.abs(c-l)>1e-5?NaN:(c+l)/2}let r=n>0?1:-1,s=ia(t,e,r,i);if(s===0)return NaN;let[o,a]=St(t,e,{step:r,deadline:i,...Number.isFinite(s)?{maxeval:s}:{}});return Number.isFinite(o)&&a>1e-6*Math.max(1,Math.abs(o))?NaN:o}function*lr(){yield[0,1];for(let t=1;;t++)for(let e=0;e<=t;e++){let n=t-e;n!==0&&G(e,n)===1&&(yield[e,n],yield[-e,n])}}function*fr(){yield[0,1];for(let t=1;;t++)for(let e=0;e<=t;e++){let n=t-e;n!==0&&G(e,n)===1&&(yield[e,n])}}function*mr(){yield[0,0];for(let t=1;;t++)for(let e=0;e<=t;e++){let n=t-e;if(n===0||G(e,n)!==1)continue;let i=e/n;for(let r=0;r<=t;r++){let s=t-r;if(s===0||G(r,s)!==1)continue;let o=r/s;yield[i,o],yield[-i,o],yield[i,-o],yield[-i,-o]}}}function*dr(){yield 0;for(let t=1;;t++)yield t,yield-t}function*pr(){for(let t=0;;t++)yield t}function ke(t,e){for(;e!==BigInt(0);)[t,e]=[e,t%e];return t<0?-t:t}function Dt(t,e){return t===0n||e===0n?0n:t*e/ke(t,e)}function xe(t,e){let n=_n(t),i=BigInt(1),r=BigInt(1),s=BigInt(e);for(let[o,a]of n){let c=U(a);i=i*o**(c/s),r=r*o**(c%s)}return[i,r]}function hr(t){return t>=Number.MIN_SAFE_INTEGER&&t<=Number.MAX_SAFE_INTEGER?Number(t):t}function*$n(t){if(t<0)return BigInt(0);if(t<10)return BigInt([1,1,2,6,24,120,720,5040,40320,362880][Number(t)]);if(t%BigInt(2)===BigInt(1))return t*(yield*$n(t-BigInt(1)));let e=t,n=t,i=t;for(;e>2;)e-=BigInt(2),n+=e,i*=n,yield i;return i}function ra(t){return t!==null&&Array.isArray(t)}function C(t){return t!==null&&Array.isArray(t)&&typeof t[0]=="number"}function tt(t){return t!==null&&Array.isArray(t)&&typeof t[0]=="bigint"}function R(t){return t[0]==0}function qe(t){return t[0]>0}function Ct(t){return t[0]==t[1]}function Ft(t){return t[0]===-t[1]}function de(t){return t[1]==1}function sa(t){return Number(t[0])}function oa(t){return Number(t[1])}function _t(t){return Number(t[0])/Number(t[1])}function aa(t){return t[0]<0}function ua(t,e){return S(t,Pe(e))}function F(t,e){if(typeof t[0]=="number"&&!Number.isFinite(t[0]))return t;let n=e;if(n===null)return t;if(tt(n))return t=[BigInt(t[0]),BigInt(t[1])],[n[1]*t[0]+n[0]*t[1],n[1]*t[1]];if(!Number.isFinite(n[0]))return n;if(tt(t)){let s=[BigInt(n[0]),BigInt(n[1])];return[s[1]*t[0]+s[0]*t[1],s[1]*t[1]]}let i=n[1]*t[0]+n[0]*t[1],r=n[1]*t[1];return i<=9007199254740991&&i>=-9007199254740991&&r<=9007199254740991?[i,r]:!Number.isFinite(t[0])||!Number.isFinite(t[1])||!Number.isFinite(n[0])||!Number.isFinite(n[1])?[NaN,1]:[BigInt(n[1])*BigInt(t[0])+BigInt(n[0])*BigInt(t[1]),BigInt(n[1])*BigInt(t[1])]}function S(t,e){if(C(t)&&(!Number.isFinite(t[0])||!Number.isFinite(t[1])))return[NaN,1];if(C(e)&&(!Number.isFinite(e[0])||!Number.isFinite(e[1])))return[NaN,1];if(C(t)&&C(e)){let n=t[0]*e[0],i=t[1]*e[1];return n<=9007199254740991&&n>=-9007199254740991&&i<=9007199254740991?[n,i]:[BigInt(t[0])*BigInt(e[0]),BigInt(t[1])*BigInt(e[1])]}return C(t)?[BigInt(t[0])*e[0],BigInt(t[1])*e[1]]:C(e)?[BigInt(e[0])*t[0],BigInt(e[1])*t[1]]:[t[0]*e[0],t[1]*e[1]]}function re(t){return[-t[0],t[1]]}function Pe(t){return t[0]<0?[-t[1],-t[0]]:[t[1],t[0]]}function ca(t){return[Number(t[0]),Number(t[1])]}function la(t,e){if(Number.isInteger(e),e===0)return[1,1];if(e<0&&(t=Pe(t),e=-e),e===1)return t;let n=BigInt(e);return[BigInt(t[0])**n,BigInt(t[1])**n]}function fa(t){let e=Math.sqrt(Number(t[0])),n=Math.sqrt(Number(t[1]));if(Number.isInteger(e)&&Number.isInteger(n))return[e,n]}function Zn(t,e){return C(t)&&C(e)?t[1]===1&&e[1]===1?[G(t[0],e[0]),1]:[G(t[0],e[0]),Ot(t[1],e[1])]:t[1]===1&&e[1]===1?[ke(BigInt(t[0]),BigInt(e[0])),BigInt(1)]:[ke(BigInt(t[0]),BigInt(e[0])),Dt(BigInt(t[1]),BigInt(e[1]))]}function ie(t){if(C(t)){if(t[1]<0&&(t=[-t[0],-t[1]]),t[0]===1||t[1]===1)return t;if(!Number.isFinite(t[1]))return[0,1];let r=G(t[0],t[1]);return r<=1?t:[t[0]/r,t[1]/r]}t[1]<0&&(t=[-t[0],-t[1]]);let e=ke(t[0],t[1]),[n,i]=e<=1?t:[t[0]/e,t[1]/e];return n<=Number.MAX_SAFE_INTEGER&&n>=Number.MIN_SAFE_INTEGER&&i<=Number.MAX_SAFE_INTEGER?[Number(n),Number(i)]:[n,i]}function ma(t,e){if(!Number.isFinite(t))return null;for(let n=1;n<=1e6;n*=10){let i=t*n;if(Number.isInteger(i))return!Number.isSafeInteger(i)||!Number.isSafeInteger(e*n)?null:ie([i,e*n])}return null}function da(t,e){if(!Number.isFinite(t)||t%1===0)return t;let i=1e-15,r=e!==void 0&&e>0?e:0,s=t,o=Math.floor(t),a=1,c=0,l=o,f=1;if(r>0&&Math.abs(l/f-s)<=r)return[l,f];for(;t-o>i*f*f;){t=1/(t-o),o=Math.floor(t);let m=a;a=l;let d=c;if(c=f,l=m+o*a,f=d+o*c,r>0&&Math.abs(l/f-s)<=r)return[l,f]}return[l,f]}function pa(t){if(tt(t)){let[a,c]=t,[l,f]=xe(a,2),[m,d]=xe(c,2);return[ie([l,m*d]),f*d]}let[e,n]=t,[i,r]=ne(e,2),[s,o]=ne(n,2);return[ie([i,s*o]),r*o]}function ha(t,e){if(tt(t)){let[c,l]=t,[f,m]=xe(c,e),[d,p]=xe(l,e);return[ie([f,d]),ie([m,p])]}let[n,i]=t,[r,s]=ne(n,e),[o,a]=ne(i,e);return[ie([r,o]),ie([s,a])]}function gr(t){return!!(typeof t=="number"||Un(t)||typeof t=="string"&&ga(t))}function Un(t){return t!==null&&typeof t=="object"&&"num"in t}function ga(t){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(t)||/^[+-]?(0|[1-9][0-9]*)(\.([0-9]+(\([0-9]+\))?|\([0-9]+\)))?([eE][+-]?[0-9]+)?$/.test(t)}function br(t,e){return typeof t=="number"?Number.isFinite(t)?parseFloat(t.toPrecision(e)):t:t.toPrecision(e)}function nt(t,e){return t.toFixed(e)}function ba(t,e,n="auto"){if(n==="max")return{value:String(t),error:String(e)};if(typeof n=="object"&&"fractional"in n){let c=n.fractional;return{value:nt(t,c),error:nt(e,c)}}let i=n==="auto"?2:n.significant,r=br(e,i),s=parseInt(r.toExponential().split("e")[1],10),o=i-1-s;if(o>0)return{value:nt(t,o),error:nt(r,o)};let a=Math.pow(10,-o);return{value:String(Math.round(t/a)*a),error:String(Math.round(r/a)*a)}}function Na(t){if(t==="N")return[0,""];let e={I:1,V:5,X:10,L:50,C:100,D:500,M:1e3},n=0,i=0;t=t.toUpperCase();for(let r=t.length-1;r>=0;r--){let s=e[t[r]];if(s===void 0)return[n,t.slice(r)];s<i?n-=s:n+=s,i=s}return[n,""]}function Gn(t,e){if(t=t.trim(),t.length===0)return[NaN,""];if(t.startsWith("+"))return Gn(t.slice(1),e);if(t.startsWith("-")){let[r,s]=Gn(t.slice(1),e);return[-r,s]}let n=10;if(typeof e=="string"&&(e=e.toLowerCase()),t.startsWith("0x"))n=16,t=t.slice(2);else if(t.startsWith("0b"))n=2,t=t.slice(2);else{if(e==="roman")return Na(t);if(e==="base64"||e==="base-64")try{return[parseInt(btoa(t)),""]}catch{return[NaN,""]}else typeof e=="number"?n=e:typeof e=="string"&&(n=parseInt(e))}let i=0;for(let r=0;r<t.length;r++){let s={" ":-1,"\xA0":-1,"\u2000":-1,"\u2001":-1,"\u2002":-1,"\u2003":-1,"\u2004":-1,"\u2005":-1,"\u2006":-1,"\u2007":-1,"\u2008":-1,"\u2009":-1,"\u200A":-1,"\u200B":-1,"\u202F":-1,"\u205F":-1,_:-1,",":-1,0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,b:11,c:12,d:13,e:14,f:15,g:16,h:17,i:18,j:19,k:20,l:21,m:22,n:23,o:24,p:25,q:26,r:27,s:28,t:29,u:30,v:31,w:32,x:33,y:34,z:35}[t[r].toLowerCase()];if(s!==-1){if(s===void 0)return[i,t.substring(r)];if(s>=n)return[i,t.substring(r)];i=i*n+s}}return[i,""]}function O(t,e){if(typeof e=="number"&&typeof t=="number")return t.toFixed(e);let n=t.toString();if(typeof t=="number"&&Number.isInteger(t)&&n.includes("e")){let i=BigInt(t).toString(),r=i.match(/0+$/);if((r?r[0].length:0)<=5)return i}else if(typeof t=="bigint"){let i=n.match(/0+$/),r=i?i[0].length:0;if(r>5)return`${n.slice(0,-r)}e+${r}`}return n}function ya(t){if(typeof t=="number")return Number.isInteger(t)?BigInt(t):null;if(t==null||!gr(t))return null;let e=Un(t)?t.num:t;if(typeof e=="number")return Number.isInteger(e)?BigInt(e):null;if(typeof e!="string")return null;let n=e.toLowerCase().replace(/[nd]$/,"").replace(/[\u0009-\u000d\u0020\u00a0]/g,"");return n==="nan"||/^(infinity|\+infinity|oo|\+oo|-infinity|-oo)$/.test(n)?null:U(n)}function q(t,e){if(typeof t=="number")return isNaN(t)?"NaN":Number.isFinite(t)?typeof e=="number"?{num:t.toFixed(e)}:t:t<0?"NegativeInfinity":"PositiveInfinity";if(t>=Number.MIN_SAFE_INTEGER&&t<=Number.MAX_SAFE_INTEGER)return Number(t);let n=Number(t);return Number.isFinite(n)&&BigInt(n)===t?n:{num:O(t)}}var Ta=["sgn","type","effects","lazyValue","storedValue","elementMemo","collectionFacet","typeParse"],Ia=["hit","hitConstant","hitFastPath","missCold","missGeneration","missGenerationWasted","missEpoch","missScope","missKeyShape","missDependency","declineCycle","declineStore","evictClear"],va=["generation","mutationGeneration","semanticEpoch","valueWrite","ephemeralValueWrite"],Ea=["clean","dirty"],it=(()=>{if(typeof process>"u")return!1;let t=process.env?.CE_CACHE_STATS;return t!==void 0&&t!=="0"})(),Nr=it||typeof process<"u"&&!1;function Ma(){let t={};for(let e of Ia)t[e]=0;return t}var wa=(()=>{let t={};for(let e of Ta)t[e]=Ma();return t})(),vl=(()=>{let t={};for(let e of va)t[e]=0;return t})(),El=(()=>{let t={};for(let e of Ea)t[e]=0;return t})();function Vt(t,e){wa[t][e]+=1}var jt=["number","complex","imaginary","real","rational","integer","infinity","nan"],Yn=["indexed_collection","list","tuple","range","string"],Lt=Object.freeze({kind:"indexed_collection",elements:"integer"}),qt=Object.freeze({kind:"indexed_collection",elements:"character"}),Wn=Object.freeze({kind:"list",elements:"unknown"}),Jn=Object.freeze({kind:"set",elements:"unknown"}),rt=Object.freeze({kind:"dictionary",values:"unknown"}),$t=Object.freeze({kind:"collection",elements:"unknown"}),st=Object.freeze({kind:"indexed_collection",elements:"unknown"}),wl=Object.freeze({kind:"collection",elements:"any"}),kl=Object.freeze({kind:"indexed_collection",elements:"any"}),xl=Object.freeze({kind:"dictionary",values:"any"}),Pl=Object.freeze({kind:"union",types:[{kind:"value",value:1/0},{kind:"value",value:-1/0}]}),Sl=Object.freeze({kind:"union",types:["real",{kind:"value",value:1/0},{kind:"value",value:-1/0}]}),Zt=[...Yn,"collection","set","record","dictionary"],Ut=["scalar",...jt,"boolean","character"],Hn=["value","color","regexp","type","object",...Zt,...Ut],Xn=["expression","symbol","function",...Hn],Kn=["any","unknown","nothing","missing","never","error",...Xn],ot=new Set(jt),yr=new Set(Zt),Tr=new Set(Ut),$e=new Set(Kn),Ir="Variadic arguments cannot be used with optional arguments";function vr(t){return typeof t=="string"?$e.has(t):typeof t!="object"||!("kind"in t)?!1:t.kind==="signature"||t.kind==="union"||t.kind==="intersection"||t.kind==="negation"||t.kind==="value"||t.kind==="tuple"||t.kind==="list"||t.kind==="record"||t.kind==="object"||t.kind==="dictionary"||t.kind==="set"||t.kind==="broadcastable"||t.kind==="symbol"||t.kind==="expression"||t.kind==="numeric"||t.kind==="collection"||t.kind==="indexed_collection"||t.kind==="variable"||t.kind==="reference"}var Er=Object.freeze({complexInfinity:!0});function pe(t){return typeof t=="object"&&t!==null&&t.complexInfinity===!0}function ka(t){return t==="\u211D"||t==="\u2124"||t==="\u211A"||t==="\u2102"||t==="\u2115"}var at=class{input;pos=0;line=1;column=1;tokens=[];tolerant;constructor(e,n){this.input=e,this.tolerant=n?.tolerant??!1}saveState(){return{pos:this.pos,line:this.line,column:this.column,tokens:[...this.tokens]}}restoreState(e){this.pos=e.pos,this.line=e.line,this.column=e.column,this.tokens=e.tokens}error(e){throw new Error(`Lexer error at line ${this.line}, column ${this.column}: ${e}`)}peek(e=0){let n=this.pos+e;return n<this.input.length?this.input[n]:""}advance(){let e=this.input[this.pos++];return e===`
|
|
4
4
|
`?(this.line++,this.column=1):this.column++,e}match(e){if(this.input.slice(this.pos,this.pos+e.length)===e){for(let n=0;n<e.length;n++)this.advance();return!0}return!1}isEOF(){return this.pos>=this.input.length}skipTrivia(){for(;!this.isEOF();){if(/\s/.test(this.peek())){this.advance();continue}if(this.peek()==="/"&&this.peek(1)==="/"){for(;!this.isEOF()&&!/[\n\r\u2028\u2029]/.test(this.peek());)this.advance();continue}if(this.peek()==="/"&&this.peek(1)==="*"){this.skipBlockComment();continue}break}}skipBlockComment(){this.advance(),this.advance();let e=1;for(;e>0&&!this.isEOF();)this.peek()==="/"&&this.peek(1)==="*"?(e++,this.advance(),this.advance()):this.peek()==="*"&&this.peek(1)==="/"?(e--,this.advance(),this.advance()):this.advance();e>0&&!this.tolerant&&this.error("Unterminated comment")}readIdentifier(){let e="";for(;!this.isEOF()&&/[a-zA-Z0-9_]/.test(this.peek());)e+=this.advance();return e}readVerbatimString(){if(!this.match("`"))return"";let e="";for(;!this.isEOF()&&this.peek()!=="`";)this.match("\\`")?e+="`":this.match("\\\\")?e+="\\":e+=this.advance();return this.isEOF()&&this.error("Unterminated verbatim string"),this.advance(),e}readStringLiteral(){let e=this.advance(),n="";for(;!this.isEOF()&&this.peek()!==e;)this.match("\\"+e)?n+=e:this.match("\\\\")?n+="\\":n+=this.advance();return this.isEOF()&&this.error("Unterminated string literal"),this.advance(),n}readNumber(){let e="";if((this.peek()==="-"||this.peek()==="+")&&(e+=this.advance()),this.match("0x")||this.match("0X")){for(e+="x";!this.isEOF()&&/[0-9a-fA-F]/.test(this.peek());)e+=this.advance();return"0"+e}if(this.match("0b")||this.match("0B")){for(e+="b";!this.isEOF()&&/[01]/.test(this.peek());)e+=this.advance();return"0"+e}for(;!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="."&&/[0-9]/.test(this.peek(1)))for(e+=this.advance();!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();if(this.peek()==="e"||this.peek()==="E")for(e+=this.advance(),(this.peek()==="+"||this.peek()==="-")&&(e+=this.advance());!this.isEOF()&&/[0-9]/.test(this.peek());)e+=this.advance();return e}createToken(e,n){return{type:e,value:n,position:this.pos-n.length,line:this.line,column:this.column-n.length}}nextToken(){if(this.skipTrivia(),this.isEOF())return this.createToken("EOF","");let e=this.pos,n=this.peek();if(this.match("->"))return this.createToken("->","->");if(this.peek()==="<"&&this.input.startsWith("<..",this.pos)&&this.pos>0&&/[0-9.∞o+\-]/.test(this.input[this.pos-1]))return this.match("<.."),this.createToken("<..","<..");if(this.input.startsWith("..<",this.pos)&&this.pos+3<this.input.length&&!/\s/.test(this.input[this.pos+3]))return this.match("..<"),this.createToken("..<","..<");if(this.match(".."))return this.createToken("..","..");if(this.match("+\u221E")||this.match("+oo"))return this.createToken("PLUS_INFINITY",this.input.slice(e,this.pos));if(this.match("-\u221E")||this.match("-oo"))return this.createToken("MINUS_INFINITY",this.input.slice(e,this.pos));if(this.match("~\u221E")||this.match("~oo"))return this.createToken("COMPLEX_INFINITY",this.input.slice(e,this.pos));if(this.match("+infinity")||this.match("+Infinity"))return this.createToken("PLUS_INFINITY",this.input.slice(e,this.pos));if(this.match("-infinity")||this.match("-Infinity"))return this.createToken("MINUS_INFINITY",this.input.slice(e,this.pos));if(ka(n)&&!/[a-zA-Z0-9_]/.test(this.peek(1)))return this.advance(),this.createToken("IDENTIFIER",n);if(/[a-zA-Z_]/.test(n)){let i=this.readIdentifier();switch(i){case"true":return this.createToken("TRUE",i);case"false":return this.createToken("FALSE",i);case"NaN":return this.createToken("NAN",i);case"Infinity":case"oo":return this.createToken("INFINITY",i);default:return this.createToken("IDENTIFIER",i)}}switch(n){case"|":return this.advance(),this.createToken("|","|");case"&":return this.advance(),this.createToken("&","&");case"!":return this.advance(),this.createToken("!","!");case"^":return this.advance(),this.createToken("^","^");case"(":return this.advance(),this.createToken("(","(");case")":return this.advance(),this.createToken(")",")");case"<":return this.advance(),this.createToken("<","<");case">":return this.advance(),this.createToken(">",">");case"[":return this.advance(),this.createToken("[","[");case"]":return this.advance(),this.createToken("]","]");case"{":return this.advance(),this.createToken("{","{");case"}":return this.advance(),this.createToken("}","}");case",":return this.advance(),this.createToken(",",",");case":":return this.advance(),this.createToken(":",":");case"?":return this.advance(),this.createToken("?","?");case"*":return this.advance(),this.createToken("*","*");case".":return this.advance(),this.createToken(".",".");case"+":return/[0-9]/.test(this.peek(1))?this.createToken("NUMBER_LITERAL",this.readNumber()):(this.advance(),this.createToken("+","+"));case"x":return/[0-9]/.test(this.peek(1))?(this.advance(),this.createToken("x","x")):(this.advance(),this.createToken("x","x"))}if(n==='"'||n==="'")return this.createToken("STRING_LITERAL",this.readStringLiteral());if(n==="`")return this.createToken("VERBATIM_STRING",this.readVerbatimString());if(/[0-9]/.test(n)||n==="-"&&/[0-9]/.test(this.peek(1))){let i=this.readNumber();return this.peek()==="x"&&/[0-9]/.test(this.peek(1)),this.createToken("NUMBER_LITERAL",i)}if(n==="\u221E")return this.advance(),this.createToken("INFINITY","\u221E");if(this.tolerant)return this.createToken("EOF","");this.error(`Unexpected character: ${n}`)}tokenize(){let e=[];for(;!this.isEOF();){let n=this.nextToken();if(n&&(e.push(n),n.type==="EOF"))break}return e}peekToken(){if(this.tokens.length===0){let e=this.nextToken();e&&this.tokens.push(e)}return this.tokens[0]||this.createToken("EOF","")}consumeToken(){if(this.tokens.length===0){let e=this.nextToken();if(e)return e}return this.tokens.shift()||this.createToken("EOF","")}matchToken(e){return this.peekToken().type===e?(this.consumeToken(),!0):!1}expectToken(e){let n=this.consumeToken();return n.type!==e&&this.error(`Expected ${e}, got ${n.type}`),n}};var Qn=["console","entropy","environment","fs_read","fs_write","network","random","scope","state","time"],xa=new Set(Qn);function zn(t){return xa.has(t)}function Mr(t){return t===void 0||t!=="any"&&t.length===0}function wr(t,e){return Mr(t)||e==="any"?!0:t==="any"||Mr(e)?!1:t.every(n=>e.includes(n))}function kr(t){return t==="any"?"any":t.length===0?"pure":[...t].sort().join(" ")}var Pa=Object.assign(Object.create(null),{finite_number:"complex",finite_complex:"complex",finite_real:"real",finite_rational:"rational",finite_integer:"integer"}),Sa=Object.assign(Object.create(null),{\u211D:"real",\u2124:"integer",\u211A:"rational",\u2102:"complex"});function xr(t){return Sa[t]??Pa[t]??t}var Gt=class{lexer;typeResolver;current;allowTrailing;_end=0;_typeVarScopes=[];allowWhere;allowObjectType;blockFollows;_sawWhere=!1;_sawForwardRef=!1;constructor(e,n){this.allowTrailing=n?.allowTrailing??!1,this.allowWhere=n?.allowWhere??!0,this.allowObjectType=n?.allowObjectType??!1,this.blockFollows=n?.blockFollows??!1,n?.typeVars!==void 0&&n.typeVars.length>0&&this._typeVarScopes.push(new Set(n.typeVars.map(i=>i.name))),this.lexer=new at(e,{tolerant:this.allowTrailing}),this.typeResolver=n?.typeResolver??{forward:()=>{},resolve:()=>{},get names(){return[]}},this.current=this.lexer.consumeToken()}get endOffset(){return this._end}get sawWhereClause(){return this._sawWhere}get sawForwardRef(){return this._sawForwardRef}error(e,n){this.errorAtToken(this.current,e,n)}errorAtToken(e,n,i,r){let s=this.lexer.input;this.allowTrailing&&(s=s.slice(0,e.position+e.value.length));let a=s.split(`
|
|
5
5
|
`)[e.line-1]||s,c=e.column,l=" ".repeat(Math.max(0,c-1))+"^",f=["","Invalid type",`| ${a}`,`| ${l}`,"|",`| ${n}`];i&&f.push(`| ${i}`),f.push("");let m=new Error(f.join(`
|
|
6
6
|
`));throw m.position=e.position,m.rawMessage=n,r!==void 0&&(m.code=r),m}advance(){let e=this.current;return this._end=e.position+e.value.length,this.current=this.lexer.consumeToken(),e}match(e){return this.current.type===e?(this.advance(),!0):!1}expect(e){return this.current.type!==e&&this.error(`Expected ${e}, got ${this.current.type}`),this.advance()}createNode(e,n={}){return{kind:e,position:this.current.position,line:this.current.line,column:this.current.column,...n}}parseType(){this.checkForNakedFunctionSignature();let e=this.allowWhere?this.parseConstrainedType():this.parseUnionType();if(e||this.error("Expected a type"),this.current.type!=="EOF")if(this.current.type==="->"||this.current.type==="+"||this.current.type==="*"||this.current.type==="?")this.error("Function signatures must be enclosed in parentheses","For example `(x: number) -> number`");else if(this.current.type==="IDENTIFIER"&&zn(this.current.value))this.error("Function signatures must be enclosed in parentheses","For example `(real) random -> real`");else if(this.current.type==="("){let n=this.lexer.input;n.includes("set(")||n.includes("collection(")||n.includes("list(")||n.includes("tuple(")?n.includes("set(")?this.error("Use `set<integer>` instead of `set(integer)`."):n.includes("collection(")?this.error("Use `collection<type>` instead of `collection(type)`.","For example `collection<number>`"):n.includes("list(")?this.error("Use `list<type>` instead of `list(type)`.","For example `list<number>`"):n.includes("tuple(")&&this.error("Use `tuple<type1, type2>` instead of `tuple(type1, type2)`.","For example `tuple<string, number>`"):this.error("Unexpected token after type")}else this.error("Unexpected token after type");return e}parseTypePrefix(){this.checkForNakedFunctionSignature();let e=this.allowWhere?this.parseConstrainedType():this.parseUnionType();return e||this.error("Expected a type"),e}checkForNakedFunctionSignature(){if(this.current.type==="IDENTIFIER"){let e=this.lexer.saveState(),n=this.current;try{let i=this.current;if(this.advance(),this.current.type===":"){this.advance();let r=!1,s=0,o=10;for(;this.current.type!=="EOF"&&s<o;){if(this.current.type==="->"){r=!0;break}if(this.current.type==="+"||this.current.type==="*"||this.current.type==="?"){if(this.advance(),this.current.type==="->"){r=!0;break}s++}this.advance(),s++}r&&(this.lexer.restoreState(e),this.current=n,this.errorAtToken(i,"Function signatures must be enclosed in parentheses","For example `(z: string*) -> boolean`"))}this.lexer.restoreState(e),this.current=n}catch(i){if(this.lexer.restoreState(e),this.current=n,i instanceof Error&&i.message.includes("Function signatures must be enclosed"))throw i}}}parseUnionType(){let e=this.parseIntersectionType();if(!e)return;let n=[e];for(;this.match("|");){let r=this.parseIntersectionType();r||this.error("Expected type after |"),n.push(r)}if(n.length===1)return n[0];let i=[];for(let r of n)r.kind==="union"?i.push(...r.types):i.push(r);return this.createNode("union",{types:i})}parseIntersectionType(){let e=this.parsePrimaryType();if(!e)return;let n=[e];for(;this.match("&");){let i=this.parsePrimaryType();i||this.error("Expected type after &"),n.push(i)}return n.length===1?n[0]:this.createNode("intersection",{types:n})}isTypeVariable(e){for(let n=this._typeVarScopes.length-1;n>=0;n--)if(this._typeVarScopes[n].has(e))return!0;return!1}parseConstrainedType(){let e=this.scanWhereClauseNames();e!==null&&(this._sawWhere=!0,this._typeVarScopes.push(new Set(e)));try{let n=this.parseUnionType();if(!n)return;if(this.current.type==="IDENTIFIER"&&this.current.value==="where"){let i=this.parseWhereClause();return this.createNode("constrained",{typeParams:i,body:n})}return n}finally{e!==null&&this._typeVarScopes.pop()}}scanWhereClauseNames(){let e=this.lexer.input,n=this.current.position;if(!e.includes("where",n))return null;let i=new at(e.slice(n),{tolerant:!0}),r=0,s=i.consumeToken();for(;s.type!=="EOF";){switch(s.type){case"(":case"<":case"[":case"{":r+=1;break;case")":case">":case"]":case"}":if(r-=1,r<0)return null;break;case",":if(r===0)return null;break;case"IDENTIFIER":if(r===0&&s.value==="where"){let o=[];for(s=i.consumeToken();;){if(s.type!=="IDENTIFIER")return o;o.push(s.value);let a=0;for(s=i.consumeToken();s.type!=="EOF";){if(s.type==="("||s.type==="<"||s.type==="["||s.type==="{")a+=1;else if(s.type===")"||s.type===">"||s.type==="]"||s.type==="}"){if(a-=1,a<0)return o}else if(s.type===","&&a===0)break;s=i.consumeToken()}if(s.type==="EOF")return o;s=i.consumeToken()}}break}s=i.consumeToken()}return null}parseWhereClause(){this._sawWhere=!0,this.advance();let e=new Set,n=[];do{this.current.type!=="IDENTIFIER"&&this.error("Expected a type variable name after `where`","For example `(T) -> T where T`");let i=this.current,r=this.advance().value;r==="where"&&this.errorAtToken(i,"The type name `where` is reserved"),e.has(r)&&this.errorAtToken(i,`The type variable \`${r}\` is declared more than once`),e.add(r);let s;this.match(":")&&(s=this.parseUnionType(),s||this.error(`Expected a type after the bound of \`${r}\``,"For example `(T) -> T where T: number`"));let o;if(this.current.type==="IDENTIFIER"&&this.current.value==="is"){this.advance(),o=[];do this.current.type!=="IDENTIFIER"&&this.error("Expected a protocol name after `is`","For example `(T) -> T where T: collection is Hashable`"),o.push(this.advance().value);while(this.match("&"))}n.push(this.createNode("type_param",{name:r,bound:s,protocols:o}))}while(this.match(","));return n}checkForLegacyForall(){let e=this.lexer.saveState(),n=this.current,i=this.current,r=!1;try{if(this.advance(),this.current.type==="IDENTIFIER"){this.advance();let s=this.current.type;r=s===":"||s===","||s==="."}}finally{this.lexer.restoreState(e),this.current=n}r&&this.errorAtToken(i,"The `forall T. \u2026` prefix syntax was replaced by a trailing `where` clause","For example `(T) -> T where T: number`")}parsePrimaryType(){if(this.current.type==="IDENTIFIER"){if(this.isTypeVariable(this.current.value)){let e=this.advance().value;return this.createNode("type_variable",{name:e})}this.current.value==="forall"&&this.checkForLegacyForall()}if(this.match("!")){let e=this.parsePrimaryType();return e||this.error("Expected type after !"),this.createNode("negation",{type:e})}if(this.current.type==="("){let e=this.parseFunctionSignature();if(e)return e;if(this.match("(")){let n=this.parseConstrainedType();if(n||this.error("Expected type after ("),this.current.type===","){let i=[this.createNode("named_element",{name:void 0,type:n})];for(;this.match(",");){let r=this.parseUnionType();r||this.error("Expected type after ,"),i.push(this.createNode("named_element",{name:void 0,type:r}))}return this.expect(")"),this.createNode("tuple",{elements:i})}return this.expect(")"),this.createNode("group",{type:n})}}return this.parseListType()||this.parseTupleType()||this.parseRecordType()||this.parseObjectType()||this.parseDictionaryType()||this.parseSetType()||this.parseBroadcastableType()||this.parseCallbackType()||this.parseCollectionType()||this.parseExpressionType()||this.parseSymbolType()||this.parseNumericType()||this.parseSignedInfinityName()||this.parsePrimitiveType()||this.parseValue()||this.parseTypeReference()}parseSignedInfinityName(){if(!(this.current.type!=="IDENTIFIER"||this.current.value!=="signed_infinity"&&this.current.value!=="non_finite_number"))return this.advance(),this.createNode("union",{types:[this.createNode("value",{value:1/0,valueType:"infinity"}),this.createNode("value",{value:-1/0,valueType:"infinity"})]})}isFunctionSignature(){let e=this.lexer.saveState(),n=this.current;this.advance();let i=1;for(;i>0&&this.current.type!=="EOF";)this.current.type==="("?i++:this.current.type===")"&&i--,this.advance();for(;this.current.type==="IDENTIFIER"||this.current.type==="!";)this.advance();let r=this.current.type==="->";return this.lexer.restoreState(e),this.current=n,r}parseEffectSpecifiers(){if(this.current.type!=="IDENTIFIER"&&this.current.type!=="!")return;let e=!1,n=!1,i=[];for(;this.current.type==="IDENTIFIER"||this.current.type==="!";){this.current.type==="!"&&this.error("The `!` effect complement form is reserved and not yet supported","Enumerate the effect labels instead, for example `(real) console scope -> real`");let r=this.current,s=r.value;if(this.advance(),s==="pure"){(i.length>0||e||n)&&this.errorAtToken(r,"`pure` cannot be combined with other effect labels",'Use `pure` alone to mean "no effects", or omit it entirely'),n=!0;continue}if(n&&this.errorAtToken(r,"`pure` cannot be combined with other effect labels",'Use `pure` alone to mean "no effects", or omit it entirely'),s==="any"){(i.length>0||e)&&this.errorAtToken(r,"`any` cannot be combined with other effect labels",'Use `any` alone to mean "unknown effects"'),e=!0;continue}e&&this.errorAtToken(r,"`any` cannot be combined with other effect labels",'Use `any` alone to mean "unknown effects"'),zn(s)||this.errorAtToken(r,`Unknown effect label \`${s}\``,`The effect labels are ${Qn.join(", ")}`),i.includes(s)&&this.errorAtToken(r,`Duplicate effect label \`${s}\``),i.push(s)}return n?[]:e?"any":i.sort()}parseFunctionSignature(){if(this.current.type!=="("||!this.isFunctionSignature())return;let e=[],n=[];if(this.advance(),!this.match(")")){do{let f=this.current,m=this.parseArgument();m||this.error("Expected argument"),e.push(m),n.push(f)}while(this.match(","));this.expect(")")}let i=this.parseEffectSpecifiers();this.expect("->");let r=this.parseUnionType();r||this.error("Expected return type after ->");let s=e.some(f=>f.modifier==="optional"),o=e.some(f=>f.modifier==="variadic_zero"||f.modifier==="variadic_one"),a=e.filter(f=>f.modifier==="variadic_zero"||f.modifier==="variadic_one").length;s&&o&&this.error(Ir),a>1&&this.error("There can be only one variadic argument");let c=!1,l=!1;for(let f=0;f<e.length;f++){let m=e[f].modifier;l&&this.errorAtToken(n[f],"A variadic argument must be the last argument"),m==="variadic_zero"||m==="variadic_one"?l=!0:m==="optional"?c=!0:c&&this.errorAtToken(n[f],"A required argument cannot follow an optional argument")}return this.createNode("function_signature",{arguments:e,effects:i,returnType:r})}parseArgument(){let e=this.parseNamedElement();if(!e)return;let n;return this.match("?")?n="optional":this.match("*")?n="variadic_zero":this.match("+")&&(n="variadic_one"),this.createNode("argument",{element:e,modifier:n})}parseNamedElement(){let e;if(this.current.type==="IDENTIFIER"||this.current.type==="VERBATIM_STRING"){let i=this.current;if(this.lexer.peekToken().type===":"){e=i.value,this.advance(),this.advance();let s=this.parseUnionType();return s?this.createNode("named_element",{name:e,type:s}):void 0}}let n=this.parseUnionType();if(n)return this.createNode("named_element",{name:void 0,type:n})}parseListType(){if(this.current.type==="IDENTIFIER"){let e=this.current,i=this.lexer.peekToken().type==="<";switch(e.value){case"list":return i?(this.advance(),this.parseListTypeImpl()):void 0;case"vector":return i?(this.advance(),this.parseVectorType()):(this.advance(),this.createNode("vector",{elementType:this.createNode("primitive",{name:"number"}),size:void 0}));case"matrix":return i?(this.advance(),this.parseMatrixType()):(this.advance(),this.createNode("matrix",{elementType:this.createNode("primitive",{name:"number"}),dimensions:[this.createNode("dimension",{size:-1}),this.createNode("dimension",{size:-1})]}));case"tensor":return i?(this.advance(),this.parseTensorType()):(this.advance(),this.createNode("list",{elementType:this.createNode("primitive",{name:"number"}),dimensions:void 0}));default:return}}}parseListTypeImpl(){let e=this.createNode("primitive",{name:"unknown"}),n;if(this.match("<")){if(n=this.parseDimensions(),!n){let i=this.parseUnionType();i&&(e=i,this.match("^")&&(n=this.parseCaretDimensions()))}this.expect(">")}return this.createNode("list",{elementType:e,dimensions:n})}parseVectorType(){let e=this.createNode("primitive",{name:"number"}),n;if(this.match("<")){if(this.current.type==="NUMBER_LITERAL")n=parseInt(this.advance().value);else{let i=this.parseUnionType();i&&(e=i,this.match("^")&&(this.current.type==="NUMBER_LITERAL"?n=parseInt(this.advance().value):this.error("Expected number after ^")))}this.expect(">")}return this.createNode("vector",{elementType:e,size:n})}parseMatrixType(){let e=this.createNode("primitive",{name:"number"}),n;if(this.match("<")){if(n=this.parseDimensions(),!n){let i=this.parseUnionType();i&&(e=i,this.match("^")&&(n=this.parseCaretDimensions()))}this.expect(">")}else n=[this.createNode("dimension",{size:null}),this.createNode("dimension",{size:null})];return this.createNode("matrix",{elementType:e,dimensions:n})}parseTensorType(){let e=this.createNode("primitive",{name:"number"});if(this.match("<")){let n=this.parseUnionType();n&&(e=n),this.expect(">")}return this.createNode("tensor",{elementType:e})}parseDimensions(){let e=this.parseDimension();if(!e)return;let n=[e];for(;;){let i=this.current;if(i.type==="IDENTIFIER"&&/^(x\d+)+$/.test(i.value)){this.advance();for(let r of i.value.match(/x(\d+)/g))n.push(this.createNode("dimension",{size:parseInt(r.slice(1))}))}else if(i.type==="IDENTIFIER"&&i.value==="x"){let r=this.lexer.peekToken();r.type!=="NUMBER_LITERAL"&&r.type!=="?"&&this.error("Expected a positive integer literal or `?` after x. For example: `2x3` or `2x?`"),this.advance(),n.push(this.parseDimension())}else break}return n}parseDimension(){if(this.match("?"))return this.createNode("dimension",{size:null});if(this.current.type==="NUMBER_LITERAL"){let e=parseInt(this.advance().value);return this.createNode("dimension",{size:e})}}parseCaretDimensions(){let e=this.match("("),n=this.parseDimensions();return e&&this.expect(")"),n}parseTupleType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="tuple"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let n=[];if(this.current.type!==">"){let i=this.parseNamedElement();i||this.error("Expected tuple element"),n.push(i);let r=i.name!==void 0;for(;this.match(",");){let s=this.parseNamedElement();s||this.error("Expected tuple element"),r&&!s.name&&this.error("All tuple elements should be named, or none. Previous elements were named, but this one isn't."),!r&&s.name&&this.error("All tuple elements should be named, or none. Previous elements were not named, but this one is."),n.push(s)}}return this.expect(">"),this.createNode("tuple",{elements:n})}}startsFieldList(){if(this.current.type!=="{")return!1;let e=this.current.position,n=this.lexer.saveState(),i=this.current,r=this._end,s;try{this.advance();let o=this.current;o.type==="}"?s=!0:o.type!=="IDENTIFIER"&&o.type!=="VERBATIM_STRING"?s=!1:(this.advance(),s=this.current.type===":")}finally{this.lexer.restoreState(n),this.current=i,this._end=r}return s?!this.blockFollows||this.blockFollowsFieldList(e):!1}blockFollowsFieldList(e){let n=this.lexer.input,i=0,r=e;for(;r<n.length;r++){let o=n[r];if(o==='"'||o==="`"){for(r+=1;r<n.length&&n[r]!==o;)r+=n[r]==="\\"?2:1;if(r>=n.length)return!1;continue}if(o==="{")i+=1;else if(o==="}"&&(i-=1,i===0))break}if(r>=n.length)return!1;let s=r+1;for(;s<n.length&&/\s/.test(n[s]);)s+=1;return s>=n.length?!1:n[s]==="{"||/^where\b/.test(n.slice(s))}parseFieldList(e){let n=[];if(this.expect("{"),this.current.type!=="}")do{let i=this.parseRecordEntry();i||this.error(`Expected ${e} field`),n.push(i)}while(this.match(","));return this.expect("}"),n}parseRecordType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="record"){let e=this.current;this.advance();let n=[];return this.startsFieldList()?n=this.parseFieldList("record"):this.current.type==="<"&&this.errorAtToken(e,"A record type is written with braces: `record{key: type, \u2026}`","For example `record{x: integer, y: integer}`","record-type-angle-brackets"),this.createNode("record",{entries:n})}}parseObjectType(){if(this.current.type!=="IDENTIFIER"||this.current.value!=="object")return;let e=this.current;this.advance();let n=[];return this.startsFieldList()?(n=this.parseFieldList("object"),n.length>0&&!this.allowObjectType&&this.errorAtToken(e,"An `object{\u2026}` type may only be the definition of a named type","Object types are nominal: declare one with `type Person = object{\u2026}` (not `type alias`), then refer to `Person` here","object-type-not-inline")):this.current.type==="<"&&this.errorAtToken(e,"An object type is written with braces: `object{field: type, \u2026}`","For example `type Person = object{name: string, age: integer}`","object-type-angle-brackets"),this.createNode("object",{entries:n})}parseRecordEntry(){let e;if(this.current.type==="IDENTIFIER")e=this.advance().value;else if(this.current.type==="VERBATIM_STRING")e=this.advance().value;else return;this.expect(":");let n=this.parseUnionType();return n||this.error("Expected value type"),this.createNode("record_entry",{key:e,valueType:n})}parseDictionaryType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="dictionary"){this.advance();let e=this.createNode("primitive",{name:"unknown"});if(this.match("<")){let n=this.parseUnionType();n&&(e=n),this.expect(">")}return this.createNode("dictionary",{valueType:e})}}parseSetType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="set"){if(this.lexer.peekToken().type!=="<")return;this.advance();let e=this.createNode("primitive",{name:"unknown"});if(this.match("<")){let n=this.parseUnionType();n&&(e=n),this.expect(">")}return this.createNode("set",{elementType:e})}}parseBroadcastableType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="broadcastable"){this.advance();let e=this.createNode("primitive",{name:"any"});if(this.match("<")){let n=this.parseUnionType();n&&(e=n),this.expect(">")}return this.createNode("broadcastable",{elementType:e})}}parseCallbackType(){this.current.type!=="IDENTIFIER"||this.current.value!=="callback"||this.lexer.peekToken().type==="<"&&this.error("The `callback<\u2026>` constructor was retired: write the arrow directly (e.g. `(T) any -> boolean`) \u2014 callback operands are admitted by compatibility, not subtyping")}parseCollectionType(){if(this.current.type==="IDENTIFIER"){let e=this.current.value==="indexed_collection",n=this.current.value==="collection";if(e||n){this.advance();let i=this.createNode("primitive",{name:"unknown"});if(this.match("<")){let r=this.parseUnionType();r&&(i=r),this.expect(">")}return this.createNode("collection",{elementType:i,indexed:e})}}}parseExpressionType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="expression"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("expression",{operator:i})}}parseSymbolType(){if(this.current.type==="IDENTIFIER"&&this.current.value==="symbol"){if(this.lexer.peekToken().type!=="<")return;this.advance(),this.expect("<");let i=this.expect("IDENTIFIER").value;return this.expect(">"),this.createNode("symbol",{name:i})}}parseNumericType(){if(this.current.type==="IDENTIFIER"){let e=["real","rational","integer"];if(this.current.value==="\u2115")return this.advance(),this.createNode("numeric",{baseType:"integer",lowerBound:this.createNode("value",{value:0,valueType:"number"})});let n=xr(this.current.value);if(e.includes(n)){this.advance();let i=n;if(this.match("<")){let r=this.parseValue(),s=!1,o=!1;if(this.match("<..")){s=!0;let f=this.current;f.type==="<"&&(this.advance(),this.current.position!==f.position+1&&this.error("Invalid numeric type","The `<` marker must touch its bound"),o=!0)}else this.match("..<")?o=!0:this.expect("..");let a=this.parseValue();this.expect(">"),s&&r===void 0&&this.error("Invalid numeric type","An open lower bound needs a bound value"),o&&a===void 0&&this.error("Invalid numeric type","An open upper bound needs a bound value");let c=r?.value??-1/0,l=a?.value??1/0;(Number.isNaN(c)||Number.isNaN(l))&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers");for(let f of[r,a])f!==void 0&&f.valueType!=="number"&&f.valueType!=="infinity"&&this.error("Invalid numeric type","Lower and upper bounds must be valid numbers");return c>l&&this.error(`Invalid range: ${c}..${l}`,"The lower bound must be less than the upper bound"),(s&&!Number.isFinite(c)||o&&!Number.isFinite(l))&&this.error("Invalid numeric type","An open bound must be a finite number"),this.createNode("numeric",{baseType:i,lowerBound:r,upperBound:a,...s?{lowerOpen:!0}:{},...o?{upperOpen:!0}:{}})}return this.createNode("numeric",{baseType:i})}}}parsePrimitiveType(){if(this.current.type==="IDENTIFIER"){let e=xr(this.current.value);if($e.has(e)){if(e==="type"){let n=this.lexer.saveState(),i=this.current;this.advance();let r=this.current.type==="IDENTIFIER";if(this.lexer.restoreState(n),this.current=i,r)return}return this.advance(),this.createNode("primitive",{name:e})}}}parseValue(){let e,n;switch(this.current.type){case"STRING_LITERAL":e=this.advance().value,n="string";break;case"NUMBER_LITERAL":e=parseFloat(this.advance().value),n="number";break;case"TRUE":this.advance(),e=!0,n="boolean";break;case"FALSE":this.advance(),e=!1,n="boolean";break;case"NAN":this.advance(),e=NaN,n="nan";break;case"INFINITY":case"PLUS_INFINITY":this.advance(),e=1/0,n="infinity";break;case"MINUS_INFINITY":this.advance(),e=-1/0,n="infinity";break;case"COMPLEX_INFINITY":this.advance(),e=Er,n="complex_infinity";break;default:return}return this.createNode("value",{value:e,valueType:n})}parseTypeReference(){let e=this.current.type==="IDENTIFIER"&&this.current.value==="type";if(e&&(this._sawForwardRef=!0,this.advance()),this.current.type==="IDENTIFIER"){let n=this.current,i=this.advance().value,r=this.parseTypeArguments();return this.typeResolver.resolve(i)?this.createNode("type_reference",{name:i,isForward:e,args:r}):e&&this.typeResolver.forward(i)?this.createNode("type_reference",{name:i,isForward:!0,args:r}):(e||this.errorAtToken(n,`Unknown type "${i}"`,"Syntax error. The type was not recognized."),this.createNode("type_reference",{name:i,isForward:e,args:r}))}}parseTypeArguments(){if(this.current.type!=="<")return;if(this.advance(),this.current.type===">")return this.advance(),[];let e=[];do{let n=this.parseUnionType();n||this.error("Expected a type argument"),e.push(n)}while(this.match(","));return this.current.type!==">"&&this.error("Expected `>` to close the type arguments","For example `Pair<integer>`"),this.advance(),e}};var Ra=new WeakSet,Ba=4096,Yt=new Map;function Pr(t,e,n,i=!1,r=!1){let s=`${t}:${Object.is(e,-0)?"-0":e}:${Object.is(n,-0)?"-0":n}:${i?1:0}${r?1:0}`,o=Yt.get(s);if(o!==void 0)return o;let a={kind:"numeric",type:t};return e!==void 0&&(a.lower=e),n!==void 0&&(a.upper=n),i&&(a.lowerOpen=!0),r&&(a.upperOpen=!0),Object.freeze(a),Ra.add(a),Yt.size>=Ba&&Yt.clear(),Yt.set(s,a),a}function Sr(t,e,n,i=!1,r=!1){let s=e===0?0:e,o=n===0?0:n;if(Number.isFinite(s)||(i=!1),Number.isFinite(o)||(r=!1),Aa(t)){if(Number.isFinite(s)){let a=i?Math.floor(s)+1:Math.ceil(s);(!i||a!==s)&&(s=a,i=!1)}if(Number.isFinite(o)){let a=r?Math.ceil(o)-1:Math.floor(o);(!r||a!==o)&&(o=a,r=!1)}}return s>o||s===o&&(i||r)?"never":s===-1/0&&o===1/0?t:Pr(t,s===-1/0?void 0:s,o===1/0?void 0:o,i,r)}function Aa(t){return t==="integer"}function Rr(t,e){switch(t.kind){case"function_signature":return e.visitFunctionSignature(t);case"constrained":return e.visitConstrainedType(t);case"type_variable":return e.visitTypeVariable(t);case"union":return e.visitUnionType(t);case"intersection":return e.visitIntersectionType(t);case"negation":return e.visitNegationType(t);case"group":return e.visitGroupType(t);case"list":return e.visitListType(t);case"vector":return e.visitVectorType(t);case"matrix":return e.visitMatrixType(t);case"tensor":return e.visitTensorType(t);case"tuple":return e.visitTupleType(t);case"record":return e.visitRecordType(t);case"object":return e.visitObjectType(t);case"dictionary":return e.visitDictionaryType(t);case"set":return e.visitSetType(t);case"broadcastable":return e.visitBroadcastableType(t);case"collection":return e.visitCollectionType(t);case"expression":return e.visitExpressionType(t);case"symbol":return e.visitSymbolType(t);case"numeric":return e.visitNumericType(t);case"primitive":return e.visitPrimitiveType(t);case"type_reference":return e.visitTypeReference(t);case"value":return e.visitValue(t);default:throw new Error(`Unknown node kind: ${t.kind}`)}}var Oa=1,Br=2,Ar=3,ni=4,Da=5,Ca=6,Fa=7,_a=8,Va=9,ja=10,La=11,ei=ni,ti=!1;function ct(t){if(typeof t=="string")return t;ti=!0;try{return k(t)}finally{ti=!1}}function k(t,e=0){if(typeof t=="string")return t;let n="";switch(t.kind){case"value":typeof t.value=="string"?n=`"${t.value.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:typeof t.value=="boolean"?n=t.value?"true":"false":pe(t.value)?n="~oo":t.value===1/0?n="+oo":t.value===-1/0?n="-oo":n=t.value.toString();break;case"reference":n=t.args===void 0?t.name:`${t.name}<${t.args.map(f=>k(f)).join(", ")}>`;break;case"variable":n=t.name;break;case"negation":n=`!${k(t.type,ni)}`;break;case"union":{let f=[],m=d=>{typeof d=="object"&&d.kind==="union"?d.types.forEach(m):f.push(k(d,Br))};if(t.types.forEach(m),f.includes("+oo")&&f.includes("-oo")){let d=f.filter(p=>p!=="+oo"&&p!=="-oo");d.push("signed_infinity"),n=d.sort().join(" | ")}else n=f.sort().join(" | ");break}case"intersection":n=t.types.map(f=>k(f,Ar)).join(" & ");break;case"expression":n=`expression<${ut(t.operator)}>`;break;case"symbol":n=`symbol<${ut(t.name)}>`;break;case"numeric":{let f=Number.isFinite(t.lower)?`${t.lower}${t.lowerOpen?"<":""}`:"",m=Number.isFinite(t.upper)?`${t.upperOpen?"<":""}${t.upper}`:"";n=f===""&&m===""?`${t.type}`:`${t.type}<${f}..${m}>`;break}case"list":if(t.dimensions&&typeof t.elements=="string"&&ot.has(t.elements)){if(t.dimensions===void 0)t.elements==="number"&&(n="tensor");else if(t.dimensions.length===1)t.elements==="number"?t.dimensions[0]<0?n="vector":n=`vector<${t.dimensions[0]}>`:t.dimensions[0]<0?n=`vector<${k(t.elements)}>`:n=`vector<${k(t.elements)}^${t.dimensions[0]}>`;else if(t.dimensions.length===2){let f=t.dimensions;t.elements==="number"?f[0]<0&&f[1]<0?n="matrix":n=`matrix<${f[0]}x${f[1]}>`:f[0]<0&&f[1]<0?n=`matrix<${k(t.elements)}>`:n=`matrix<${k(t.elements)}^(${f[0]}x${f[1]})>`}}if(!n){let f=t.dimensions;if(f!==void 0&&f.length<=2&&f.every(m=>m<0))n=`${f.length===1?"vector":"matrix"}<${k(t.elements)}>`;else if(f!==void 0&&f.some(m=>m<0)){let m=k(t.elements);for(let d=f.length-1;d>=0;d--)m=f[d]<0?`list<${m}>`:`list<${m}^${f[d]}>`;n=m}else{let m=f?f.length===1?`^${f[0].toString()}`:`^(${f.join("x")})`:"";n=`list<${k(t.elements)}${m}>`}}break;case"record":n=`record{${Object.entries(t.elements).map(([f,m])=>`${ut(f)}: ${k(m)}`).join(", ")}}`;break;case"object":n=`object{${Object.entries(t.elements).map(([f,m])=>`${ut(f)}: ${k(m)}`).join(", ")}}`;break;case"dictionary":n=`dictionary<${k(t.values)}>`;break;case"set":n=`set<${k(t.elements)}>`;break;case"broadcastable":n=`broadcastable<${k(t.elements)}>`;break;case"collection":n=`collection<${k(t.elements)}>`;break;case"indexed_collection":n=`indexed_collection<${k(t.elements)}>`;break;case"tuple":if(t.elements.length===0)n="tuple";else if(t.elements.length===1){let[f]=t.elements;n=`tuple<${Ze(f)}>`}else n="tuple<"+t.elements.map(f=>Ze(f)).join(", ")+">";break;case"signature":let r=t.args?t.args.map(f=>Ze(f)).join(", "):"",s=t.optArgs?t.optArgs.map(f=>Ze(f,ei)+"?").join(", "):"",o=t.variadicArg?t.variadicMin===0?`${Ze(t.variadicArg,ei)}*`:`${Ze(t.variadicArg,ei)}+`:"",a=[r,s,o].filter(f=>f).join(", "),c=t.effects===void 0||ti&&t.effects!=="any"&&!t.effects.length?"":` ${kr(t.effects)}`,l=t.typeParams?.length?` where ${t.typeParams.map(f=>{let m=f.bound===void 0?void 0:k(f.bound),d=m===void 0||m==="unknown"?f.name:`${f.name}: ${m}`;return f.protocols?.length?`${d} is ${f.protocols.join(" & ")}`:d}).join(", ")}`:"";n=`(${a})${c} -> ${k(t.result)}${l}`;break;default:n="error"}return e>0&&e>qa(t.kind)?`(${n})`:n}function Ze(t,e=0){return t.name?`${ut(t.name)}: ${k(t.type,e)}`:k(t.type,e)}function ut(t){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)?t:`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`")}\``}function qa(t){switch(t){case"negation":return ni;case"union":return Br;case"intersection":return Ar;case"list":return Da;case"record":case"object":return Ca;case"dictionary":return Fa;case"set":return _a;case"collection":case"indexed_collection":case"broadcastable":return Va;case"tuple":return ja;case"signature":return Oa;case"value":case"variable":case"numeric":case"expression":case"symbol":case"reference":return La;default:return 0}}function ii(t,e){let n={kind:"reference",name:t.name,args:e};return Object.defineProperty(n,"def",{get:()=>t.def,enumerable:!0,configurable:!0}),Object.defineProperty(n,"alias",{get:()=>t.alias,set:i=>{t.alias=i},enumerable:!0,configurable:!0}),Object.defineProperty(n,"decl",{value:t,enumerable:!1,configurable:!0}),n}function se(t){return t.decl??t}function ri(t,e){if(e===t.args)return t;let n=Object.getOwnPropertyDescriptors(t);return n.args={value:e,writable:!0,enumerable:!0,configurable:!0},Object.create(Object.getPrototypeOf(t),n)}var $a="_forwardArity";function si(t,e){let n=t;n._forwardArity===void 0&&Object.defineProperty(t,$a,{value:new Set,enumerable:!1,writable:!0,configurable:!0}),n._forwardArity.add(e)}function Wt(t,e){let n=se(t);return n._varianceState!=="verified"?"inout":n.typeParams?.[e]?.variance??"out"}var ye=class extends Error{code;constructor(e,n){super(`${e}: ${n}`),this.code=e}};function he(t,e){throw new ye(t,e)}function Za(t){return typeof t!="object"?!1:t.kind==="signature"?t.typeParams!==void 0&&t.typeParams.length>0:t.kind==="intersection"?t.types.some(e=>typeof e=="object"&&e.kind==="signature"&&e.typeParams!==void 0&&e.typeParams.length>0):!1}function mt(t){let e=new Set;return oe(t,void 0,e),e}function oe(t,e,n){if(typeof t!="string")switch(t.kind){case"variable":(e===void 0||!e.has(t.name))&&n.add(t.name);return;case"signature":{let i=e;if(t.typeParams!==void 0&&t.typeParams.length>0){i=new Set(e);for(let r of t.typeParams)i.add(r.name);for(let r of t.typeParams)r.bound!==void 0&&oe(r.bound,e,n)}for(let r of Ue(t))oe(r.type,i,n);oe(t.result,i,n);return}case"union":case"intersection":for(let i of t.types)oe(i,e,n);return;case"negation":oe(t.type,e,n);return;case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":oe(t.elements,e,n);return;case"tuple":for(let i of t.elements)oe(i.type,e,n);return;case"dictionary":oe(t.values,e,n);return;case"record":case"object":for(let i of Object.values(t.elements))oe(i,e,n);return;case"reference":if(t.args!==void 0)for(let i of t.args)oe(i,e,n);return;default:return}}function Ne(t){return ae(t,void 0)}function ae(t,e){if(typeof t=="string")return!1;switch(t.kind){case"variable":return e===void 0||!e.has(t.name);case"signature":{let n=e;if(t.typeParams!==void 0&&t.typeParams.length>0){n=new Set(e);for(let i of t.typeParams)n.add(i.name);for(let i of t.typeParams)if(i.bound!==void 0&&ae(i.bound,e))return!0}for(let i of Ue(t))if(ae(i.type,n))return!0;return ae(t.result,n)}case"union":case"intersection":for(let n of t.types)if(ae(n,e))return!0;return!1;case"negation":return ae(t.type,e);case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":return ae(t.elements,e);case"tuple":for(let n of t.elements)if(ae(n.type,e))return!0;return!1;case"dictionary":return ae(t.values,e);case"record":case"object":for(let n of Object.values(t.elements))if(ae(n,e))return!0;return!1;case"reference":if(t.args!==void 0){for(let n of t.args)if(ae(n,e))return!0}return!1;default:return!1}}function Ue(t){let e=[];return t.args&&e.push(...t.args),t.optArgs&&e.push(...t.optArgs),t.variadicArg&&e.push(t.variadicArg),e}function Or(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Jt(t){let e=t.def;if(e===void 0)return;let n=se(t).typeParams,i=t.args;if(n===void 0||n.length===0||i===void 0)return e;if(n.length!==i.length)return;let r={};return n.forEach((s,o)=>r[s.name]=i[o]),$(e,r)}function $(t,e){if(typeof t=="string")return t;switch(t.kind){case"variable":{let n=Or(e,t.name)?e[t.name]:void 0;return n===void 0?t:n}case"signature":{let n=oi(t.args,e),i=oi(t.optArgs,e),r=t.variadicArg===void 0?void 0:Fr(t.variadicArg,e),s=$(t.result,e),o=t.typeParams?.filter(l=>!Or(e,l.name)||e[l.name]===void 0),a=t.typeParams!==void 0&&o.length!==t.typeParams.length;if(!a&&n===t.args&&i===t.optArgs&&r===t.variadicArg&&s===t.result)return t;let c={...t,result:s};return n!==void 0&&(c.args=n),i!==void 0&&(c.optArgs=i),r!==void 0&&(c.variadicArg=r),a&&(o.length===0?delete c.typeParams:c.typeParams=o),c}case"union":case"intersection":{let n=Dr(t.types,e);return n===t.types?t:{...t,types:n}}case"negation":{let n=$(t.type,e);return n===t.type?t:{...t,type:n}}case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":{let n=$(t.elements,e);return n===t.elements?t:{...t,elements:n}}case"tuple":{let n=oi(t.elements,e);return n===t.elements?t:{...t,elements:n}}case"dictionary":{let n=$(t.values,e);return n===t.values?t:{...t,values:n}}case"record":case"object":{let n=!1,i={};for(let[r,s]of Object.entries(t.elements)){let o=$(s,e);o!==s&&(n=!0),i[r]=o}return n?{...t,elements:i}:t}case"reference":{if(t.args===void 0)return t;let n=Dr(t.args,e);return n===t.args?t:ri(t,n)}default:return t}}function Dr(t,e){let n=!1,i=t.map(r=>{let s=$(r,e);return s!==r&&(n=!0),s});return n?i:t}function Fr(t,e){let n=$(t.type,e);return n===t.type?t:{...t,type:n}}function oi(t,e){if(t===void 0)return;let n=!1,i=t.map(r=>{let s=Fr(r,e);return s!==r&&(n=!0),s});return n?i:t}function _r(t,e){if(typeof t=="object"&&t.kind==="intersection"){for(let n of t.types)Cr(n,e);return}Cr(t,e)}function Cr(t,e){if(typeof t=="object"&&t.kind==="signature"&&t.typeParams!==void 0&&t.typeParams.length>0){Ua(t,t.typeParams,e);return}Z(t,new Set,null,new Set)}function Ua(t,e,n){let i=new Set;for(let o of e)i.has(o.name)&&he("unsupported-variable-position",`The type variable \`${o.name}\` is declared more than once in the same \`where\` clause`),i.add(o.name),o.protocols!==void 0&&o.protocols.length>0&&n?.conformsTo===void 0&&he("protocol-conformance-unsupported",`Protocol conformance constraints (\`where ${o.name} is ${o.protocols.join(" & ")}\`) require an engine's protocol registry; this type was declared without one`);for(let o of e){if(o.bound===void 0)continue;mt(o.bound).size>0&&he("unsupported-variable-position",`The bound of the type variable \`${o.name}\` must be a ground type: \`${k(o.bound)}\` refers to a type variable`);let a=new Set;Z(o.bound,i,"bound",a)}let r=new Set;for(let o of Ue(t))Z(o.type,i,null,r);let s=new Set;Z(t.result,i,null,s);for(let o of e)r.has(o.name)||(s.has(o.name)&&he("unsolvable-type-variable",`The type variable \`${o.name}\` occurs only in the result of its signature, so it can never be solved. Write the ground type directly`),he("unsolvable-type-variable",`The type variable \`${o.name}\` is quantified but never used`))}var Ga={intersection:"cannot appear in an intersection. To constrain a type variable, declare a bound on it instead: `where T: number`",negation:"cannot appear in a negation",bound:"cannot appear in a bound"};function Z(t,e,n,i){if(typeof t!="string")switch(t.kind){case"variable":n!==null&&he("unsupported-variable-position",`The type variable \`${t.name}\` ${Ga[n]}`),e.has(t.name)||he("unresolved-type-variable",`The type variable \`${t.name}\` is not quantified by a \`where\` clause`),i.add(t.name);return;case"signature":t.typeParams!==void 0&&t.typeParams.length>0&&he("unsupported-variable-position","A `where` clause can only quantify a top-level signature (or one arm of an overload set), not a nested one. Parenthesize a nested clause: `((A) -> B where A, B)`");for(let r of Ue(t))Z(r.type,e,n,i);Z(t.result,e,n,i);return;case"union":{let r=t.types.filter(s=>Ne(s));r.length>1&&he("unsupported-variable-position",`At most one arm of a union can refer to a type variable, but \`${k(t)}\` has ${r.length}. Nothing at a call site says which arm a value took, so neither variable could be solved`);for(let s of t.types)Z(s,e,n,i);return}case"intersection":for(let r of t.types)Z(r,e,"intersection",i);return;case"negation":Z(t.type,e,"negation",i);return;case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":Z(t.elements,e,n,i);return;case"tuple":for(let r of t.elements)Z(r.type,e,n,i);return;case"dictionary":Z(t.values,e,n,i);return;case"record":case"object":for(let r of Object.values(t.elements))Z(r,e,n,i);return;case"reference":if(t.args!==void 0)for(let r of t.args)Z(r,e,n,i);return;default:return}}var ci;function Vr(t){ci=t}function B(){if(ci===void 0)throw new Error("Type algebra not registered: import `./subtype.js` before using the type-variable solver");return ci}function jr(t,e){return e==="any"?!0:B().isSubtype(t,e)}function Ya(t,e,n){let i=t.typeParams??[];if(i.length===0)return{bindings:Object.create(null),absorbed:new Set,unbound:new Set,matched:!0,failures:[]};let r={params:i,declared:new Map(i.map(m=>[m.name,m.bound])),lower:new Map,upper:new Map,lifted:new Set,matched:!0},s=Ka(t,e.length),o=s.map((m,d)=>{let p=e[d];return m===void 0||p===void 0||n?.skip?.(d)||n?.inferable?.(d)||!n?.lifted?.(d)||!qr(m)?p:(r.lifted.add(m.name),$r(p))});for(let m=0;m<s.length;m++){let d=s[m],p=o[m];d===void 0||p===void 0||n?.skip?.(m)||n?.inferable?.(m)||W(r,d,p,m,"lower",!0,!0)||(r.matched=!1)}for(let m=0;m<s.length;m++){let d=s[m],p=o[m];d===void 0||p===void 0||n?.skip?.(m)||n?.inferable?.(m)||W(r,d,p,m,"upper",!0,!0)}let a=Object.create(null),c=new Set,l=new Set;for(let m of i){let d=r.lower.get(m.name),p=ui(r,m.name);if(d&&d.length>0){let h=za(d);a[m.name]=h.type,h.absorbed&&c.add(m.name)}else p.length>0?a[m.name]=B().narrow(...p.map(h=>h.type)):(a[m.name]=m.bound??"unknown",m.bound===void 0&&l.add(m.name))}let f=[];for(let m of i){if(c.has(m.name))continue;let d=r.lifted.has(m.name),p=d?ui(r,m.name).filter(P=>!P.declared):ui(r,m.name);if(p.length===0)continue;let h=a[m.name],g=B().narrow(...p.map(P=>P.type)),y=g==="never"&&p.some(P=>P.type!=="never");if(!y&&B().isSubtype(h,g))continue;let I=d?void 0:m.bound,T=r.lower.get(m.name)??[],N=Qa(T);if(I!==void 0&&!B().isSubtype(h,I)){let P=T.find(ee=>ee.index!==void 0&&!B().isSubtype(ee.type,I))??T[0];f.push({kind:"bound",variable:m.name,solution:h,expected:I,index:P?.index,detail:`\`${m.name}\` is declared with bound \`${k(I)}\`, but was solved to \`${k(h)}\`${N}`});continue}let E=p.filter(P=>P.index!==void 0),v=p.find(P=>!B().isSubtype(h,P.type))??E[E.length-1]??p[0],D=p.filter(P=>P!==v),H=y&&D.length>0?B().narrow(...D.map(P=>P.type)):h;f.push({kind:"upper",variable:m.name,solution:h,expected:v.type,index:v.index,pin:H,detail:y?`\`${m.name}\` has incompatible requirements (${p.map(P=>`\`${k(P.type)}\``).join(", ")})`:`\`${m.name}\` was solved to \`${k(h)}\`${N}; this position requires \`${m.name} <: ${k(v.type)}\``})}return Wa(i,a,r,n?.resolver,f),{bindings:a,absorbed:c,unbound:l,matched:r.matched,failures:f}}function Wa(t,e,n,i,r){let s=i?.conformsTo;if(s!==void 0)for(let o of t){if(o.protocols===void 0||o.protocols.length===0)continue;let a=e[o.name];if(!(a===void 0||!Ja(a))){for(let c of o.protocols)if(!s(a,c)){r.push({kind:"protocol",variable:o.name,protocol:c,solution:a,expected:a,index:(n.lower.get(o.name)??[])[0]?.index,detail:`\`${o.name}\` was solved to \`${k(a)}\`, which does not conform to the \`${c}\` protocol`});break}}}}function Ja(t){return typeof t=="string"?t!=="unknown"&&t!=="any"&&t!=="value"&&t!=="expression":t.kind!=="union"&&t.kind!=="intersection"&&t.kind!=="variable"}function Ha(t,e,n){let i=Ya(t,e,n);return!i.matched||i.failures.length>0?null:i.bindings}function Lr(t,e){if(e.typeParams!==void 0&&e.typeParams.length>0)return!1;let n=[...e.args??[],...e.optArgs??[],...e.variadicArg?[e.variadicArg]:[]].map(s=>s.type),i=Ha(t,n);if(i===null)return!1;let r=$(t,i);return Za(r)?!1:B().isSubtype(r,e)}function qr(t){return typeof t=="object"&&t.kind==="variable"}function Xa(t,e){let n=t.args?.length??0;if(e<n)return t.args[e].type;let i=t.optArgs?.length??0;return e<n+i?t.optArgs[e-n].type:t.variadicArg?.type}function Ka(t,e){let n=[];for(let i=0;i<e;i++)n.push(Xa(t,i));return n}function ai(t,e,n,i,r){if(Ne(n))return;let s=t.get(e);s?s.push({type:n,index:i,top:r}):t.set(e,[{type:n,index:i,top:r}])}function ui(t,e){let n=t.upper.get(e)??[],i=t.declared.get(e);return i===void 0?n:[...n,{type:i,declared:!0}]}function Qa(t){let e=t.map(n=>n.index).filter(n=>n!==void 0).map(n=>n+1);return e.length===0?"":e.length===1?` (from argument ${e[0]})`:` (from arguments ${e.join(", ")})`}function za(t){let e=t.some(i=>i.top===!0&&(i.type==="unknown"||i.type==="any"));if(t.some(i=>i.type==="unknown"))return{type:"unknown",absorbed:e};if(t.some(i=>i.type==="any"))return{type:"any",absorbed:e};let n=t.filter(i=>i.type!=="never");return n.length===0?{type:"never",absorbed:!1}:{type:B().widen(...n.map(i=>i.type)),absorbed:!1}}function lt(t,e=!0){return Ne(t)?Y(t,e,!1):t}function Y(t,e,n){if(typeof t=="string"||!Ne(t))return t;switch(t.kind){case"variable":return e?"any":"never";case"signature":{let i={...t,result:Y(t.result,e,n)};return t.args&&(i.args=t.args.map(r=>({...r,type:Y(r.type,!e,n)}))),t.optArgs&&(i.optArgs=t.optArgs.map(r=>({...r,type:Y(r.type,!e,n)}))),t.variadicArg&&(i.variadicArg={...t.variadicArg,type:Y(t.variadicArg.type,!e,n)}),delete i.typeParams,i}case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":return{...t,elements:Y(t.elements,e,n)};case"tuple":return{...t,elements:t.elements.map(i=>({...i,type:Y(i.type,e,n)}))};case"dictionary":return{...t,values:Y(t.values,e,n)};case"record":{let i={};for(let[r,s]of Object.entries(t.elements))i[r]=Y(s,e,n);return{...t,elements:i}}case"object":{if(n&&Object.values(t.elements).some(r=>Ne(r)))return e?"any":"never";let i={};for(let[r,s]of Object.entries(t.elements))i[r]=Y(s,e,n);return{...t,elements:i}}case"union":case"intersection":return{...t,types:t.types.map(i=>Y(i,e,n))};case"negation":return{...t,type:Y(t.type,!e,n)};case"reference":{if(t.args===void 0)return t;let i=se(t);return n&&t.args.some((r,s)=>Ne(r)&&Wt(t,s)==="inout")?e?"any":"never":ri(t,t.args.map((r,s)=>Y(r,i.typeParams?.[s]?.variance==="in"?!e:e,n)))}default:return t}}function ft(t){if(typeof t=="string")return t==="range"?"integer":t==="string"?"character":t==="collection"||t==="indexed_collection"||t==="list"||t==="set"||t==="tuple"||t==="dictionary"||t==="record"?"unknown":void 0;if(t.kind==="collection"||t.kind==="indexed_collection")return t.elements;if(t.kind==="list"){let e=t.dimensions;return e&&e.length>1?{kind:"list",elements:t.elements,dimensions:e.slice(1)}:t.elements}if(t.kind==="set"||t.kind==="broadcastable")return t.elements;if(t.kind==="tuple")return B().widen(...t.elements.map(e=>e.type));if(t.kind==="dictionary")return{kind:"tuple",elements:[{type:"string"},{type:t.values}]};if(t.kind==="record")return{kind:"tuple",elements:[{type:"string"},{type:B().widen(...Object.values(t.elements))}]}}function $r(t){if(typeof t=="object"&&t.kind==="union")return t.types.every(n=>eu(n))?B().widen(...t.types.map(n=>$r(n))):t;if(t==="list"||t==="indexed_collection")return"unknown";if(t==="range")return"integer";if(typeof t!="object"||!Zr.has(t.kind))return t;let e=ft(t);if(e===void 0)return t;if(t.kind==="list")for(;typeof e=="object"&&e.kind==="list";){let n=ft(e);if(n===void 0)break;e=n}return e}function eu(t){return t==="list"||t==="indexed_collection"||t==="range"?!0:typeof t=="object"&&Zr.has(t.kind)}var Zr=new Set(["list","indexed_collection","broadcastable"]),Se=null;function W(t,e,n,i,r,s,o){if(qr(e))return r==="lower"&&s?ai(t.lower,e.name,n,i,o):r==="upper"&&!s&&ai(t.upper,e.name,n,i,o),!0;if(!Ne(e))return r!=="lower"?!0:s?B().isSubtype(n,e):B().isSubtype(e,n);if(typeof n=="object"&&n.kind==="union"){let a=!0;for(let c of n.types)W(t,e,c,i,r,s,o)||(a=!1);return a}if(typeof e=="string")return!0;switch(n==="range"&&(n=Lt),n==="string"&&(e.kind==="list"||e.kind==="set"||e.kind==="collection"||e.kind==="indexed_collection")&&(n=qt),e.kind){case"signature":{if(typeof n!="object"||n.kind!=="signature")return r!=="lower"||!s?!0:B().isSubtype(n,lt(e,!0));if(n.typeParams!==void 0&&n.typeParams.length>0)return!0;let a=W(t,e.result,n.result,i,r,s,!1),c=Ue(e),l=Ue(n),f=Math.min(c.length,l.length);for(let m=0;m<f;m++)W(t,c[m].type,l[m].type,i,r,!s,!1)||(a=!1);return a}case"broadcastable":{let a=typeof n=="object"&&(n.kind==="broadcastable"||n.kind==="list"||n.kind==="indexed_collection")||n==="list"||n==="indexed_collection"?ft(n):n;return W(t,e.elements,a,i,r,s,!1)}case"tuple":{if(r==="lower"&&s&&!B().isSubtype(n,lt(e,!0)))return!1;if(typeof n!="object"||n.kind!=="tuple")return!0;if(n.elements.length!==e.elements.length)return r!=="lower";let a=!0;for(let c=0;c<e.elements.length;c++)W(t,e.elements[c].type,n.elements[c].type,i,r,s,!1)||(a=!1);return a}case"dictionary":return r==="lower"&&s&&!B().isSubtype(n,lt(e,!0))?!1:typeof n!="object"||n.kind!=="dictionary"?!0:W(t,e.values,n.values,i,r,s,!1);case"record":case"object":{if(r==="lower"&&s&&!B().isSubtype(n,lt(e,!0)))return!1;if(typeof n!="object"||n.kind!==e.kind)return!0;let a=!0;for(let[c,l]of Object.entries(e.elements)){let f=n.elements[c];f!==void 0&&(W(t,l,f,i,r,s,!1)||(a=!1))}return a}case"list":case"set":case"collection":case"indexed_collection":{if(r==="lower"&&s&&!B().isSubtype(n,lt(e,!0)))return!1;let a=ft(n);return a===void 0?!0:W(t,e.elements,a,i,r,s,!1)}case"reference":{if(e.alias===!0&&e.def!==void 0){Se===null&&(Se=new Set);let c=se(e);if(Se.has(c))return!0;Se.add(c);try{let l=Jt(e);if(l!==void 0)return W(t,l,n,i,r,s,o)}finally{Se.delete(c),Se.size===0&&(Se=null)}}if(e.args===void 0)return!0;if(typeof n!="object"||n.kind!=="reference"||n.name!==e.name||n.args===void 0||n.args.length!==e.args.length)return r!=="lower";let a=!0;for(let c=0;c<e.args.length;c++)W(t,e.args[c],n.args[c],i,r,s,!1)||(a=!1);return a}case"union":{if(r!=="lower"||!s)return!0;let a=[];for(let c of e.types){if(Ne(c)){a.push(c);continue}if(B().isSubtype(n,c)){for(let l of mt(e))ai(t.lower,l,"never",i,!1);return!0}}return a.length===1?W(t,a[0],n,i,r,s,o):!0}default:return!0}}var li=class{typeResolver;_typeVarScopes=[];constructor(e,n){this.typeResolver=e??{forward:()=>{},resolve:()=>{},get names(){return[]}},n!==void 0&&n.length>0&&this._typeVarScopes.push(n)}buildType(e){return Rr(e,this)}visitFunctionSignature(e){let n=[],i=[],r,s;for(let c of e.arguments){let l=this.buildNamedElement(c.element);switch(c.modifier){case"optional":i.push(l);break;case"variadic_zero":r=l,s=0;break;case"variadic_one":r=l,s=1;break;default:n.push(l);break}}let o=this.buildType(e.returnType),a={kind:"signature",args:n.length>0?n:void 0,result:o};return e.effects!==void 0&&(a.effects=e.effects),i.length>0&&(a.optArgs=i),r&&(a.variadicArg=r,a.variadicMin=s),a}visitConstrainedType(e){let n=e.typeParams.map(s=>{let o={name:s.name};if(s.bound!==void 0){let a=this.buildType(s.bound);a!=="unknown"&&(o.bound=a)}return s.protocols!==void 0&&s.protocols.length>0&&(o.protocols=s.protocols),o});this._typeVarScopes.push(n);let i;try{i=this.buildType(e.body)}finally{this._typeVarScopes.pop()}if(typeof i=="string"||i.kind!=="signature")throw new ye("unsupported-variable-position","A `where` clause can only quantify a function signature. To constrain one arm of an overload set, parenthesize it: `((list<T>) -> T where T) & \u2026`");return{...i,typeParams:n}}variableBound(e){for(let n=this._typeVarScopes.length-1;n>=0;n--){let i=this._typeVarScopes[n].find(r=>r.name===e);if(i!==void 0)return i.bound??"any"}}visitTypeVariable(e){return{kind:"variable",name:e.name}}visitUnionType(e){return{kind:"union",types:e.types.map(i=>this.buildType(i))}}visitIntersectionType(e){return{kind:"intersection",types:e.types.map(i=>this.buildType(i))}}visitNegationType(e){return{kind:"negation",type:this.buildType(e.type)}}visitGroupType(e){return this.buildType(e.type)}visitListType(e){let n=this.buildType(e.elementType),i=e.dimensions?.map(r=>this.buildDimension(r));return i===void 0&&this.isUnknownType(n)?"list":{kind:"list",elements:n,dimensions:i}}visitVectorType(e){let n=this.buildType(e.elementType);return e.size!==void 0?{kind:"list",elements:n,dimensions:[e.size]}:{kind:"list",elements:n,dimensions:[-1]}}visitMatrixType(e){let n=this.buildType(e.elementType);if(e.dimensions){let i=e.dimensions.map(r=>this.buildDimension(r));return{kind:"list",elements:n,dimensions:i}}return{kind:"list",elements:n,dimensions:[-1,-1]}}visitTensorType(e){let n=this.buildType(e.elementType);return this.isUnknownType(n)?"list":{kind:"list",elements:n}}visitTupleType(e){return{kind:"tuple",elements:e.elements.map(i=>this.buildNamedElement(i))}}visitRecordType(e){if(e.entries.length===0)return"record";let n=Object.create(null);for(let i of e.entries)n[i.key]=this.buildType(i.valueType);return{kind:"record",elements:n}}visitObjectType(e){if(e.entries.length===0)return"object";let n=Object.create(null);for(let i of e.entries)n[i.key]=this.buildType(i.valueType);return{kind:"object",elements:n}}visitDictionaryType(e){let n=this.buildType(e.valueType);return this.isUnknownType(n)?"dictionary":{kind:"dictionary",values:n}}visitSetType(e){let n=this.buildType(e.elementType);return this.isUnknownType(n)?"set":{kind:"set",elements:n}}visitBroadcastableType(e){return{kind:"broadcastable",elements:this.buildType(e.elementType)}}visitCollectionType(e){let n=this.buildType(e.elementType);return e.indexed?this.isUnknownType(n)?"indexed_collection":{kind:"indexed_collection",elements:n}:this.isUnknownType(n)?"collection":{kind:"collection",elements:n}}visitExpressionType(e){return{kind:"expression",operator:e.operator}}visitSymbolType(e){return{kind:"symbol",name:e.name}}visitNumericType(e){if(!e.lowerBound&&!e.upperBound)return e.baseType;let n=e.lowerBound?this.buildValue(e.lowerBound):-1/0,i=e.upperBound?this.buildValue(e.upperBound):1/0;return n===-1/0&&i===1/0?e.baseType:Sr(e.baseType,n,i,e.lowerOpen===!0,e.upperOpen===!0)}visitPrimitiveType(e){return e.name}visitTypeReference(e){let n=this.typeResolver.resolve(e.name),i=tu(n);if(e.isForward&&e.args===void 0&&i!==void 0&&i.def===void 0&&i.typeParams===void 0&&si(i,0),e.args!==void 0||i?.typeParams!==void 0){let r=this.applyTypeReference(e,i);if(r!==void 0)return r}if(n)return n;if(e.isForward){let r=this.typeResolver.forward(e.name);if(r)return r}return e.name}applyTypeReference(e,n){let i=e.name,r=n?.typeParams,s=e.args;if(s===void 0&&Ge("generic-alias-arity",`The type "${i}" is generic: it takes ${r.length} type argument${r.length===1?"":"s"} (write \`${i}<\u2026>\`)`),n===void 0)return;if(e.isForward&&n.def===void 0&&r===void 0)return si(n,s.length),ii(n,s.map(c=>this.buildType(c)));r===void 0&&(n.def===void 0&&Ge("generic-alias-forward-reference",`The type "${i}" is a forward reference and cannot take type arguments`),Ge("generic-alias-arity",`The type "${i}" is not generic: it takes no type arguments, but ${s.length} ${s.length===1?"was":"were"} given`)),n.alias===!0&&n.def===void 0&&Ge("generic-alias-self-reference",`The generic type alias "${i}" cannot refer to itself: a generic alias is expanded eagerly, so its body has no definition to expand into yet`),s.length!==r.length&&Ge("generic-alias-arity",`The type "${i}" takes ${r.length} type argument${r.length===1?"":"s"}, but ${s.length} ${s.length===1?"was":"were"} given`);let o=Object.create(null),a=[];for(let c=0;c<r.length;c++){let l=this.buildType(s[c]);r[c].bound!==void 0&&this.checkArgumentBound(i,l,r[c]),o[r[c].name]=l,a.push(l)}return n.alias!==!0?ii(n,a):$(n.def,o)}checkArgumentBound(e,n,i){let r=i.bound,s=n,o=mt(n);if(o.size>0){let c=Object.create(null);for(let l of o)c[l]=this.variableBound(l)??"any";s=$(n,c)}if(jr(s,r))return;let a=o.size>0?` (an open argument is admitted by its own declared bound, \`${k(s)}\`)`:"";Ge("generic-alias-bound",`The type argument \`${k(n)}\` does not satisfy the bound \`${k(r)}\` of the parameter \`${i.name}\` of "${e}"${a}`)}visitValue(e){return{kind:"value",value:e.value}}buildNamedElement(e){let n=this.buildType(e.type);return e.name?{name:e.name,type:n}:{type:n}}buildDimension(e){return e.size??-1}buildValue(e){return e.value}isAnyType(e){return e==="any"||typeof e=="object"&&"kind"in e&&e.kind==="primitive"&&"name"in e&&e.name==="any"}isUnknownType(e){return e==="unknown"||typeof e=="object"&&"kind"in e&&e.kind==="primitive"&&"name"in e&&e.name==="unknown"}};function tu(t){if(!(typeof t!="object"||t===null))return t.kind==="reference"?t:void 0}function Ge(t,e){throw new ye(t,e)}function Ur(t,e,n){return new li(e,n).buildType(t)}var Ht=new Map,nu=2048;function Yr(t){if(t===null||typeof t!="object"||Object.isFrozen(t))return t;Object.freeze(t);for(let e of Object.values(t))Yr(e);return t}function fi(t,e,n,i){if(t===void 0)return;if(vr(t))return t;if(typeof t!="string")return;if(i?.allowObjectType===!0)return iu(dt(t,e,n,i).type);if(n!==void 0)return dt(t,e,n).type;let r=Ht.get(t);if(r!==void 0)return it&&Vt("typeParse","hit"),r;if(e!==void 0){try{let o=dt(t,void 0,void 0);if(!o.sawForwardRef)return Gr(t,o.type)}catch{}return dt(t,e,void 0).type}let s=dt(t,void 0,void 0);return s.sawForwardRef?s.type:Gr(t,s.type)}function Gr(t,e){return Ht.size>=nu&&(it&&Vt("typeParse","evictClear"),Ht.clear()),it&&Vt("typeParse","missCold"),Ht.set(t,Yr(e)),e}function dt(t,e,n,i){try{let r=new Gt(t,{typeResolver:e,typeVars:n,allowObjectType:i?.allowObjectType}),s=r.parseType(),o=Ur(s,e,n);return r.sawWhereClause&&_r(o,e),{type:o,sawForwardRef:r.sawForwardRef}}catch(r){let s=new Error(`Failed to parse type "${t}": ${r instanceof Error?r.message:String(r)}`);throw r instanceof ye&&(s.code=r.code,s.rawMessage=r.message),s.code??=r.code,s.rawMessage??=r.rawMessage,s}}function iu(t){if(!(typeof t=="object"&&t.kind==="object"?Object.values(t.elements).some(J):J(t)))return t;let n=new Error("object-type-not-inline: an `object{\u2026}` type may only be the definition of a named type. Object types are nominal: declare one with `type Person = object{\u2026}` (not `type alias`), then refer to `Person` here");throw n.code="object-type-not-inline",n.rawMessage="An `object{\u2026}` type may only be the definition of a named type",n}function J(t){if(typeof t=="string")return!1;switch(t.kind){case"object":return!0;case"record":return Object.values(t.elements).some(J);case"union":case"intersection":return t.types.some(J);case"negation":return J(t.type);case"list":case"set":case"collection":case"indexed_collection":case"broadcastable":return J(t.elements);case"dictionary":return J(t.values);case"tuple":return t.elements.some(e=>J(e.type));case"signature":return J(t.result)||(t.args?.some(e=>J(e.type))??!1)||(t.optArgs?.some(e=>J(e.type))??!1)||t.variadicArg!==void 0&&J(t.variadicArg.type);case"reference":return t.args?.some(J)??!1;default:return!1}}var ru=new Set(["list","set","tuple","record","dictionary","collection","indexed_collection","signature","object"]),Wr={number:jt,infinity:[],nan:[],complex:["imaginary","real","rational","integer"],imaginary:[],real:["rational","integer"],rational:["integer"],integer:[],any:Kn,unknown:[],nothing:[],missing:[],never:[],error:[],value:Hn,scalar:Ut,collection:Zt,indexed_collection:Yn,list:[],range:[],set:[],tuple:[],record:[],object:[],dictionary:["record"],function:[],symbol:[],boolean:[],string:[],character:[],color:[],regexp:[],type:[],expression:Xn},pt=(()=>{let t={},e=n=>{if(t[n])return t[n];let i=new Set([n]);t[n]=i;for(let r of Wr[n])if(r!==n)for(let s of e(r))i.add(s);return i};for(let n of Object.keys(Wr))e(n);return t})();function ge(t,e){return e==="any"||t==="never"?!0:e==="never"?!1:e==="error"?t==="error":e==="nothing"?t==="nothing":t==="nothing"?!1:e==="missing"?t==="missing":t==="missing"?!1:e==="unknown"?t!=="any"&&t!=="error":t==="unknown"?!1:t===e?!0:pt[e].has(t)}function Jr(t,e){if(t===e)return[t];let n=pt[t],i=pt[e];if(n.has(e))return[e];if(i.has(t))return[t];let r=t<e?`${t}|${e}`:`${e}|${t}`,s=Hr.get(r);if(s)return s;let o=[];for(let c of n)i.has(c)&&o.push(c);let a=o.filter(c=>!o.some(l=>l!==c&&pt[l].has(c)));return Hr.set(r,a),a}var Hr=new Map,Re=null;function mi(t){if(Re===null)Re=new Set;else if(Re.has(t))return!1;return Re.add(t),!0}function di(t){Re.delete(t),Re.size===0&&(Re=null)}var Te=null;function su(t,e){Te===null&&(Te=new Map);let n=Te.get(t);if(n===void 0)n=new Set,Te.set(t,n);else if(n.has(e))return!1;return n.add(e),!0}function ou(t,e){let n=Te.get(t);n.delete(e),n.size===0&&Te.delete(t),Te.size===0&&(Te=null)}function ue(t,e){if(Xt("provablyDisjoint",t),Xt("provablyDisjoint",e),t==="never"||e==="never")return!0;if(t==="any"||e==="any")return!1;if(typeof t=="object"&&t.kind==="reference"){let o=es(t);if(o===void 0)return!1;let a=se(t);if(!mi(a))return!1;try{return ue(o,e)}finally{di(a)}}if(typeof e=="object"&&e.kind==="reference"){let o=es(e);if(o===void 0)return!1;let a=se(e);if(!mi(a))return!1;try{return ue(t,o)}finally{di(a)}}if(t==="unknown"||e==="unknown"||b(t,e)||b(e,t))return!1;if(typeof t=="object"&&t.kind==="union")return t.types.every(o=>ue(o,e));if(typeof e=="object"&&e.kind==="union")return e.types.every(o=>ue(t,o));if(typeof e=="object"&&e.kind==="broadcastable")return ue(t,e.elements)&&ue(t,{kind:"indexed_collection",elements:e.elements});if(typeof t=="object"&&t.kind==="broadcastable")return ue(t.elements,e)&&ue({kind:"indexed_collection",elements:t.elements},e);if(typeof t=="object"&&t.kind==="intersection")return t.types.some(o=>ue(o,e));if(typeof e=="object"&&e.kind==="intersection")return e.types.some(o=>ue(t,o));if(typeof t=="object"&&t.kind==="negation"&&b(e,t.type)||typeof e=="object"&&e.kind==="negation"&&b(t,e.type)||typeof t=="object"&&t.kind==="value"||typeof e=="object"&&e.kind==="value")return!0;if(typeof t=="object"&&t.kind==="numeric"&&typeof e=="object"&&e.kind==="numeric"){if(Jr(t.type,e.type).length===0)return!0;let o=t.lower??-1/0,a=t.upper??1/0,c=e.lower??-1/0,l=e.upper??1/0;return a<c||l<o}let n=(o,a)=>{if(o==="string"&&typeof a!="string"&&!(a.kind!=="collection"&&a.kind!=="indexed_collection"))return!b("character",a.elements)},i=n(t,e)??n(e,t);if(i!==void 0)return i;let r=Xr(t),s=Xr(e);return r!==void 0&&s!==void 0&&Jr(r,s).length===0}function Xr(t){if(Xt("typeCategory",t),typeof t=="string")return t;switch(t.kind){case"list":return"list";case"set":return"set";case"tuple":return"tuple";case"record":return"record";case"object":return"object";case"dictionary":return"dictionary";case"collection":return"collection";case"indexed_collection":return"indexed_collection";case"signature":return"function";case"symbol":return"symbol";case"expression":return"expression";case"numeric":return t.type;default:return}}var rm=Object.assign(Object.create(null),{list:Wn,set:Jn,dictionary:rt,collection:$t,indexed_collection:st});function Kr(t,e){let n=t.args?.length??0;if(e<n)return t.args[e].type;let i=t.optArgs?.length??0;return e<n+i?t.optArgs[e-n].type:t.variadicArg?.type}function Qr(t){let e=t.args?.length??0,n=t.optArgs?.length??0;if(t.variadicArg){let i=t.variadicMin??0;return{min:i>0?e+n+i:e,max:1/0}}return{min:e,max:e+n}}function zr(t){return t.typeParams!==void 0&&t.typeParams.length>0}function au(t,e){let n=t.typeParams,i=e.typeParams;if(n.length!==i.length)return!1;let r=Object.create(null);for(let a=0;a<n.length;a++){let c=n[a].bound,l=i[a].bound;if(c===void 0!=(l===void 0)||c!==void 0&&ct(c)!==ct(l))return!1;r[n[a].name]={kind:"variable",name:i[a].name}}let s=$(t,r),o={...e};return delete o.typeParams,ct(s)===ct(o)}var uu={queries:0};function b(t,e){if(Nr&&uu.queries++,typeof t=="string"&&!$e.has(t)&&(t=fi(t)),typeof e=="string"&&!$e.has(e)&&(e=fi(e)),typeof t=="string"&&typeof e=="string")return ge(t,e);if(typeof e!="string"&&ru.has(e.kind)&&(typeof t=="string"?t==="boolean"||ot.has(t):t.kind==="numeric"||t.kind==="value"&&typeof t.value!="string"))return!1;if(typeof t!="string"&&t.kind==="reference"&&t.alias===!0&&t.def!==void 0&&!(typeof e!="string"&&e.kind==="reference"&&e.name===t.name)){if(!mi(t))return!1;try{let n=Jt(t);return n===void 0?!1:b(n,e)}finally{di(t)}}if(e==="any"||t==="never")return!0;if(e==="never")return!1;if(e==="error")return t==="error";if(e==="nothing")return t==="nothing";if(t==="nothing"&&typeof e=="string")return!1;if(e==="missing")return t==="missing";if(t==="missing"&&typeof e=="string")return!1;if(e==="unknown")return t==="any"||t==="error"?!1:typeof t!="string"&&t.kind==="union"?t.types.every(n=>b(n,"unknown")):!0;if(t==="unknown"&&typeof e=="string")return!1;if(typeof e=="string")return typeof t=="string"?ge(t,e):t.kind==="broadcastable"?b(t.elements,e)&&b({kind:"indexed_collection",elements:t.elements},e):t.kind==="value"?typeof t.value=="boolean"?e==="boolean":pe(t.value)?ge("infinity",e):typeof t.value=="number"?Number.isNaN(t.value)?ge("nan",e):Number.isFinite(t.value)?Number.isInteger(t.value)?ge("integer",e):ge("real",e):ge("infinity",e):typeof t.value=="string"?ge("string",e):!1:t.kind==="union"?t.types.every(n=>b(n,e)):t.kind==="intersection"?t.types.some(n=>b(n,e)):t.kind==="negation"?!1:t.kind==="numeric"?!!b(t.type,e):e==="number"?rs(t):e==="symbol"?pi(t):e==="expression"?mu(t):e==="function"?as(t):e==="scalar"?ss(t):e==="value"?os(t):e==="indexed_collection"?b(t,st):e==="collection"?b(t,$t):e==="tuple"?t.kind==="tuple"&&t.elements.every(n=>b(n.type,"unknown")):e==="list"?t.kind==="list"&&b(t.elements,"unknown"):e==="set"?t.kind==="set"&&b(t.elements,"unknown"):e==="record"?t.kind==="record"&&Object.values(t.elements).every(n=>b(n,"unknown")):e==="object"?hi(t):e==="dictionary"?b(t,rt):!1;if(e.kind==="union"){let n=e.types,i=r=>b(r.elements,e)&&b({kind:"indexed_collection",elements:r.elements},e);return typeof t!="string"&&t.kind==="broadcastable"?i(t):typeof t!="string"&&t.kind==="union"?t.types.every(r=>{if(typeof r!="string"){if(r.kind==="broadcastable")return i(r);if(r.kind==="union")return b(r,e)}return n.some(s=>b(r,s))}):n.some(r=>b(t,r))}if(e.kind==="negation")return typeof t!="string"&&t.kind==="negation"?b(e.type,t.type):ue(t,e.type);if(e.kind==="expression"){if(t==="symbol")return e.operator==="Symbol";if(typeof t=="string")return!1;if(t.kind==="expression")return e.operator==="Symbol"?pi(t):t.operator===e.operator;if(t.kind==="symbol")return e.operator==="Symbol"}if(e.kind==="broadcastable"){if(typeof t!="string"&&t.kind==="broadcastable")return b(t.elements,e.elements);if(typeof t!="string"&&t.kind==="union")return t.types.every(i=>b(i,e));if(b(t,e.elements))return!0;let n=fu(t);return n!==void 0?b(n,e.elements):!1}if(typeof t!="string"&&t.kind==="broadcastable")return b(t.elements,e)&&b({kind:"indexed_collection",elements:t.elements},e);if(e.kind==="reference"){if(typeof t!="string"&&t.kind==="reference"&&gu(t,e))return!0;if(e.alias===!0&&e.def){if(!su(e,t))return!1;try{let n=Jt(e);return n===void 0?!1:b(t,n)}finally{ou(e,t)}}}if(e.kind==="intersection")return e.types.every(n=>b(t,n));if(t==="range")return b(Lt,e);if(t==="string")return b(qt,e);if(t==="list")return b(Wn,e);if(t==="set")return b(Jn,e);if(t==="dictionary")return b(rt,e);if(t==="collection")return b($t,e);if(t==="indexed_collection")return b(st,e);if(t==="record")return b(rt,e);if(t==="tuple")return b(st,e);if(typeof t=="string")return!1;if(t.kind==="union")return t.types.every(n=>b(n,e));if(t.kind==="intersection")return t.types.some(n=>b(n,e));if(t.kind==="signature"&&e.kind==="signature"){let n=zr(t),i=zr(e);if(n||i)return n&&i?au(t,e):i?!1:Lr(t,e);if(!wr(t.effects,e.effects)||!b(t.result,e.result))return!1;let r=Qr(t),s=Qr(e);if(r.min>s.min||r.max<s.max)return!1;let o=Math.max((t.args?.length??0)+(t.optArgs?.length??0),(e.args?.length??0)+(e.optArgs?.length??0));for(let a=0;a<o;a++){let c=Kr(e,a);if(c===void 0)break;let l=Kr(t,a);if(l===void 0||!b(c,l))return!1}if(e.variadicArg){let a=t.variadicArg?.type;if(a===void 0||!b(e.variadicArg.type,a))return!1}return!0}if(t.kind==="record"&&e.kind==="record"){for(let n of Object.keys(e.elements))if(!Object.prototype.hasOwnProperty.call(t.elements,n)||!b(t.elements[n],e.elements[n]))return!1;return!0}if(t.kind==="object"&&e.kind==="object"){let n=Object.keys(t.elements),i=Object.keys(e.elements);if(n.length!==i.length)return!1;for(let r of i)if(!Object.prototype.hasOwnProperty.call(t.elements,r)||!b(t.elements[r],e.elements[r])||!b(e.elements[r],t.elements[r]))return!1;return!0}if(t.kind==="object"||e.kind==="object")return!1;if(t.kind==="dictionary"&&e.kind==="dictionary")return b(t.values,e.values);if(t.kind==="record"&&e.kind==="dictionary")return Object.values(t.elements).every(n=>b(n,e.values));if(e.kind==="indexed_collection")return t.kind==="indexed_collection"?b(t.elements,e.elements):t.kind==="list"?b(t.elements,e.elements)||ts(t,e.elements):t.kind==="tuple"?t.elements.every(n=>b(n.type,e.elements)):!1;if(e.kind==="collection"){if(t.kind==="collection"||t.kind==="indexed_collection")return b(t.elements,e.elements);if(t.kind==="list")return b(t.elements,e.elements)||ts(t,e.elements);if(t.kind==="tuple")return t.elements.every(n=>b(n.type,e.elements));if(t.kind==="set")return b(t.elements,e.elements);if(t.kind==="dictionary")return b({kind:"tuple",elements:[{type:"string"},{type:t.values}]},e.elements);if(t.kind==="record")return b({kind:"tuple",elements:[{type:"string"},{type:us(...Object.values(t.elements))}]},e.elements)}if(t.kind==="tuple"&&e.kind==="tuple"){if(t.elements.length!==e.elements.length)return!1;for(let n=0;n<t.elements.length;n++){let i=t.elements[n],r=e.elements[n];if(!b(i.type,r.type)||r.name!==void 0&&i.name!==r.name)return!1}return!0}if(e.kind==="list"&&t.kind==="list"){let n=b(t.elements,e.elements);if(!n&&t.dimensions!==void 0&&t.dimensions.length>=2&&typeof e.elements!="string"&&e.elements.kind==="list"){let i={kind:"list",elements:t.elements,dimensions:t.dimensions.slice(1)};if(b(i,e.elements)&&(!e.dimensions||e.dimensions.length===1&&(e.dimensions[0]===-1||e.dimensions[0]===t.dimensions[0])))return!0}if(!n)return!1;if(e.dimensions){if(!t.dimensions||t.dimensions.length!==e.dimensions.length)return!1;for(let i=0;i<t.dimensions.length;i++)if(e.dimensions[i]!==-1&&t.dimensions[i]!==e.dimensions[i])return!1}return!0}if(t.kind==="symbol"&&e.kind==="symbol")return t.name===e.name;if(e.kind==="numeric"&&t.kind==="value"){if(pe(t.value)||typeof t.value!="number"||Number.isNaN(t.value))return!1;let n=Number.isFinite(t.value)?Number.isInteger(t.value)?"integer":"real":"infinity";if(!ge(n,e.type))return!1;let i=e.lower??-1/0,r=e.upper??1/0;return!(t.value<i||t.value===i&&e.lowerOpen===!0||t.value>r||t.value===r&&e.upperOpen===!0)}if(t.kind==="numeric"&&e.kind==="numeric"){if(!b(t.type,e.type))return!1;let n=t.lower??-1/0,i=e.lower??-1/0,r=t.upper??1/0,s=e.upper??1/0;return!(n<i||n===i&&e.lowerOpen===!0&&t.lowerOpen!==!0||r>s||r===s&&e.upperOpen===!0&&t.upperOpen!==!0)}if(e.kind==="set"&&t.kind==="set")return!!b(t.elements,e.elements);if(e.kind==="value"&&t.kind==="value")return e.value===t.value||typeof e.value=="number"&&Number.isNaN(e.value)&&typeof t.value=="number"&&Number.isNaN(t.value)||pe(e.value)&&pe(t.value);if(t.kind==="value"){if(typeof t.value=="boolean")return b("boolean",e);if(pe(t.value))return b("infinity",e);if(typeof t.value=="number")return Number.isNaN(t.value)?b("nan",e):Number.isFinite(t.value)?Number.isInteger(t.value)?b("integer",e):b("real",e):b("infinity",e);if(typeof t.value=="string")return b("string",e)}return!1}function rs(t){return typeof t=="string"?ot.has(t):t.kind==="value"?typeof t.value=="number"||pe(t.value):t.kind==="numeric"}function ss(t){return rs(t)?!0:typeof t=="string"?Tr.has(t):t.kind==="value"?["string","boolean","number"].includes(typeof t.value):!1}function es(t){let e=new Set;for(;typeof t=="object"&&t.kind==="reference";){let n=se(t);if(t.def===void 0||e.has(n))return;e.add(n);let i=n.typeParams;if(t.args!==void 0&&i!==void 0){let r=Object.create(null),s=Math.min(i.length,t.args.length);for(let o=0;o<s;o++)r[i[o].name]=t.args[o];t=$(t.def,r)}else t=t.def}return t}function hi(t,e){if(t==="object")return!0;if(typeof t=="string")return!1;if(t.kind==="object")return!0;if(t.kind==="reference"){let n=se(t);if(e===void 0&&(e=new Set),e.has(n))return!1;e.add(n);let i=n.def;return i===void 0?!1:hi(i,e)}return!1}function cu(t){return lu(t)?!0:typeof t=="string"?yr.has(t):["collection","set","record","dictionary"].includes(t.kind)}function lu(t){return typeof t=="string"?!1:["indexed_collection","list","tuple"].includes(t.kind)}function fu(t){if(typeof t=="string")return t==="indexed_collection"||t==="list"?"unknown":t==="range"?"integer":void 0;if(t.kind==="indexed_collection")return t.elements;if(t.kind==="list"){let e=t.dimensions;return e&&e.length>1?{kind:"list",elements:t.elements,dimensions:e.slice(1)}:t.elements}}function ts(t,e){let n=t.dimensions;return!n||n.length<=1?!1:b({kind:"list",elements:t.elements,dimensions:n.slice(1)},e)}function os(t){return ss(t)||cu(t)||hi(t)}function as(t){return t==="function"||typeof t!="string"&&t.kind==="signature"}function mu(t){return typeof t=="string"&&["expression","symbol","function"].includes(t)||os(t)||as(t)||pi(t)?!0:typeof t=="string"?!1:t.kind==="expression"}function pi(t){return t==="symbol"?!0:typeof t=="string"?!1:t.kind==="symbol"?!0:t.kind==="expression"?t.operator==="Symbol":!1}function du(t,e){return t===e?t:t==="any"?e:e==="any"||b(t,e)?t:b(e,t)?e:"never"}function pu(t,e){if(t===e)return t;if(t==="any"||e==="any")return"any";if(t==="never")return e;if(e==="never")return t;if(t==="unknown")return e;if(e==="unknown")return t;if(t==="nothing")return e;if(e==="nothing")return t;if(b(t,e))return e;if(b(e,t))return t;let n=Iu(t,e);return hu.has(n)?Nu(t,e):n}var hu=new Set(["scalar","value","function","expression","collection","indexed_collection","list","set","tuple","record","object","dictionary","map","any"]);function gu(t,e){if(t.name!==e.name)return!1;let n=t.args,i=e.args;if(n===void 0||i===void 0)return n===i;if(n.length!==i.length)return!1;let r=t.decl,s=e.decl;return r!==void 0&&s!==void 0&&r!==s?!1:n.every((o,a)=>{switch(Wt(e,a)){case"out":return b(o,i[a]);case"in":return b(i[a],o);default:return b(o,i[a])&&b(i[a],o)}})}function bu(t,e){return t==="def"?void 0:e}function Nu(t,e){let n=[],i=new Set,r=s=>{if(typeof s=="object"&&s.kind==="union"){for(let a of s.types)r(a);return}let o=typeof s=="string"?s:JSON.stringify(s,bu);i.has(o)||(i.add(o),n.push(s))};return r(t),r(e),n.length===1?n[0]:{kind:"union",types:n}}function yu(...t){return cs("narrow",t),t.length===0?"any":t.length===1?t[0]:t.reduce((e,n)=>du(e,n))}function us(...t){return Tu(t)}function Tu(t){return cs("widen",t),t.length===0?"never":t.length===1?t[0]:t.reduce((e,n)=>pu(e,n))}var ns=["infinity","integer","rational","real","imaginary","complex","nan","number","list","record","object","dictionary","set","tuple","indexed_collection","collection","scalar","value","function","expression"],is=new Map;function Iu(t,e){if(t===e)return t;if(t==="any"||e==="any")return"any";if(t==="never")return e;if(e==="never")return t;if(t==="unknown")return e;if(e==="unknown")return t;if(t==="nothing")return e;if(e==="nothing")return t;if(typeof t=="string"&&typeof e=="string"){let n=t<e?`${t}|${e}`:`${e}|${t}`,i=is.get(n);if(i===void 0){i="any";for(let r of ns){let s=pt[r];if(s.has(t)&&s.has(e)){i=r;break}}is.set(n,i)}return i}for(let n of ns)if(b(t,n)&&b(e,n))return n;return"any"}function cs(t,e){for(let n of e)Xt(t,n)}function Xt(t,e){typeof e=="object"&&e.kind==="variable"&&`${t}${e.name}`}Vr({isSubtype:b,widen:us,narrow:yu});var gi=Object.freeze([0,1]),K=class t extends V{rational;radical;im=0;imRational=gi;imRadical=1;factory;constructor(e,n){if(super(),this.factory=n,typeof e=="number"){if(!Number.isFinite(e)||Number.isInteger(e),Number.isFinite(e)&&!Number.isSafeInteger(e)){this.rational=[BigInt(e),BigInt(1)],this.radical=1;return}this.rational=[e,1],this.radical=1;return}if(typeof e=="bigint"){if(e<=BigInt(Number.MAX_SAFE_INTEGER)&&e>=BigInt(Number.MIN_SAFE_INTEGER)){this.rational=[Number(e),1],this.radical=1;return}this.rational=[e,BigInt(1)],this.radical=1;return}typeof e!="object"||"im"in e;let i=1;if(typeof i!="number"||Number.isInteger(i),i==0){this.rational=[0,1],this.radical=1;return}let r=e.rational?[...e.rational]:[1,1];i!=1&&(typeof i=="bigint"?r=S(r,[i,BigInt(1)]):r=S(r,[i,1])),this.rational=r,this.radical=e.radical??1,this.radical<=L&&this.radical>=1,(e.imRational!==void 0||e.imRadical!==void 0)&&(this.imRational=e.imRational?[...e.imRational]:[1,1],this.imRadical=e.imRadical??1,this.imRadical<=L&&this.imRadical>=1),this.normalize()}get type(){return this.isNaN?"nan":this.isPositiveInfinity||this.isNegativeInfinity?"infinity":this.im!==0?R(this.rational)?"imaginary":"complex":this.radical!==1?(R(this.rational),"real"):de(this.rational)?"integer":"rational"}get isExact(){return!0}get asExact(){return this}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isZero?0:this.isOne?1:this.isNegativeOne?-1:this.im!==0?["Complex",R(this.rational)?0:Ni(this.rational,this.radical),Ni(this.imRational,this.imRadical)]:Ni(this.rational,this.radical)}clone(e){return new t(e,this.factory)}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im!==0){let e=bi(this.imRational,this.imRadical),n=e==="1"?"i":e==="-1"?"-i":`${e}i`;if(R(this.rational))return n;let i=bi(this.rational,this.radical);return n.startsWith("-")?`(${i} - ${n.slice(1)})`:`(${i} + ${n})`}return bi(this.rational,this.radical)}get sign(){return R(this.rational)?0:qe(this.rational)?1:-1}get re(){return _t(this.rational)*Math.sqrt(this.radical)}get bignumRe(){return this._bignumComponent(this.rational,this.radical)}get bignumIm(){return this._bignumComponent(this.imRational,this.imRadical)}_bignumComponent(e,n){if(n===1)return C(e)?new u(e[0]).div(e[1]):new u(e[0]).div(new u(e[1]));let i=u.precision,r=Math.max(i,25);u.precision=r+10;try{return(C(e)?new u(e[0]).div(e[1]):new u(e[0]).div(new u(e[1])))._mulToPrecision(new u(n).sqrt(),r)}finally{u.precision=i}}get numerator(){return this.im!==0?this:this.rational[1]==1?this:this.clone({rational:C(this.rational)?[this.rational[0],1]:[this.rational[0],BigInt(1)],radical:this.radical})}get denominator(){return this.im!==0?this.clone(1):C(this.rational)?this.clone(this.rational[1]):this.clone({rational:[this.rational[1],BigInt(1)]})}_toFloat(){return this.im===0?this.factory(this.bignumRe):this.factory({re:this.bignumRe,im:this.im})}_liftComplex(e){return Number.isSafeInteger(e.re)&&Number.isSafeInteger(e.im)?this.clone({rational:[e.re,1],imRational:[e.im,1]}):null}normalize(){let e=this;if(Number.isInteger(this.radical)&&this.radical>0&&Number.isFinite(this.radical),(this.imRational!==gi||this.imRadical!==1)&&this._normalizeIm(),isNaN(this.radical)){e.rational=[NaN,1],e.radical=1,this.im!==0&&this._clearIm();return}let[n,i]=this.rational;if(i==0){e.rational=[NaN,1],e.radical=1,this.im!==0&&this._clearIm();return}if(this.radical===0||n===0){e.rational=[0,1],e.radical=1;return}if(this.radical>=4){let[r,s]=ne(this.radical,2);r!==1&&(e.rational=S(this.rational,[r,1])),e.radical=s}e.rational=ie(this.rational),this.im!==0&&(!Number.isFinite(this.rational[0])||this.radical===1&&this.imRadical)}_clearIm(){let e=this;e.imRational=gi,e.imRadical=1,e.im=0}_normalizeIm(){let e=this;Number.isInteger(this.imRadical)&&this.imRadical>=0&&Number.isFinite(this.imRadical);let[n,i]=this.imRational;if(isNaN(this.imRadical)||i==0||typeof n=="number"&&!Number.isFinite(n)){e.rational=[NaN,1],e.radical=1,this._clearIm();return}if(this.imRadical===0||n===0){this._clearIm();return}if(this.imRadical>=4){let[r,s]=ne(this.imRadical,2);r!==1&&(e.imRational=S(this.imRational,[r,1])),e.imRadical=s}e.imRational=ie(this.imRational),e.im=_t(this.imRational)*(this.imRadical===1?1:Math.sqrt(this.imRadical))}get isNaN(){return Number.isNaN(this.rational[0])}get isPositiveInfinity(){return this.rational[0]==1/0}get isNegativeInfinity(){return this.rational[0]==-1/0}get isComplexInfinity(){return!1}get isZero(){return this.im===0&&R(this.rational)}get isOne(){return this.rational[0]!==this.rational[1]||this.radical!==1?!1:this.im===0}get isNegativeOne(){return this.rational[0]!==-this.rational[1]||this.radical!==1?!1:this.im===0}sgn(){if(this.im===0&&!Number.isNaN(this.rational[0]))return R(this.rational)?0:qe(this.rational)?1:-1}N(){return this.isZero||this.isOne||this.isNegativeOne?this:this.im===0?this.rational[1]==1&&this.radical===1?this:this.factory(this.bignumRe):this.rational[1]==1&&this.radical===1&&this.imRational[1]==1&&this.imRadical===1?this:this._toFloat()}neg(){return this.im===0?this.isZero?this:this.clone({rational:re(this.rational),radical:this.radical}):this.clone({rational:R(this.rational)?this.rational:re(this.rational),radical:this.radical,imRational:re(this.imRational),imRadical:this.imRadical})}inv(){if(this.isNaN)return this;if(this.isPositiveInfinity||this.isNegativeInfinity)return this.clone(0);if(this.isZero)return this.clone(1/0);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im!==0){if(R(this.rational)){let[r,s]=this.imRational;return this.clone({rational:[0,1],imRational:re(S([BigInt(s),BigInt(1)],Pe([BigInt(r)*BigInt(this.imRadical),BigInt(1)]))),imRadical:this.imRadical})}let e=this.rational,n=this.imRational,i=Pe(F(S(e,e),S(n,n)));return this.clone({rational:S(e,i),imRational:re(S(n,i)),imRadical:1})}return this.clone({rational:S([BigInt(this.rational[1]),BigInt(1)],Pe([BigInt(this.rational[0])*BigInt(this.radical),BigInt(1)])),radical:this.radical})}add(e){if(typeof e=="number")return e===0?this:this.im===0?Number.isInteger(e)&&this.radical===1?this.clone({rational:F(this.rational,[e,1])}):this.factory(this.bignumRe).add(e):Number.isInteger(e)&&this.radical===1&&this.imRadical===1?this.clone({rational:F(this.rational,[e,1]),imRational:this.imRational,imRadical:1}):this._toFloat().add(e);if(e.isZero)return this;if(this.isZero)return e;if(!(e instanceof t)){if(e.im!==0){let i=this._liftComplex(e);if(i!==null)return this.add(i)}return e.add(this)}if(this.im===0&&e.im===0)return this.radical===e.radical?this.clone({rational:F(this.rational,e.rational),radical:this.radical}):this.factory(this.bignumRe).add(e);let n=Kt({rat:this.rational,rad:this.radical},{rat:e.rational,rad:e.radical});if(n!==null){let i=Kt({rat:this.imRational,rad:this.imRadical},{rat:e.imRational,rad:e.imRadical});if(i!==null&&ls(n,i))return this.clone({rational:n.rat,radical:n.rad,imRational:i.rat,imRadical:i.rad})}return this._toFloat().add(e)}sub(e){return this.add(e.neg())}mul(e){if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):this.clone(0);if(e===1)return this;if(e===-1)return this.neg();if(typeof e=="number")return Number.isInteger(e)?this.im===0?this.clone({rational:S(this.rational,[e,1]),radical:this.radical}):this.clone({rational:S(this.rational,[e,1]),radical:this.radical,imRational:S(this.imRational,[e,1]),imRadical:this.imRadical}):this.im===0?this.factory(this.bignumRe).mul(e):this._toFloat().mul(e);if(e instanceof u)return this.factory(e).mul(this);if(e.im!==0&&!(e instanceof t)){let f=this._liftComplex(e);if(f===null)return e.mul(this);e=f}if(e.isZero)return this.isPositiveInfinity||this.isNegativeInfinity||this.isNaN?this.clone(NaN):e;if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isNaN)return e;if(this.isZero)return e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN?this.clone(NaN):this;if(this.isOne)return e;if(this.isNegativeOne)return e.neg();if(!(e instanceof t))return e.mul(this);if(this.im===0&&e.im===0){let f=BigInt(this.radical)*BigInt(e.radical);return f>BigInt(L)?this.factory(this.bignumRe).mul(e):this.clone({rational:S(this.rational,e.rational),radical:Number(f)})}let n={rat:this.rational,rad:this.radical},i={rat:this.imRational,rad:this.imRadical},r={rat:e.rational,rad:e.radical},s={rat:e.imRational,rad:e.imRadical},o=Qt(n,r),a=Qt(i,s),c=Qt(n,s),l=Qt(i,r);if(o!==null&&a!==null&&c!==null&&l!==null){let f=Kt(o,vu(a)),m=Kt(c,l);if(f!==null&&m!==null&&ls(f,m))return this.clone({rational:f.rat,radical:f.rad,imRational:m.rat,imRadical:m.rad})}return this._toFloat().mul(e)}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.im===0?this.clone({rational:S(this.rational,[1,e]),radical:this.radical}):this.clone({rational:S(this.rational,[1,e]),radical:this.radical,imRational:S(this.imRational,[1,e]),imRadical:this.imRadical});if(this.isNaN)return this;if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(this.isZero)return e.isZero?this.clone(NaN):e.isNaN?e:this;if(e.isNaN)return e;if(e.isZero)return this.im!==0?this.factory({im:1/0}):this.clone(this.sign*(1/0));let n;if(e instanceof t)n=e;else{let s=e.im!==0?this._liftComplex(e):null;if(s===null)return this._toFloat().div(e);n=s}if(this.im!==0||n.im!==0){let s=n.inv();return s instanceof t?this.mul(s):this._toFloat().div(n)}let i=S(this.rational,[BigInt(n.rational[1]),BigInt(n.rational[0])*BigInt(n.radical)]),r=BigInt(this.radical)*BigInt(n.radical);return r>BigInt(L)?this.factory(this.bignumRe).div(n):this.clone({rational:i,radical:Number(r)})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof V){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;if(e.im)e={re:e.re,im:e.im};else{if(e instanceof t&&e.radical===1&&e.rational[0]==1)return this.root(Number(e.rational[1]));e=e.re}}if(e===.5)return this.sqrt();if(typeof e=="object"&&("re"in e||"im"in e))return this._toFloat().pow(e);if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.factory({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im!==0){if(Number.isInteger(e)&&e<=1024){let n=this.clone(1),i=this,r=e;for(;r>0;)r%2===1&&(n=n.mul(i)),r=Math.floor(r/2),r>0&&(i=i.mul(i));return n}return this._toFloat().pow(e)}if(e%1===.5)return this.pow(Math.floor(e)).mul(this.sqrt());if(this.radical>L||this.rational[0]>L||this.rational[0]<-L||this.rational[1]>L)return this.factory(this.bignumRe).pow(e);if(this.sign<0){if(Number.isInteger(e)){let n=e%2===0?1:-1,i=BigInt(e),r=BigInt(this.radical)**i;return r>BigInt(L)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(n)*(-BigInt(this.rational[0]))**i,BigInt(this.rational[1])**i],radical:Number(r)})}return this.factory({im:(-this.re)**e})}else if(Number.isInteger(e)){let n=BigInt(e),i=BigInt(this.radical)**n;return i>BigInt(L)?this.factory(this.bignumRe).pow(e):this.clone({rational:[BigInt(this.rational[0])**n,BigInt(this.rational[1])**n],radical:Number(i)})}return this.factory(this.bignumRe).pow(e)}root(e){if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(e===1)return this;if(e===-1)return this.inv();if(this.im!==0)return this._toFloat().root(e);if(e<0)return this.root(-e).inv();if(e%1===.5)return this.pow(2).root(2*e);if(this.sign<0&&Number.isInteger(e)&&e%2===1)return this.neg().root(e).neg();if(this.radical===1){if(this.sign>0&&Number.isInteger(e)){let[n,i]=this.rational,r=hs(n,e);if(r!==null){let s=hs(i,e);if(s!==null)return this.clone({rational:[r,s]})}}return this.factory(this.bignumRe).root(e)}return this.sign<0?this.factory({im:Math.pow(-this.re,1/e)}):this.factory(this.bignumRe).root(e)}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){if(this.radical===1&&this.imRadical===1){let e=this.rational,n=this.imRational,i=this.clone({rational:F(S(e,e),S(n,n))}).sqrt();if(i instanceof t&&i.im===0&&i.radical===1){let r=[1,2],s=this.clone({rational:S(F(e,i.rational),r)}).sqrt();if(s instanceof t&&s.im===0&&s.radical===1){let o=this.clone({rational:S(F(i.rational,re(e)),r)}).sqrt();if(o instanceof t&&o.im===0&&o.radical===1)return this.clone({rational:s.rational,imRational:qe(n)?o.rational:re(o.rational),imRadical:1})}}}return this._toFloat().sqrt()}if(this.radical===1)if(C(this.rational)){let[e,n]=this.rational;if(Math.abs(e*n)>L){let i=ds(BigInt(Math.abs(e)),BigInt(n));return i?this._fromExactSqrt(i,e<0):this.factory(this.bignumRe).sqrt()}return e>0?this.clone({radical:e*n,rational:[1,n]}):this.clone({rational:[0,1],imRational:[1,n],imRadical:-e*n})}else{let[e,n]=this.rational,i=ds(e<0n?-e:e,n);if(i)return this._fromExactSqrt(i,e<0n);let r=this.factory(this.bignumRe);return e>0n&&(r.isPositiveInfinity||r.isZero)?this.factory(this.bignumRe.sqrt()):r.sqrt()}if(this.sign>0){let e=Math.sqrt(this.re);if(Number.isInteger(e))return this.clone(e)}return this.factory(this.bignumRe).sqrt()}_fromExactSqrt(e,n){return n?this.clone({rational:[0,1],imRational:e,imRadical:1}):this.clone({rational:e})}gcd(e){if(!(e instanceof t))return e.gcd(this);if(this.isOne||this.im!==0||e.im!==0||e.isOne)return this.clone(1);let n=Zn(this.rational,e.rational),i=G(this.radical,e.radical);return this.clone({rational:n,radical:i})}abs(){if(this.im!==0){if(R(this.rational)){let i=this.imRational;return this.clone({rational:qe(i)?i:re(i),radical:this.imRadical})}let e=this.rational,n=this.imRational;return this.clone({rational:F(S(e,e),S(n,n))}).sqrt()}return this.sign===-1?this.neg():this}ln(e){return this.isZero?this.clone(NaN):this.isPositiveInfinity?this.clone(1/0):this.im!==0?this._toFloat().ln(e):this.sign<0?this.clone(NaN):this.isOne?this.clone(0):this.isNegativeOne?this.factory({im:Math.PI}):this.factory(this.bignumRe).ln(e)}exp(){return this.isNaN?this.clone(NaN):this.isZero?this.clone(1):this.im!==0?this._toFloat().exp():this.isNegativeInfinity?this.clone(0):this.isPositiveInfinity?this.clone(1/0):this.factory(this.bignumRe).exp()}_integerPart(e){let n=BigInt(this.rational[0]),i=BigInt(this.rational[1]);i<0n&&(n=-n,i=-i);let r;if(e==="round"){let s=2n*n+i,o=2n*i;r=s/o,s%o!==0n&&s<0n&&(r-=1n)}else r=n/i,n%i!==0n&&(e==="floor"&&n<0n&&(r-=1n),e==="ceil"&&n>0n&&(r+=1n));return this.clone({rational:[r,BigInt(1)],radical:1})}floor(){return this.isNaN||this.im!==0?this.clone(NaN):this.radical===1&&de(this.rational)?this:this.radical===1?this._integerPart("floor"):this.clone(Math.floor(this.re))}ceil(){return this.isNaN||this.im!==0?this.clone(NaN):this.radical===1&&de(this.rational)?this:this.radical===1?this._integerPart("ceil"):this.clone(Math.ceil(this.re))}round(){return this.isNaN||this.im!==0?this.clone(NaN):this.radical===1&&de(this.rational)?this:this.radical===1?this._integerPart("round"):this.clone(Math.round(this.re))}eq(e){return typeof e=="number"?this.im===0&&this.radical===1&&de(this.rational)&&this.rational[0]==e:e instanceof t?this.radical===e.radical&&this.rational[0]==e.rational[0]&&this.rational[1]==e.rational[1]&&this.imRadical===e.imRadical&&this.imRational[0]==e.imRational[0]&&this.imRational[1]==e.imRational[1]:this.im===e.im&&this.bignumRe.eq(e.bignumRe??e.re)}_order(e){if(this.im!==0)return;let n=zt(this.rational);if(typeof e!="number"){if(e.im!==0||e.isNaN)return;if(e instanceof t)return Mu(this,e);if(n||e.isPositiveInfinity||e.isNegativeInfinity)return en(n?this.re:void 0,e.isPositiveInfinity?1/0:e.isNegativeInfinity?-1/0:0);let i=e.re;return ms(this.re,i)??fs(this.bignumRe,e.bignumRe??i)}if(!Number.isNaN(e))return n||!Number.isFinite(e)?en(n?this.re:void 0,e):Number.isSafeInteger(e)?Eu(this,e):ms(this.re,e)??fs(this.bignumRe,e)}lt(e){if(this.isNaN)return!1;let n=this._order(e);return n===void 0?this._unorderedAnswer(e):n<0}lte(e){if(this.isNaN)return!1;let n=this._order(e);return n===void 0?this._unorderedAnswer(e):n<=0}gt(e){if(this.isNaN)return!1;let n=this._order(e);return n===void 0?this._unorderedAnswer(e):n>0}gte(e){if(this.isNaN)return!1;let n=this._order(e);return n===void 0?this._unorderedAnswer(e):n>=0}_unorderedAnswer(e){if(this.im===0)return typeof e=="number"?Number.isNaN(e)?!1:void 0:e.isNaN?!1:void 0}static sum(e,n){if(e.length===1)return e;let i=m=>m.isExact||m.im!==0&&Number.isInteger(m.re)&&Number.isInteger(m.im);if(e.some(m=>!i(m))){if(e.length===2)return[e[0].add(e[1])];let m=n(0);for(let d of e)m=m.add(d);return[m]}let r=[0,1],s=[],o=[0,1],a=[],c=(m,d,p)=>{let h=m.findIndex(g=>g.radical===p);h===-1?m.push({multiple:d,radical:p}):m[h].multiple=F(m[h].multiple,d)};for(let m of e){if(m.isNaN)return[new t(NaN,n)];if(!m.isZero)if(m instanceof t){let d=m.rational;m.radical===1?o=F(o,d):R(d)||c(a,d,m.radical),m.im!==0&&(m.imRadical===1?r=F(r,m.imRational):c(s,m.imRational,m.imRadical))}else{b(m.type,"integer")||Number.isInteger(m.re)&&Number.isInteger(m.im),m.im!==0&&(r=F(r,[m.im,1]));let d=m.bignumRe!==void 0?BigInt(m.bignumRe.toFixed(0)):BigInt(m.re);o=F(o,[d,BigInt(1)])}}if(!(!R(r)||s.length>0)){if(R(o)&&a.length===0)return[new t(0,n)];let m=[];return a.length===0?m.push(new t({rational:o},n)):(a.push({multiple:o,radical:1}),m.push(...a.map(d=>new t({rational:d.multiple,radical:d.radical},n)))),m}let f=[];(!R(o)||!R(r))&&f.push(new t({rational:o,imRational:r},n));for(let m of a)R(m.multiple)||f.push(new t({rational:m.multiple,radical:m.radical},n));for(let m of s)R(m.multiple)||f.push(new t({rational:[0,1],imRational:m.multiple,imRadical:m.radical},n));return f.length===0?[new t(0,n)]:f}};function Kt(t,e){return R(t.rat)?e:R(e.rat)?t:t.rad===e.rad?{rat:F(t.rat,e.rat),rad:t.rad}:null}function Qt(t,e){if(R(t.rat)||R(e.rat))return{rat:[0,1],rad:1};let n=BigInt(t.rad)*BigInt(e.rad);if(n>BigInt(L))return null;let i=S(t.rat,e.rat),r=Number(n);if(r>=4){let[s,o]=ne(r,2);s!==1&&(i=S(i,[s,1])),r=o}return{rat:i,rad:r}}function vu(t){return R(t.rat)?t:{rat:re(t.rat),rad:t.rad}}function ls(t,e){return R(e.rat)||R(t.rat)?!0:t.rad===1&&e.rad===1}function bi(t,e){let n=r=>de(r)?O(r[0]):`${O(r[0])}/${O(r[1])}`;if(e===1)return n(t);let i=r=>`sqrt(${O(r)})`;return Ct(t)?i(e):Ft(t)?`-${i(e)}`:t[0]==1?`${i(e)}/${O(t[1])}`:t[0]==-1?`-${i(e)}/${O(t[1])}`:`${n(t)}${i(e)}`}function yi(t,e){return t<e?-1:t>e?1:0}function fs(t,e){return t.lt(e)?-1:t.gt(e)?1:0}function zt(t){let e=t[0];return typeof e=="number"&&!Number.isFinite(e)&&!Number.isNaN(e)}function en(t,e){return t===void 0?e>0?-1:1:Number.isFinite(e)?t>0?1:-1:yi(t,e)}function ms(t,e){if(!Number.isFinite(t)||!Number.isFinite(e))return;let n=Math.max(Math.abs(t),Math.abs(e));if(!(n<1e-300)&&!(Math.abs(t-e)<=8*Number.EPSILON*n))return t<e?-1:1}function Eu(t,e){let[n,i]=t.rational,r=n<0?-1:n>0?1:0,s=e<0?-1:e>0?1:0;if(r!==s)return r<s?-1:1;if(r===0)return 0;let o=t.radical;if(o===1&&typeof n=="number"){let m=Math.abs(e)*i;if(Number.isSafeInteger(m)){let d=yi(Math.abs(n),m);return r>0?d:-d}}let a=BigInt(n),c=BigInt(i),l=BigInt(e),f=gs(a*a*BigInt(o)-l*l*c*c);return r>0?f:-f}function gs(t){return t<0n?-1:t>0n?1:0}function Mu(t,e){let[n,i]=t.rational,[r,s]=e.rational;if(zt(t.rational))return en(n,zt(e.rational)?r:0);if(zt(e.rational))return en(void 0,r);let o=n<0?-1:n>0?1:0,a=r<0?-1:r>0?1:0;if(o!==a)return o<a?-1:1;if(o===0)return 0;let c=t.radical,l=e.radical;if(c===1&&l===1&&typeof n=="number"&&typeof r=="number"){let I=Math.abs(n)*s,T=Math.abs(r)*i;if(Number.isSafeInteger(I)&&Number.isSafeInteger(T)){let N=yi(I,T);return o>0?N:-N}}let f=BigInt(n),m=BigInt(i),d=BigInt(r),p=BigInt(s),h=f*f*BigInt(c)*p*p,g=d*d*BigInt(l)*m*m,y=gs(h-g);return o>0?y:-y}function Ni(t,e){let n=i=>de(i)?q(i[0]):["Rational",q(i[0]),q(i[1])];return e===1?n(t):Ct(t)?["Sqrt",e]:Ft(t)?["Negate",["Sqrt",e]]:t[0]==1?["Divide",["Sqrt",e],q(t[1])]:t[0]==-1?["Negate",["Divide",["Sqrt",e],q(t[1])]]:["Multiply",n(t),["Sqrt",e]]}function ds(t,e){let n=ps(t);if(n===null)return null;let i=ps(e);return i===null?null:[n,i]}function ps(t){if(t<0n)return null;if(t<2n)return t;let e=1n<<(BigInt(t.toString(2).length)+1n)/2n;for(;;){let n=e+t/e>>1n;if(n>=e)break;e=n}return e*e===t?e:null}function hs(t,e){if(typeof t=="bigint"){if(t<0n||t>BigInt(Number.MAX_SAFE_INTEGER))return null;t=Number(t)}if(!Number.isSafeInteger(t)||t<=0)return null;if(t===1)return 1;if(e>53)return null;let n=Math.round(Math.pow(t,1/e)),i=BigInt(e),r=BigInt(t);for(let s of[n,n-1,n+1])if(!(s<2)&&BigInt(s)**i===r)return s;return null}function Ti(t,e){for(t.isInteger()&&e.isInteger();!e.isZero();)[t,e]=[e,t.mod(e)];return t.abs()}function bs(t,e){return t.isZero()||e.isZero()?u.ZERO:t.mul(e).div(Ti(t,e)).abs()}function*Ns(t){if(!t.isInteger()||t.isNegative())return u.NAN;if(t.lt(1))return u.ONE;let e=t;for(;t.gt(2);)t=t.sub(2),e=e.mul(t),yield e;return e}function ht(t){if(!t.isFinite()||t.isZero())return!0;let i=(t.significand<0n?-t.significand:t.significand).toString().length;if(i>17)return!1;let r=i+t.exponent-1;return r>=309||r<=-308?!1:t.eq(new u(t.toNumber()))}var nn=class t extends V{decimal;constructor(e){if(super(),typeof e=="number")this.decimal=new u(e),this.im=0;else if(e instanceof u)this.decimal=e,this.im=0;else{let n=e.re instanceof u?e.re:new u(e.re??0);this.decimal=n,this.im=e.im??0}this.decimal.isNaN()?this.im=NaN:isNaN(this.im)&&(this.decimal=u.NAN)}get type(){return this.isNaN?"nan":this.isComplexInfinity?"infinity":this.im!==0?Number.isNaN(this.im)?"nan":this.decimal.isFinite()?this.decimal.isZero()?"imaginary":"complex":"infinity":this.decimal.isFinite()?this.decimal.isInteger()?"integer":"real":"infinity"}get isExact(){return this.im===0&&this.decimal.isInteger()}get asExact(){if(this.isExact)return this._makeExact(U(this.decimal))}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.isComplexInfinity?"ComplexInfinity":this.im===0?ht(this.decimal)?this.decimal.toNumber():{num:tn(this.decimal)}:ht(this.decimal)?["Complex",q(this.decimal.toNumber()),q(this.im)]:["Complex",{num:tn(this.decimal)},q(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return tn(this.decimal.toPrecision(u.precision));if(this.decimal.isZero())return this.im===1?"i":this.im===-1?"-i":`${O(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${this.im}i`:e=`- ${-this.im}i`,`(${tn(this.decimal)} ${e})`}clone(e){return new t(e)}_makeExact(e){return new K(e,n=>this.clone(n))}get re(){return this.decimal.toNumber()}get bignumRe(){return this.decimal}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return this.decimal.isNaN()}get isPositiveInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isPositive()}get isNegativeInfinity(){return this.im===0&&!this.decimal.isFinite()&&!this.decimal.isNaN()&&this.decimal.isNegative()}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal.isZero()}isZeroWithTolerance(e){let n=typeof e=="number"?e:e.toNumber();if(Math.abs(this.im)>n)return!1;let i=typeof e=="number"?new u(e):e;return this.decimal.abs().lte(i)}get isOne(){return this.im===0&&this.decimal.eq(1)}get isNegativeOne(){return this.im===0&&this.decimal.eq(-1)}sgn(){if(this.im===0){if(this.decimal.isZero())return 0;if(this.decimal.isPositive())return 1;if(this.decimal.isNegative())return-1}}N(){return this}neg(){return this.isZero?this:this.clone({re:this.decimal.neg(),im:-this.im})}inv(){if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(this.decimal.inv());let e=this.re*this.re+this.im*this.im,n=this.decimal.mul(this.decimal).add(this.im*this.im);return this.clone({re:this.decimal.div(n),im:-this.im/e})}add(e){return typeof e=="number"?e===0?this:this.clone({re:this.decimal.add(e),im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal.add(e.bignumRe??e.re),im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isZero)return e instanceof V&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof u?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return!this.isNaN&&this.im!==0&&!Number.isFinite(e)&&!Number.isNaN(e)?this.clone({re:1/0,im:1/0}):this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e});if(e instanceof u)return!this.isNaN&&this.im!==0&&!Number.isFinite(e.toNumber())&&!Number.isNaN(e.toNumber())?this.clone({re:1/0,im:1/0}):this.im===0?this.clone(this.decimal.mul(e)):this.clone({re:this.decimal.mul(e),im:this.im*e.toNumber()});if(this.isNegativeOne){let n=e.neg();return this.clone({re:n.bignumRe??n.re,im:n.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isNaN||this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):!this.isNaN&&!e.isNaN&&(this.isComplexInfinity||e.isComplexInfinity||(this.isPositiveInfinity||this.isNegativeInfinity)&&e.im!==0||(e.isPositiveInfinity||e.isNegativeInfinity)&&this.im!==0)?this.clone({re:1/0,im:1/0}):this.im===0&&e.im===0?this.clone(this.decimal.mul(e.bignumRe??e.re)):this.clone({re:this.decimal.mul(e.bignumRe??e.re).sub(this.im*e.im),im:this.re*e.im+this.im*e.re})}div(e){if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal.div(e),im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.isZero||this.isNaN?this.clone(NaN):this.im!==0?this.clone({im:1/0}):this.clone(this.decimal.isNegative()?-1/0:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal.div(e.bignumRe??e.re));let[n,i]=[this.re,this.im],[r,s]=[e.re,e.im],o=r*r+s*s,a=e.bignumRe??new u(e.re),c=a.mul(a).add(s*s);return this.clone({re:this.decimal.mul(a).add(i*s).div(c),im:(i*r-n*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this;if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof V){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});if(this.isZero)return c>0?this.clone(0):this.clone(NaN);let f=this.decimal,m=this.im,d=f.mul(f).add(new u(m).mul(m)).sqrt().ln(),p=u.atan2(m,f),h=d.mul(c).sub(p.mul(l)),g=p.mul(c).add(d.mul(l)),y=h.exp();return this.clone({re:y._mulToPrecision(g.cos(),u.precision),im:Ye(y.mul(g.sin()).toNumber())})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0)return this.pow(-e).inv();if(this.im===0)return this.clone(this.decimal.pow(e));let n=this.decimal,i=this.im,r=n.mul(n).add(new u(i).mul(i)).sqrt(),s=u.atan2(i,n),o=r.pow(e),a=s.mul(e);return this.clone({re:o._mulToPrecision(a.cos(),u.precision),im:Ye(o.mul(a.sin()).toNumber())})}root(e){if(!Number.isInteger(e))return this._makeExact(NaN);if(e===0)return this._makeExact(NaN);if(e===1)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.decimal.isNegative()?e%2===0?this._makeExact(NaN):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.neg().ln().div(e).exp().neg()):e===2?this.clone(this.decimal.sqrt()):e===3?this.clone(this.decimal.cbrt()):this.clone(this.decimal.nthRoot(e));let n=this.decimal,i=this.im,r=n.mul(n).add(new u(i).mul(i)).sqrt(),s=u.atan2(i,n),o=r.ln().div(e).exp(),a=s.div(e);return this.clone({re:o._mulToPrecision(a.cos(),u.precision),im:Ye(o.mul(a.sin()).toNumber())})}sqrt(){if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,n=this.im,i=e.mul(e).add(new u(n).mul(n)).sqrt(),r=e.add(i).div(2),s=i.sub(e).div(2),o=r.isNegative()?u.ZERO:r.sqrt(),a=Ye(Math.sign(n)*(s.isNegative()?0:s.sqrt().toNumber()));return this.clone({re:o,im:a})}return this.decimal.isPositive()?this.clone(this.decimal.sqrt()):this.clone({im:Math.sqrt(-this.re)})}gcd(e){if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!this.decimal.isInteger())return this._makeExact(1);let n=e.bignumRe?new u(e.bignumRe):new u(e.re);if(!n.isInteger())return this._makeExact(1);let i=this.decimal;for(;!n.isZero();){let r=n;n=i.mod(n),i=r}return this.clone(i.abs())}abs(){return this.im===0?this.decimal.isPositive()?this:this.clone(this.decimal.neg()):this.clone(this.decimal.pow(2).add(new u(this.im).mul(this.im)).sqrt())}ln(e){if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0){if(this.isOne)return this._makeExact(0);if(this.decimal.isNegative()){let o=this.decimal.neg();return e===void 0?this.clone({re:o.ln(),im:Math.PI}):this.clone({re:o.log(e),im:Math.PI/Math.log(e)})}return e===void 0?this.clone(this.decimal.ln()):this.clone(this.decimal.log(e))}let n=this.decimal,i=this.im,r=n.mul(n).add(new u(i).mul(i)).sqrt(),s=u.atan2(i,n).toNumber();return e===void 0?this.clone({re:r.ln(),im:s}):this.clone({re:r.log(e),im:s/Math.log(e)})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=this.decimal.exp(),n=Ye(Math.cos(this.im))===0?u.ZERO:new u(this.im).cos();return this.clone({re:e._mulToPrecision(n,u.precision),im:Ye(e.mul(Math.sin(this.im)).toNumber())})}return this.clone(this.decimal.exp())}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(U(this.decimal.floor()))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(U(this.decimal.ceil()))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):this.decimal.isInteger()?this:this._makeExact(U(this.decimal.round()))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal.eq(e):e.isNaN?!1:Number.isFinite(this.im)?this.decimal.eq(e.bignumRe??e.re)&&this.im-e.im===0:!Number.isFinite(e.im)}lt(e){if(this.im===0){if(typeof e=="number")return this.decimal.lt(e);if(e.im===0)return this.decimal.lt(e.bignumRe??e.re)}}lte(e){if(this.im===0){if(typeof e=="number")return this.decimal.lte(e);if(e.im===0)return this.decimal.lte(e.bignumRe??e.re)}}gt(e){if(this.im===0){if(typeof e=="number")return this.decimal.gt(e);if(e.im===0)return this.decimal.gt(e.bignumRe??e.re)}}gte(e){if(this.im===0){if(typeof e=="number")return this.decimal.gte(e);if(e.im===0)return this.decimal.gte(e.bignumRe??e.re)}}};function tn(t){let e=t.toString();return t.isInteger()&&e.includes("e")&&t.exponent<=5?t.toFixed(0):e}function Ye(t){return Math.abs(t)<=At?0:t}var rn=class t extends V{decimal;constructor(e){if(super(),typeof e=="number")this.decimal=e,this.im=0;else if(e instanceof u)this.decimal=e.toNumber(),this.im=0;else{let n=e.re===void 0?0:e.re instanceof u?e.re.toNumber():e.re;this.decimal=n,this.im=e.im??0,isFinite(this.im)||(this.decimal=this.im)}isNaN(this.im)}_makeExact(e){return new K(e,n=>this.clone(n))}get type(){return this.isNaN?"nan":this.isComplexInfinity?"infinity":this.im!==0?Number.isNaN(this.im)?"nan":Number.isFinite(this.decimal)?this.decimal===0?"imaginary":"complex":"infinity":Number.isFinite(this.decimal)?Number.isInteger(this.decimal)?"integer":"real":"infinity"}get isExact(){return this.im===0&&Number.isInteger(this.decimal)}get asExact(){if(this.isExact)return this._makeExact(this.decimal)}toJSON(){return this.isNaN?"NaN":this.isPositiveInfinity?"PositiveInfinity":this.isNegativeInfinity?"NegativeInfinity":this.im===0?q(this.decimal):["Complex",q(this.decimal),q(this.im)]}toString(){if(this.isZero)return"0";if(this.isOne)return"1";if(this.isNegativeOne)return"-1";if(this.im===0)return O(this.decimal);if(this.decimal===0)return this.im===1?"i":this.im===-1?"-i":`${O(this.im)}i`;if(this.isComplexInfinity)return"~oo";let e="";return this.im===1?e="+ i":this.im===-1?e="- i":this.im>0?e=`+ ${O(this.im)}i`:e=`- ${O(-this.im)}i`,`(${O(this.decimal)} ${e})`}clone(e){return new t(e)}get re(){return this.decimal}get bignumRe(){}get numerator(){return this}get denominator(){return this._makeExact(1)}get isNaN(){return Number.isNaN(this.decimal)}get isPositiveInfinity(){return!Number.isFinite(this.decimal)&&this.decimal>0&&this.im===0}get isNegativeInfinity(){return!Number.isFinite(this.decimal)&&this.decimal<0&&this.im===0}get isComplexInfinity(){return!Number.isFinite(this.im)&&!Number.isNaN(this.im)}get isZero(){return this.im===0&&this.decimal===0}isZeroWithTolerance(e){let n=e instanceof u?e.toNumber():e;return Math.abs(this.im)<=n&&Math.abs(this.decimal)<n}get isOne(){return this.im===0&&this.decimal===1}get isNegativeOne(){return this.im===0&&this.decimal===-1}sgn(){if(!(this.im!==0||Number.isNaN(this.decimal)))return Math.sign(this.decimal)}N(){return this}neg(){return this.isNaN?this._makeExact(NaN):this.isZero?this:this.clone({re:-this.decimal,im:-this.im})}inv(){if(this.isNaN)return this._makeExact(NaN);if(this.isOne)return this;if(this.isNegativeOne)return this;if(this.im===0)return this.clone(1/this.decimal);let e=this.re*this.re+this.im*this.im;return this.clone({re:this.decimal/e,im:-this.im/e})}add(e){return this.isNaN?this._makeExact(NaN):typeof e=="number"?e===0?this:this.clone({re:this.decimal+e,im:this.im}):e.isZero?this:this.isZero?this.clone({re:e.bignumRe??e.re,im:e.im}):this.clone({re:this.decimal+e.re,im:this.im+e.im})}sub(e){return this.add(e.neg())}mul(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e instanceof V&&(e.isPositiveInfinity||e.isNegativeInfinity||e.isComplexInfinity||e.isNaN)?this._makeExact(NaN):this;if(e instanceof u&&(e=e.toNumber()),e===1)return this;if(e===-1)return this.neg();if(e===0)return this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0);if(this.isOne)return typeof e=="number"||e instanceof u?this.clone(e):this.clone({re:e.bignumRe??e.re,im:e.im});if(typeof e=="number")return!this.isNaN&&this.im!==0&&!Number.isFinite(e)&&!Number.isNaN(e)?this.clone({re:1/0,im:1/0}):this.im===0?this.clone(this.decimal*e):this.clone({re:this.decimal*e,im:this.im*e});if(this.isNegativeOne){let n=e.neg();return this.clone({re:n.bignumRe??n.re,im:n.im})}return e.isOne?this:e.isNegativeOne?this.neg():e.isZero?this.isPositiveInfinity||this.isNegativeInfinity||this.isComplexInfinity?this._makeExact(NaN):this.clone(0):!this.isNaN&&!e.isNaN&&(this.isComplexInfinity||e.isComplexInfinity||(this.isPositiveInfinity||this.isNegativeInfinity)&&e.im!==0||(e.isPositiveInfinity||e.isNegativeInfinity)&&this.im!==0)?this.clone({re:1/0,im:1/0}):this.im===0&&e.im===0?this.clone(this.decimal*e.re):this.clone({re:this.decimal*e.re-this.im*e.im,im:this.re*e.im+this.im*e.re})}div(e){if(this.isNaN)return this._makeExact(NaN);if(typeof e=="number")return e===1?this:e===-1?this.neg():e===0?this.clone(NaN):this.clone({re:this.decimal/e,im:this.im/e});if(e.isOne)return this;if(e.isNegativeOne)return this.neg();if(e.isZero)return this.clone(this.isZero?NaN:1/0);if(this.im===0&&e.im===0)return this.clone(this.decimal/e.re);let[n,i]=[this.decimal,this.im],[r,s]=[e.re,e.im],o=r*r+s*s;return this.clone({re:(n*r+i*s)/o,im:(i*r-n*s)/o})}pow(e){if(Array.isArray(e),this.isNaN)return this._makeExact(NaN);if(typeof e=="number"&&isNaN(e))return this.clone(NaN);if(e instanceof V){if(e.isNaN)return this.clone(NaN);if(e.isZero)return this.clone(1);if(e.isOne)return this;e.im?e={re:e.re,im:e.im}:e=e.re}if(typeof e=="object"&&("re"in e||"im"in e)){let[c,l]=[e?.re??0,e?.im??0];if(Number.isNaN(l)||Number.isNaN(c))return this.clone(NaN);if(l===0)e=c;else{if(this.im===1/0)return this.clone(NaN);if(this.isNegativeInfinity)return this.clone(0);if(this.isPositiveInfinity)return this.clone({im:1/0});if(this.isZero)return c>0?this.clone(0):this.clone(NaN);let f=this.decimal,m=this.im,d=.5*Math.log(f*f+m*m),p=Math.atan2(m,f),h=c*d-l*p,g=c*p+l*d,y=Math.exp(h);return this.clone({re:ys(y*Math.cos(g)),im:ys(y*Math.sin(g))})}}if(this.isPositiveInfinity){if(e===-1)return this.clone(0);if(e===1/0)return this.clone(1/0);if(e===-1/0)return this.clone(0)}else if(this.isNegativeInfinity&&e===1/0)return this.clone(NaN);if((e===1/0||e===-1/0)&&(this.isOne||this.isNegativeOne))return this.clone(NaN);if(e===1)return this;if(e===-1)return this.inv();if(e===0)return this.clone(1);if(this.isZero){if(e>0)return this;if(e<0)return this.clone({im:1/0})}if(e<0&&this.im===0)return this.clone(1/this.decimal**-e);if(this.im===0)return this.clone(this.decimal**e);let n=this.decimal,i=this.im,r=Math.sqrt(n*n+i*i),s=Math.atan2(i,n),o=r**e,a=s*e;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}root(e){if(this.isNaN)return this._makeExact(NaN);if(e===0)return this.clone(NaN);if(this.isNaN)return this;if(this.isZero)return this;if(this.isOne)return this;if(this.isNegativeOne)return this;if(e===1)return this;if(e===2)return this.sqrt();if(e===3)return this.clone(Math.cbrt(this.decimal));if(this.im===0)return this.decimal<0?e%2===0?this.clone(NaN):this.clone(-qn(-this.decimal,e)):this.clone(qn(this.decimal,e));let n=this.decimal,i=this.im,r=Math.hypot(n,i),s=Math.atan2(i,n),o=Math.pow(r,1/e),a=s/e;return this.clone({re:o*Math.cos(a),im:o*Math.sin(a)})}sqrt(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero||this.isOne)return this;if(this.im!==0){let e=this.decimal,n=this.im,i=Math.sqrt(e*e+n*n),r=Math.sqrt((e+i)/2),s=Math.sign(n)*Math.sqrt((i-e)/2);return this.clone({re:r,im:s})}return this.decimal>0?this.clone(Math.sqrt(this.decimal)):this.clone({im:Math.sqrt(-this.decimal)})}gcd(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return e;if(e.isZero)return this;if(this.im!==0||e.im!==0)return this._makeExact(NaN);if(!Number.isInteger(this.decimal))return this._makeExact(1);let n=e.re;if(!Number.isInteger(n))return this._makeExact(1);let i=this.decimal;for(;n!==0;){let r=n;n=i%n,i=r}return this.clone(Math.abs(i))}abs(){return this.isNaN?this._makeExact(NaN):this.im===0?this.decimal>0?this:this.clone(-this.decimal):this.clone(Math.sqrt(this.decimal**2+this.im**2))}ln(e){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(NaN);if(this.isNegativeInfinity)return this._makeExact(NaN);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im===0){if(this.isOne)return this._makeExact(0);if(this.decimal<0){let a=e===void 0?1:Math.log(e);return this.clone({re:Math.log(-this.decimal)/a,im:Math.PI/a})}return e===void 0?this.clone(Math.log(this.decimal)):this.clone(Math.log(this.decimal)/Math.log(e))}let n=this.decimal,i=this.im,r=Math.hypot(n,i),s=Math.atan2(i,n),o=e===void 0?1:Math.log(e);return this.clone({re:Math.log(r)/o,im:s/o})}exp(){if(this.isNaN)return this._makeExact(NaN);if(this.isZero)return this._makeExact(1);if(this.isNegativeInfinity)return this._makeExact(0);if(this.isPositiveInfinity)return this._makeExact(1/0);if(this.im!==0){let e=Math.exp(this.decimal);return this.clone({re:e*Math.cos(this.im),im:e*Math.sin(this.im)})}return this.clone(Math.exp(this.decimal))}floor(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.floor(this.decimal))}ceil(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.ceil(this.decimal))}round(){return this.isNaN||this.im!==0?this._makeExact(NaN):Number.isInteger(this.decimal)?this:this._makeExact(Math.round(this.decimal))}eq(e){return this.isNaN?!1:typeof e=="number"?this.im===0&&this.decimal===e:e.isNaN?!1:Number.isFinite(this.im)?this.decimal===e.re&&this.im===e.im:!Number.isFinite(e.im)}lt(e){if(this.im===0){if(typeof e=="number")return this.decimal<e;if(e.im===0)return e instanceof K?e.gt(this.decimal):this.decimal<e.re}}lte(e){if(this.im===0){if(typeof e=="number")return this.decimal<=e;if(e.im===0)return e instanceof K?e.gte(this.decimal):this.decimal<=e.re}}gt(e){if(this.im===0){if(typeof e=="number")return this.decimal>e;if(e.im===0)return e instanceof K?e.lt(this.decimal):this.decimal>e.re}}gte(e){if(this.im===0){if(typeof e=="number")return this.decimal>=e;if(e.im===0)return e instanceof K?e.lte(this.decimal):this.decimal>=e.re}}};function ys(t){return Math.abs(t)<=At?0:t}function Ts(t){return t?._kind==="number"}function wu(t){return t?._kind==="symbol"}function ce(t,e){return t?._kind==="function"&&(e===void 0||t.operator===e)}function ku(t){if(!ce(t,"Interval"))return[NaN,NaN];let e=t.op1,n=t.op2;return(ce(e,"Open")||ce(e,"Closed"))&&(e=e.op1),(ce(n,"Open")||ce(n,"Closed"))&&(n=n.op1),[e.re,n.re]}function xu(t){if(ce(t,"Interval")){let e=t.op1,n=t.op2,i=!1,r=!1;ce(e,"Open")?(i=!0,e=e.op1):ce(e,"Closed")&&(e=e.op1),ce(n,"Open")?(r=!0,n=n.op1):ce(n,"Closed")&&(n=n.op1);let s=e.N(),o=n.N();return!Ts(s)||!Ts(o)?void 0:{start:s.re,openStart:i,end:o.re,openEnd:r}}if(wu(t)){if(t.symbol==="EmptySet")return{start:0,openStart:!0,end:0,openEnd:!0};if(t.symbol==="RealNumbers")return{start:-1/0,openStart:!1,end:1/0,openEnd:!1};if(t.symbol==="NegativeNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!0};if(t.symbol==="NonPositiveNumbers")return{start:-1/0,openStart:!1,end:0,openEnd:!1};if(t.symbol==="PositiveNumbers")return{start:0,openStart:!0,end:1/0,openEnd:!1};if(t.symbol==="NonNegativeNumbers")return{start:0,openStart:!1,end:1/0,openEnd:!1}}}function Pu(t,e){return!((t.openStart?e<=t.start:e<t.start)||(t.openEnd?e>=t.end:e>t.end))}function Su(t,e){if(!t.openStart&&e.openStart){if(t.start<=e.start)return!1}else if(t.start<e.start)return!1;if(!t.openEnd&&e.openEnd){if(t.end>=e.end)return!1}else if(t.end>e.end)return!1;return!0}function Is(t){let e=t.length;if(e===1)return t[0][0];if(e===2)return t[0][0]*t[1][1]-t[0][1]*t[1][0];let n=[],i=0;for(let r=0;r<e;r++){let s=0;for(let o=1;o<e;o++){let a=0;for(let c=0;c<e;c++)c!==r&&(n[s][a]=t[o][c],a++);s++}i=i+Math.pow(-1,r)*t[0][r]*Is(n)}return i}function Ru(t,e){if(e===0)return{estimate:t,error:e};let n=Math.abs(e),i=Math.floor(Math.log10(n)),r=2,s=Math.pow(10,i-(r-1)),o=Math.round(e/s)*s,a=Math.max(0,-(i-(r-1)));return{estimate:Number(t.toFixed(a)),error:o}}function Bu(t,e,n,i=1e5,r,s=Math.random){r??=Le();let o;e===-1/0&&n===1/0?o=()=>{let T=s(),N=Math.tan(Math.PI*(T-.5));return t(N)*Math.PI*(1+N*N)}:e===-1/0?o=()=>{let T=s();return t(n+Math.log(T))/T}:n===1/0?o=()=>{let T=s();return t(e-Math.log(T))/T}:o=()=>t(e+s()*(n-e));let a=!1;if(et(r,()=>{for(let T=0;T<32&&!a;T++)Number.isFinite(o())&&(a=!0)}),!a)return{estimate:NaN,error:NaN};let c=0,l=0,f=0;et(r,()=>{for(let T=0;T<i;T++){if((T&63)===0&&r!==void 0&&Date.now()>=r){T===0&&A(r);break}let N;try{N=o()}catch(E){if(E instanceof be&&f>0)break;throw E}c+=N,l+=N*N,f++}});let m=c/f,d=(l-f*m*m)/(f-1),p=Math.sqrt(d/f),h=isFinite(e)&&isFinite(n)?n-e:1,g=m*h,y=p*h;return Ru(g,y)}function Au(t){let e=0,n=0;for(let i of t)e+=i,n++;return n===0?NaN:e/n}function Ou(t){let e=u.ZERO,n=0;for(let i of t)e=e.add(i),n++;return n===0?u.NAN:e.div(new u(n))}function sn(t){let e=[...t].sort((i,r)=>i-r),n=Math.floor(e.length/2);return e.length%2===0?(e[n-1]+e[n])/2:e[n]}function on(t){let e=[...t].sort((i,r)=>i.cmp(r));if(e.length===0)return u.NAN;let n=Math.floor(e.length/2);return e.length%2===0?e[n-1].add(e[n]).div(u.TWO):e[n]}function Du(t){let e=0,n=0,i=0;for(let r of t){e+=1;let s=r-n;n+=s/e,i+=s*(r-n)}return{n:e,m2:i}}function Cu(t){let e=0,n=u.ZERO,i=u.ZERO;for(let r of t){e+=1;let s=r.sub(n);n=n.add(s.div(new u(e))),i=i.add(s.mul(r.sub(n)))}return{n:e,m2:i}}function vs(t,e){let{n,m2:i}=Du(t);return n===0?NaN:i/(e?n:n-1)}function Es(t,e){let{n,m2:i}=Cu(t);return n===0?u.NAN:i.div(new u(e?n:n-1))}function Ms(t){return vs(t,!1)}function ws(t){return Es(t,!1)}function ks(t){return vs(t,!0)}function xs(t){return Es(t,!0)}function Fu(t){return Math.sqrt(Ms(t))}function _u(t){return ws(t).sqrt()}function Vu(t){return Math.sqrt(ks(t))}function ju(t){return xs(t).sqrt()}function Lu(t){let e=0,n=0,i=0,r=0,s=0;for(let f of t){let m=f;if(!Number.isFinite(m))return NaN;e+=m,n+=m*m,i+=m*m*m,r+=m*m*m*m,s++}if(s===0)return NaN;let o=s,a=e/o,c=(n-e*e/o)/o;return(r-4*a*i+6*a*a*n-4*a*a*a*e+o*a*a*a*a)/o/(c*c)}function qu(t){let e=u.ZERO,n=u.ZERO,i=u.ZERO,r=u.ZERO,s=0;for(let l of t){let f=l;if(!f.isFinite())return u.NAN;e=e.add(f),n=n.add(f.mul(f)),i=i.add(f.mul(f).mul(f)),r=r.add(f.mul(f).mul(f).mul(f)),s++}if(s===0)return u.NAN;let o=e.div(s),a=n.sub(e.mul(e).div(s)).div(s);return r.sub(o.mul(i).mul(4)).add(o.mul(o).mul(n).mul(6)).sub(o.mul(o).mul(o).mul(e).mul(4)).add(o.mul(o).mul(o).mul(o).mul(s)).div(s).div(a.mul(a))}function $u(t){let e=0,n=0,i=0,r=0;for(let l of t){let f=l;if(!Number.isFinite(f))return NaN;e+=f,n+=f*f,i+=f*f*f,r++}if(r===0)return NaN;let s=r,o=e/s,a=(n-e*e/s)/s;return(i-3*o*n+3*o*o*e-s*o*o*o)/s/Math.pow(a,3/2)}function Zu(t){let e=u.ZERO,n=u.ZERO,i=u.ZERO,r=0;for(let c of t){let l=c;if(!l.isFinite())return u.NAN;e=e.add(l),n=n.add(l.mul(l)),i=i.add(l.mul(l).mul(l)),r++}if(r===0)return u.NAN;let s=e.div(r),o=n.sub(e.mul(e).div(r)).div(r);return i.sub(s.mul(n).mul(3)).add(s.mul(s).mul(e).mul(3)).sub(s.mul(s).mul(s).mul(r)).div(r).div(o.mul(o.sqrt()))}function Uu(t){let e={};for(let r of t)e[r]=(e[r]??0)+1;let n=0,i=NaN;for(let r in e){let s=e[r];s>n&&(n=s,i=+r)}return i}function Gu(t){let e={};for(let r of t)e[r.toString()]=(e[r.toString()]??0)+1;let n=0,i=u.NAN;for(let r in e){let s=e[r];s>n&&(n=s,i=new u(r))}return i}function Ps(t){let e=[...t].sort((c,l)=>c-l),n=e.length;if(n===1)return[e[0],e[0],e[0]];let i=Math.floor(n/2),r=i+n%2,s=sn(e.slice(0,i)),o=sn(e),a=sn(e.slice(r));return[s,o,a]}function Ss(t){let e=[...t].sort((c,l)=>c.cmp(l)),n=e.length;if(n===1)return[e[0],e[0],e[0]];let i=Math.floor(n/2),r=i+n%2,s=on(e.slice(0,i)),o=on(e),a=on(e.slice(r));return[s,o,a]}function Rs(t,e,n=!1){let i=t.length,r=0,s=0;for(let g=0;g<i;g++)r+=t[g],s+=e[g];r/=i,s/=i;let o=0,a=0;if(n){let g=0,y=0;for(let I=0;I<i;I++)g=Math.max(g,Math.abs(t[I]-r)),y=Math.max(y,Math.abs(e[I]-s));g>0&&Number.isFinite(g)&&(o=Math.floor(Math.log2(g))),y>0&&Number.isFinite(y)&&(a=Math.floor(Math.log2(y)))}let c=2**o,l=2**a,f=0,m=0,d=0,p=0,h=0;for(let g=0;g<i;g++){let y=(t[g]-r)/c,I=(e[g]-s)/l;f+=y,m+=I,d+=y*I,p+=y*y,h+=I*I}return{dx:f,dy:m,dxy:d,dx2:p,dy2:h,ex:o,ey:a}}function Bs(t,e){let n=t.length,i=u.ZERO,r=u.ZERO;for(let m=0;m<n;m++)i=i.add(t[m]),r=r.add(e[m]);let s=new u(n);i=i.div(s),r=r.div(s);let o=u.ZERO,a=u.ZERO,c=u.ZERO,l=u.ZERO,f=u.ZERO;for(let m=0;m<n;m++){let d=t[m].sub(i),p=e[m].sub(r);o=o.add(d),a=a.add(p),c=c.add(d.mul(p)),l=l.add(d.mul(d)),f=f.add(p.mul(p))}return{dx:o,dy:a,dxy:c,dx2:l,dy2:f}}function As(t,e,n){let i=[...t],r=[...e],s=i.length;if(s!==r.length||s<2)return NaN;let{dx:o,dy:a,dxy:c,ex:l,ey:f}=Rs(i,r,!0),m=(c-o*a/s)/(n?s:s-1);return Yu(m,l+f)}function Yu(t,e){let n=t;for(;e>512;)n*=2**512,e-=512;for(;e<-512;)n*=2**-512,e+=512;return n*2**e}function Os(t,e,n){let i=[...t],r=[...e],s=i.length;if(s!==r.length||s<2)return u.NAN;let{dx:o,dy:a,dxy:c}=Bs(i,r),l=new u(s);return c.sub(o.mul(a).div(l)).div(new u(n?s:s-1))}function Wu(t,e){return As(t,e,!1)}function Ju(t,e){return Os(t,e,!1)}function Hu(t,e){return As(t,e,!0)}function Xu(t,e){return Os(t,e,!0)}function Ku(t,e){let n=[...t],i=[...e],r=n.length;if(r!==i.length||r<2)return NaN;let{dx:s,dy:o,dxy:a,dx2:c,dy2:l}=Rs(n,i,!0),f=a-s*o/r,m=c-s*s/r,d=l-o*o/r;return!(m>0)||!(d>0)?NaN:Math.min(1,Math.max(-1,f/Math.sqrt(m*d)))}function Qu(t,e){let n=[...t],i=[...e],r=n.length;if(r!==i.length||r<2)return u.NAN;let{dx:s,dy:o,dxy:a,dx2:c,dy2:l}=Bs(n,i),f=new u(r),m=a.sub(s.mul(o).div(f)),d=c.sub(s.mul(s).div(f)),p=l.sub(o.mul(o).div(f));if(!d.gt(u.ZERO)||!p.gt(u.ZERO))return u.NAN;let h=m.div(d.mul(p).sqrt());return h.gt(u.ONE)?u.ONE:h.lt(u.ONE.neg())?u.ONE.neg():h}function zu(t){let[e,,n]=Ps(t);return n-e}function ec(t){let[e,,n]=Ss(t);return n.sub(e)}var an={__proto__:null,Q:1e30,R:1e27,Y:1e24,Z:1e21,E:1e18,P:1e15,T:1e12,G:1e9,M:1e6,k:1e3,h:100,da:10,d:.1,c:.01,m:.001,\u00B5:1e-6,\u03BC:1e-6,n:1e-9,p:1e-12,f:1e-15,a:1e-18,z:1e-21,y:1e-24,r:1e-27,q:1e-30},Ds=new Set(["m","g","s","A","K","mol","cd","Hz","N","Pa","J","W","C","V","F","ohm","S","Wb","T","H","lm","lx","Bq","Gy","Sv","kat","eV","L","bar"]),un={__proto__:null,m:{dimension:[1,0,0,0,0,0,0,0],scale:1},kg:{dimension:[0,1,0,0,0,0,0,0],scale:1},g:{dimension:[0,1,0,0,0,0,0,0],scale:.001},s:{dimension:[0,0,1,0,0,0,0,0],scale:1},A:{dimension:[0,0,0,1,0,0,0,0],scale:1},K:{dimension:[0,0,0,0,1,0,0,0],scale:1},mol:{dimension:[0,0,0,0,0,1,0,0],scale:1},cd:{dimension:[0,0,0,0,0,0,1,0],scale:1},Hz:{dimension:[0,0,-1,0,0,0,0,0],scale:1},N:{dimension:[1,1,-2,0,0,0,0,0],scale:1},Pa:{dimension:[-1,1,-2,0,0,0,0,0],scale:1},J:{dimension:[2,1,-2,0,0,0,0,0],scale:1},W:{dimension:[2,1,-3,0,0,0,0,0],scale:1},C:{dimension:[0,0,1,1,0,0,0,0],scale:1},V:{dimension:[2,1,-3,-1,0,0,0,0],scale:1},F:{dimension:[-2,-1,4,2,0,0,0,0],scale:1},ohm:{dimension:[2,1,-3,-2,0,0,0,0],scale:1},S:{dimension:[-2,-1,3,2,0,0,0,0],scale:1},Wb:{dimension:[2,1,-2,-1,0,0,0,0],scale:1},T:{dimension:[0,1,-2,-1,0,0,0,0],scale:1},H:{dimension:[2,1,-2,-2,0,0,0,0],scale:1},lm:{dimension:[0,0,0,0,0,0,1,0],scale:1},lx:{dimension:[-2,0,0,0,0,0,1,0],scale:1},Bq:{dimension:[0,0,-1,0,0,0,0,0],scale:1},Gy:{dimension:[2,0,-2,0,0,0,0,0],scale:1},Sv:{dimension:[2,0,-2,0,0,0,0,0],scale:1},kat:{dimension:[0,0,-1,0,0,1,0,0],scale:1},degC:{dimension:[0,0,0,0,1,0,0,0],scale:1,offset:273.15},degF:{dimension:[0,0,0,0,1,0,0,0],scale:5/9,offset:459.67},min:{dimension:[0,0,1,0,0,0,0,0],scale:60},h:{dimension:[0,0,1,0,0,0,0,0],scale:3600},d:{dimension:[0,0,1,0,0,0,0,0],scale:86400},wk:{dimension:[0,0,1,0,0,0,0,0],scale:604800},ha:{dimension:[2,0,0,0,0,0,0,0],scale:1e4},L:{dimension:[3,0,0,0,0,0,0,0],scale:.001},t:{dimension:[0,1,0,0,0,0,0,0],scale:1e3},eV:{dimension:[2,1,-2,0,0,0,0,0],scale:1602176634e-28},Da:{dimension:[0,1,0,0,0,0,0,0],scale:16605390666e-37},au:{dimension:[1,0,0,0,0,0,0,0],scale:149597870700},deg:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/180},rad:{dimension:[0,0,0,0,0,0,0,0],scale:1},grad:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/200},turn:{dimension:[0,0,0,0,0,0,0,0],scale:2*Math.PI},arcmin:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/10800},arcsec:{dimension:[0,0,0,0,0,0,0,0],scale:Math.PI/648e3},percent:{dimension:[0,0,0,0,0,0,0,0],scale:.01},ppm:{dimension:[0,0,0,0,0,0,0,0],scale:1e-6},dB:{dimension:[0,0,0,0,0,0,0,0],scale:1},Np:{dimension:[0,0,0,0,0,0,0,0],scale:1},in:{dimension:[1,0,0,0,0,0,0,0],scale:.0254},ft:{dimension:[1,0,0,0,0,0,0,0],scale:.3048},yd:{dimension:[1,0,0,0,0,0,0,0],scale:.9144},mi:{dimension:[1,0,0,0,0,0,0,0],scale:1609.344},lb:{dimension:[0,1,0,0,0,0,0,0],scale:.45359237},oz:{dimension:[0,1,0,0,0,0,0,0],scale:.028349523125},gal:{dimension:[3,0,0,0,0,0,0,0],scale:.003785411784},qt:{dimension:[3,0,0,0,0,0,0,0],scale:.000946352946},pt:{dimension:[3,0,0,0,0,0,0,0],scale:.000473176473},cup:{dimension:[3,0,0,0,0,0,0,0],scale:.0002365882365},atm:{dimension:[-1,1,-2,0,0,0,0,0],scale:101325},bar:{dimension:[-1,1,-2,0,0,0,0,0],scale:1e5},cal:{dimension:[2,1,-2,0,0,0,0,0],scale:4.184},kWh:{dimension:[2,1,-2,0,0,0,0,0],scale:36e5},\u00C5:{dimension:[1,0,0,0,0,0,0,0],scale:1e-10},USD:{dimension:[0,0,0,0,0,0,0,1],scale:1},cent:{dimension:[0,0,0,0,0,0,0,1],scale:.01}};function ln(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]}function tc(t){return t[0]===0&&t[1]===0&&t[2]===0&&t[3]===0&&t[4]===0&&t[5]===0&&t[6]===0&&t[7]===0}function nc(t){if(t.length>2){let e=t.slice(0,2),n=t.slice(2);if(an[e]!==void 0&&Ds.has(n)){let i=un[n];if(i)return{prefixScale:an[e],baseEntry:i}}}if(t.length>1){let e=t.slice(0,1),n=t.slice(1);if(an[e]!==void 0&&Ds.has(n)){let i=un[n];if(i)return{prefixScale:an[e],baseEntry:i}}}return null}function cn(t){let e=un[t];if(e)return e;let n=nc(t);return n?{dimension:n.baseEntry.dimension,scale:n.prefixScale*n.baseEntry.scale}:null}function Nt(t){let e=cn(t);return e?e.dimension:null}function bt(t){let e=cn(t);return e?e.scale:null}function ic(t,e){let n=Nt(t),i=Nt(e);return!n||!i?!1:ln(n,i)}var rc=new Map(["N","J","W","Pa","Hz","C","V","F","ohm","S","Wb","T","H","lm","lx","Gy","kat"].map(t=>[un[t].dimension.join(","),t]));function sc(t){return rc.get(t.join(","))??null}function Cs(t,e,n){let i=cn(e),r=cn(n);if(!i||!r||!ln(i.dimension,r.dimension))return null;let s=i.offset??0,o=r.offset??0;return(t+s)*i.scale/r.scale-o}function Be(t){if(typeof t=="string")return Nt(t);if(!Array.isArray(t)||t.length<2)return null;let e=t[0];if(e==="Multiply"){let n=[0,0,0,0,0,0,0,0];for(let i=1;i<t.length;i++){let r=Be(t[i]);if(!r)return null;for(let s=0;s<8;s++)n[s]+=r[s]}return n}if(e==="Divide"){if(t.length!==3)return null;let n=Be(t[1]),i=Be(t[2]);return!n||!i?null:n.map((r,s)=>r-i[s])}if(e==="Power"){if(t.length!==3)return null;let n=Be(t[1]),i=t[2];return!n||typeof i!="number"?null:n.map(r=>r*i)}return null}function Ae(t){if(typeof t=="string")return bt(t);if(!Array.isArray(t)||t.length<2)return null;let e=t[0];if(e==="Multiply"){let n=1;for(let i=1;i<t.length;i++){let r=Ae(t[i]);if(r===null)return null;n*=r}return n}if(e==="Divide"){if(t.length!==3)return null;let n=Ae(t[1]),i=Ae(t[2]);return n===null||i===null||i===0?null:n/i}if(e==="Power"){if(t.length!==3)return null;let n=Ae(t[1]),i=t[2];return n===null||typeof i!="number"?null:Math.pow(n,i)}return null}function oc(t){let e=new Map;function n(i,r){if(typeof i=="string")return e.set(i,(e.get(i)??0)+r),!0;if(!Array.isArray(i)||i.length<2)return!1;let s=i[0];if(s==="Multiply"){for(let o=1;o<i.length;o++)if(!n(i[o],r))return!1;return!0}if(s==="Divide")return i.length!==3?!1:n(i[1],r)&&n(i[2],-r);if(s==="Power"){if(i.length!==3)return!1;let o=i[2];return typeof o!="number"?!1:n(i[1],r*o)}return!1}return n(t,1)?e:null}function ac(t){let e=new Map;for(let[r,s]of t)s!==0&&e.set(r,s);let n=new Map;for(let r of e.keys()){let s=Nt(r);if(!s)return null;let o=s.join(","),a=n.get(o);a?a.push(r):n.set(o,[r])}let i=1;for(let r of n.values()){if(r.length<2)continue;let s=!1,o=!1;for(let l of r){let f=e.get(l);f>0?s=!0:f<0&&(o=!0)}if(!s||!o)continue;let a=r[0],c=bt(a);if(c===null)return null;for(let l of r){let f=bt(l);if(f===null)return null;f>c&&(c=f,a=l)}for(let l of r){if(l===a)continue;let f=e.get(l),m=bt(l);i*=(m/c)**f,e.set(a,e.get(a)+f),e.delete(l)}e.get(a)===0&&e.delete(a)}return{factors:e,magnitudeScale:i}}function uc(t){let e=[],n=[],i=[];for(let[o,a]of t)a!==0&&(a>0?e.push(a===1?o:["Power",o,a]):(n.push(-a===1?o:["Power",o,-a]),i.push(["Power",o,a])));if(e.length===0&&n.length===0)return null;if(e.length===0)return i.length===1?i[0]:["Multiply",...i];let r=e.length===1?e[0]:["Multiply",...e];if(n.length===0)return r;let s=n.length===1?n[0]:["Multiply",...n];return["Divide",r,s]}function cc(t){let e=t.indexOf("^");if(e===-1)return t;let n=t.slice(0,e),i=t.slice(e+1),r=parseInt(i,10);return isNaN(r)?t:["Power",n,r]}function gt(t){if(t=t.trim(),t.length===0)return null;if(t[0]==="("&&t[t.length-1]===")"){let r=0,s=!0;for(let o=0;o<t.length-1;o++)if(t[o]==="("?r++:t[o]===")"&&r--,r===0&&o<t.length-1){s=!1;break}if(s)return gt(t.slice(1,-1))}let e=-1,n=[],i=0;for(let r=0;r<t.length;r++)t[r]==="("?i++:t[r]===")"?i--:i===0&&(t[r]==="/"&&e===-1?e=r:t[r]==="*"&&n.push(r));if(e!==-1){let r=t.slice(0,e).trim(),s=t.slice(e+1).trim(),o=gt(r),a=gt(s);return!o||!a?null:["Divide",o,a]}if(n.length>0){let r=[],s=0;for(let a of n)r.push(t.slice(s,a).trim()),s=a+1;r.push(t.slice(s).trim());let o=r.filter(a=>a.length>0).map(a=>gt(a));return o.some(a=>a===null)?null:o.length===1?o[0]:["Multiply",...o]}return t[0]==="("?null:cc(t)}function lc(t){return t=t.trim(),t.length===0?null:/[/*^()]/.test(t)?gt(t):t}function fc(t,e,n){if(typeof e=="string"&&typeof n=="string")return Cs(t,e,n);let i=Be(e),r=Be(n);if(!i||!r||!ln(i,r))return null;let s=Ae(e),o=Ae(n);return s===null||o===null||o===0?null:t*s/o}var dn=7,pn=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23];function yt(t){if(t<0)return NaN;if(t===1||t===2)return 0;let e=t-1,n=pn[0];for(let r=1;r<dn+2;r++)n+=pn[r]/(e+r);let i=e+dn+.5;return .5*Math.log(2*Math.PI)+(e+.5)*Math.log(i)-i+Math.log(n)}var mc=171.6243769563027;function Fs(t){t-=1;let e=pn[0];for(let i=1;i<dn+2;i++)e+=pn[i]/(t+i);let n=t+dn+.5;return Math.sqrt(2*Math.PI)*Math.pow(n,t+.5)*Math.exp(-n)*e}function hn(t,e){if(e<=0)return 1;if(e===1)return t;let n=e>>>1;return hn(t,n)*hn(t+n,e-n)}function Oe(t){if(t<=0&&Number.isInteger(t))return NaN;if(t<.5)return Math.PI/(Math.sin(Math.PI*t)*Oe(1-t));if(t>mc)return 1/0;if(Number.isInteger(t))return hn(1,t-1);if(t>=2){let e=Math.floor(t)-1,n=t-e;return Fs(n)*hn(n,e)}return Fs(t)}function dc(t){let n=Math.log(1-t*t),i=2/(Math.PI*.147)+n/2;return Math.sign(t)*Math.sqrt(Math.sqrt(i*i-n/.147)-i)}function Us(t){if(Number.isNaN(t)||t<-1||t>1)return NaN;if(t===0)return 0;if(t===1)return 1/0;if(t===-1)return-1/0;let e=t<0?-1:1,n=Math.abs(t),i=dc(n),r=Math.sqrt(Math.PI)/2,s=1-n,o=n>.9;for(let a=0;a<5;a++){let c=o?s-Nn(i):yn(i)-n;i-=c*r*Math.exp(i*i)}return e*i}function Nn(t){if(Number.isNaN(t))return NaN;if(!Number.isFinite(t))return t>0?0:2;if(t<0)return 2-Nn(-t);if(t<2)return 1-yn(t);let e=1e-300,n=t===0?e:t,i=n,r=0;for(let s=1;s<=500;s++){let o=s/2;r=t+o*r,r===0&&(r=e),r=1/r,i=t+o/i,i===0&&(i=e);let a=i*r;if(n*=a,Math.abs(a-1)<1e-17)break}return Math.exp(-t*t)/(Math.sqrt(Math.PI)*n)}function yn(t){if(Number.isNaN(t))return NaN;if(t===0)return 0;if(!Number.isFinite(t))return t>0?1:-1;let e=t<0?-1:1,n=Math.abs(t);if(n>=6)return e;let i=n*n,r=n,s=n;for(let o=1;o<200&&(r*=2*i/(2*o+1),s+=r,!(r<s*1e-18));o++);return e*(2/Math.sqrt(Math.PI))*Math.exp(-i)*s}function Fe(t,e){let n=u.precision;u.precision=n+t;try{return e().toPrecision(n)}finally{u.precision=n}}var _e=24,Ii=2e4,pc=500;function Gs(t,e){return e.isFinite()?Fe(_e,()=>wi(t,e)):u.NAN}function wi(t,e){if(!e.isFinite())return u.NAN;if(e.lt(u.HALF)){let N=u.PI,E=N.mul(e).sin().abs();return E.isZero()?u.NAN:N.ln().sub(E.ln()).sub(wi(t,u.ONE.sub(e)))}if(e.isInteger()&&e.isPositive()){let N=e.toNumber();if(N<=1)return u.ZERO;if(N<=Ii){let E=1n,v=0;for(let D=2;D<N;D++)(++v&4095)===0&&A(t._deadlineFrame),E*=BigInt(D);return new u(E.toString()).ln()}}let n=e.sub(u.HALF);if(n.isInteger()&&!n.isNegative()){let N=n.toNumber();if(N===0)return u.PI.ln().div(u.TWO);if(N<=Ii){let E=0,v=1n;for(let P=2;P<=2*N;P++)(++E&4095)===0&&A(t._deadlineFrame),v*=BigInt(P);let D=1n;for(let P=2;P<=N;P++)(++E&4095)===0&&A(t._deadlineFrame),D*=BigInt(P);let H=4n**BigInt(N);return new u(v.toString()).ln().add(u.PI.ln().div(u.TWO)).sub(new u(H.toString()).ln()).sub(new u(D.toString()).ln())}}let i=u.precision,r=10,s=Math.ceil(i),o=e.toNumber(),a=Math.max(0,Math.ceil(s-o)),c=u.ONE,l=e;for(let N=0;N<a;N++)c=c._mulToPrecision(l,i),l=l.add(u.ONE);let f=a>0?c.ln():u.ZERO,m=Math.max(20,Math.ceil(.6*i)+20),d=Tt(t,m),p=l.sub(u.HALF).mul(l.ln()).sub(l).add(u.PI.mul(u.TWO).ln().div(u.TWO)),h=u.ONE.div(l),g=h._mulToPrecision(h,i),y=h,I=new u(10).pow(-(i+r)),T=Math.min(m,d.length);for(let N=0;N<T;N++){let E=2*(N+1),[v,D]=d[N],H=BigInt(E)*BigInt(E-1),ee=new u(v.toString()).div(new u((D*H).toString()))._mulToPrecision(y,i);if(N>0&&ee.abs().lt(I))break;p=p.add(ee),y=y._mulToPrecision(g,i)}return p.sub(f)}function Ys(t,e){if(e.isInteger()&&e.isPositive()){let n=e.toNumber();if(n<=Ii){let i=1n,r=0;for(let s=2;s<n;s++)(++r&4095)===0&&A(t._deadlineFrame),i*=BigInt(s);return new u(i.toString())}}return Fe(_e,()=>We(t,e))}function We(t,e){if(e.lt(u.HALF)){let n=u.PI,i=n.mul(e).sin();return i.isZero()?u.NAN:n.div(i.mul(We(t,u.ONE.sub(e))))}return wi(t,e).exp()}function _s(t,e){for(;e!==0n;){let n=e;e=t%e,t=n}return t}function mn(t){return t<0n?-t:t}function hc(t,e){let n=[[1n,1n],[-1n,2n]];for(let r=2;r<=2*t;r++){if((r&255)===0&&A(e),r%2===1){n.push([0n,1n]);continue}let s=BigInt(r+1),o=0n,a=1n,c=1n;for(let d=0;d<r;d++){d>0&&(c=c*(s-BigInt(d)+1n)/BigInt(d));let[p,h]=n[d];if(p!==0n&&(o=o*h+c*p*a,a=a*h,d%8===7)){let g=_s(mn(o),a);o/=g,a/=g}}let l=-o,f=s*a,m=_s(mn(l),mn(f));l/=m,f/=m,f<0n&&(l=-l,f=-f),n.push([l,f])}let i=[];for(let r=1;r<=t;r++)i.push(n[2*r]);return i}var Vs=new WeakMap;function Tt(t,e){let n=Vs.get(t);if(n&&n.length>=e)return n;let i=e+Math.min(64,Math.ceil(e/2)),r=hc(i,t._deadline);return Vs.set(t,r),r}function ki(t,e){return e.isFinite()?Fe(_e,()=>Ws(t,e)):u.NAN}function Ws(t,e){if(e.isNegative()){if(e.isInteger())return u.NAN;let p=u.PI,h=p.mul(e),g=h.cos().div(h.sin());return Ws(t,u.ONE.sub(e)).sub(p.mul(g))}if(e.isZero())return u.NAN;let n=u.precision,i=10,r=Math.max(7,Math.ceil(n)),s=new u(0),o=e;for(;o.lt(r);)s=s.sub(u.ONE.div(o)),o=o.add(u.ONE);let a=Math.max(20,Math.ceil(.6*n)+20),c=Tt(t,a);s=s.add(o.ln()).sub(u.ONE.div(o.mul(2)));let l=o._mulToPrecision(o,n),f=l,m=new u(10).pow(-(n+i)),d=Math.min(a,c.length);for(let p=0;p<d;p++){let[h,g]=c[p],y=BigInt(2*(p+1)),I=new u(h.toString()).div(new u((g*y).toString()).mul(l));if(p>0&&I.abs().lt(m))break;s=s.sub(I),l=l._mulToPrecision(f,n)}return s}function xi(t,e){return e.isFinite()?Fe(_e,()=>Js(t,e)):u.NAN}function Js(t,e){if(e.isNegative()){if(e.isInteger())return u.NAN;let p=u.PI,h=p.mul(e).sin();return p.mul(p).div(h.mul(h)).sub(Js(t,u.ONE.sub(e)))}if(e.isZero())return u.NAN;let n=u.precision,i=10,r=Math.max(7,Math.ceil(n)),s=new u(0),o=e;for(;o.lt(r);)s=s.add(u.ONE.div(o.mul(o))),o=o.add(u.ONE);let a=Math.max(20,Math.ceil(.6*n)+20),c=Tt(t,a);s=s.add(u.ONE.div(o)),s=s.add(u.ONE.div(o.mul(o).mul(2)));let l=o.mul(o)._mulToPrecision(o,n),f=o._mulToPrecision(o,n),m=new u(10).pow(-(n+i)),d=Math.min(a,c.length);for(let p=0;p<d;p++){let[h,g]=c[p],y=new u(h.toString()).div(new u(g.toString()).mul(l));if(p>0&&y.abs().lt(m))break;s=s.add(y),l=l._mulToPrecision(f,n)}return s}function Hs(t,e,n){let i=e.toNumber();return!Number.isInteger(i)||i<0?u.NAN:i===0?ki(t,n):i===1?xi(t,n):!n.isFinite()||n.isZero()?u.NAN:Fe(_e,()=>gc(t,i,n))}function gc(t,e,n){let i=N=>{let E=u.ONE;for(let v=2;v<=N;v++)E=E.mul(v);return E},r=u.precision,s=10,o=Math.max(7,Math.ceil(r)),a=n,c=new u(0);if(a.isNegative()&&a.isInteger())return u.NAN;let l=e%2===0?-1:1,f=i(e);for(;a.lt(o);)c=c.add(new u(l).mul(f).div(a.pow(e+1))),a=a.add(u.ONE);let m=Math.max(20,Math.ceil(.6*r)+20),d=Tt(t,m),p=e%2===0?-1:1;c=c.add(new u(p).mul(i(e-1)).div(a.pow(e))),c=c.add(new u(p).mul(f).div(a.pow(e+1).mul(2)));let h=1n;for(let N=2;N<=e-1;N++)h*=BigInt(N);let g=a.pow(e+2).toPrecision(r),y=a._mulToPrecision(a,r),I=new u(10).pow(-(r+s)),T=Math.min(m,d.length);for(let N=0;N<T;N++){let E=2*(N+1),[v,D]=d[N],H=h;for(let te=0;te<E;te++)H*=BigInt(e+te);let P=1n;for(let te=2;te<=E;te++)P*=BigInt(te);let ee=new u((BigInt(p)*v*H).toString()).div(new u((D*P).toString()).mul(g));if(N>0&&ee.abs().lt(I))break;c=c.add(ee),g=g._mulToPrecision(y,r)}return c}function Xs(t,e,n){return Fe(_e,()=>We(t,e).mul(We(t,n)).div(We(t,e.add(n))))}function Ks(t,e){return e.isFinite()?e.eq(1)?new u(1/0):Fe(_e,()=>Qs(t,e)):u.NAN}function Qs(t,e){let n=u.PI;if(e.isZero())return u.HALF.neg();if(e.isInteger()&&e.isPositive()){let d=e.toNumber();if(d%2===0&&d>=2&&d<=pc){let p=d/2,h=Tt(t,p),[g,y]=h[p-1],I=new u(mn(g).toString()).div(new u(y.toString())),T=n.mul(2),N=u.ONE,E=0;for(let v=2;v<=d;v++)(++E&4095)===0&&A(t._deadlineFrame),N=N.mul(v);return I.mul(T.pow(d)).div(N.mul(2))}}if(e.isNegative()&&e.isInteger()&&e.mod(u.TWO).isZero())return u.ZERO;if(e.isNegative())return new u(2).pow(e).mul(n.pow(e.sub(1))).mul(n.mul(e).div(2).sin()).mul(We(t,u.ONE.sub(e))).mul(Qs(t,u.ONE.sub(e)));let i=u.precision;if(e.gt((i+10)*3.33))return u.ONE;let r=Math.max(22,Math.ceil(1.32*i)+3),o=new u(3).add(new u(8).sqrt()).pow(r),a=o.add(u.ONE.div(o)).div(2),c=u.NEGATIVE_ONE,l=a.neg(),f=u.ZERO;for(let d=0;d<r;d++)(d&255)===0&&A(t._deadlineFrame),l=c.sub(l),f=f.add(l.div(new u(d+1).pow(e))),c=c.mul(new u(d+r).mul(d-r)).div(new u(d).add(u.HALF).mul(d+1));return f.div(a).div(u.ONE.sub(new u(2).pow(u.ONE.sub(e))))}function js(t,e,n){for(let i=0;i<100;i++){let r=t.exp(),o=t.mul(r).sub(e),a=r.mul(t.add(1)),c=r.mul(t.add(2)),l=o.div(a.sub(o.mul(c).div(a.mul(2))));if(t=t.sub(l),l.abs().lt(n.mul(t.abs().add(1))))break}return t.toPrecision(u.precision)}function zs(t,e,n=0){if(!e.isFinite())return e;let r=u.ONE.div(u.ONE.exp()).neg(),s=new u(10).pow(-u.precision),o=new u(10).pow(-15);if(n===0){if(e.isZero())return new u(0);if(e.sub(r).abs().lt(o))return u.NEGATIVE_ONE;if(e.lt(r))return u.NAN;let a,c=e.toNumber();if(c<0){let l=Math.sqrt(2*(Math.E*c+1));a=new u(-1+l-l*l/3+11/72*l*l*l)}else if(c<=1)a=new u(c*(1-c*(1-1.5*c)));else if(c<100){let l=Math.log(c);a=new u(l-Math.log(l))}else{let l=e.ln(),f=l.ln();a=l.sub(f).add(f.div(l))}return js(a,e,s)}if(n===-1){if(e.sub(r).abs().lt(o))return u.NEGATIVE_ONE;if(e.lt(r)||e.gte(0))return u.NAN;let a,c=e.toNumber();if(c<-.27){let l=Math.sqrt(2*(Math.E*c+1));a=new u(-1-l-l*l/3-11/72*l*l*l)}else{let l=Math.log(-c);a=new u(l-Math.log(-l))}return js(a,e,s)}return u.NAN}var gn=.5772156649015329,ve=[1/6,-1/30,1/42,-1/30,5/66,-691/2730,7/6,-3617/510,43867/798,-174611/330];function Tn(t){if(!isFinite(t))return NaN;if(t<0)return Number.isInteger(t)?NaN:Tn(1-t)-Math.PI/Math.tan(Math.PI*t);if(t===0)return NaN;let e=0,n=t;for(;n<7;)e-=1/n,n+=1;e+=Math.log(n)-1/(2*n);let i=n*n;for(let r=0;r<ve.length;r++)e-=ve[r]/(2*(r+1)*i),i*=n*n;return e}function In(t){if(!isFinite(t))return NaN;if(t<0){if(Number.isInteger(t))return NaN;let r=Math.sin(Math.PI*t);return Math.PI*Math.PI/(r*r)-In(1-t)}if(t===0)return NaN;let e=0,n=t;for(;n<7;)e+=1/(n*n),n+=1;e+=1/n+1/(2*n*n);let i=n*n*n;for(let r=0;r<ve.length;r++)e+=ve[r]/i,i*=n*n;return e}function eo(t,e){if(!Number.isInteger(t)||t<0)return NaN;if(t===0)return Tn(e);if(t===1)return In(e);if(!isFinite(e)||e===0)return NaN;if(e<0&&Number.isInteger(e))return NaN;let n=0,i=e,r=vi(t),s=t%2===0?-1:1,o=t+10;for(;i<o;)n+=s*r/Math.pow(i,t+1),i+=1;let a=t%2===0?-1:1;n+=a*vi(t-1)/Math.pow(i,t),n+=a*r/(2*Math.pow(i,t+1));let c=r*(t+1)/(2*Math.pow(i,t+2)),l=1/0;for(let f=1;f<=ve.length;f++){let m=ve[f-1]*c;if(Math.abs(m)>=l)break;n+=a*m,l=Math.abs(m);let d=2*f;c*=(d+t)*(d+t+1)/((d+1)*(d+2)*i*i)}return n}function vi(t){if(t<=1)return 1;let e=1;for(let n=2;n<=t;n++)e*=n;return e}function to(t,e){return t>100||e>100||t+e>100?Math.exp(yt(t)+yt(e)-yt(t+e)):Oe(t)*Oe(e)/Oe(t+e)}function vn(t){if(!isFinite(t))return NaN;if(t===1)return 1/0;if(t===0)return-.5;if(t===2)return Math.PI*Math.PI/6;if(t===4)return Math.PI**4/90;if(t===6)return Math.PI**6/945;if(t===8)return Math.PI**8/9450;if(t<0&&Number.isInteger(t)){if(t%2===0)return 0;let s=1-t;if(s/2<=ve.length)return-ve[s/2-1]/s}if(t<0)return Math.pow(2,t)*Math.pow(Math.PI,t-1)*Math.sin(Math.PI*t/2)*Oe(1-t)*vn(1-t);if(t>=12){let s=1;for(let o=2;o<=128;o++){let a=Math.pow(o,-t);if(s+=a,a<s*1e-18)break}return s}let[e,n]=bc(),i=0,r=0;for(let s=0;s<no;s++){let a=(s%2===0?e[s]:-e[s])*Math.pow(s+1,-t)-r,c=i+a;r=c-i-a,i=c}return i/n/-Math.expm1((1-t)*Math.LN2)}var no=28,fn=null;function bc(){if(fn)return fn;let t=no,e=1n<<64n,n=e,i=e,r=[i];for(let c=0;c<t;c++)n=n*BigInt(4*(t+c)*(t-c))/BigInt((2*c+1)*(2*c+2)),i+=n,r.push(i);let s=r[t],o=Math.pow(2,64),a=[];for(let c=0;c<t;c++)a.push(Number(s-r[c])/o);return fn=[a,Number(s)/o],fn}function Ls(t,e){for(let n=0;n<30;n++){let i=Math.exp(t),s=t*i-e,o=i*(t+1),a=i*(t+2),c=s/(o-s*a/(2*o));if(t-=c,Math.abs(c)<1e-15*(1+Math.abs(t)))break}return t}function io(t,e=0){if(!isFinite(t))return t;let n=1/Math.E;if(e===0){if(t===0)return 0;if(t<-n)return NaN;if(Math.abs(t+n)<1e-15)return-1;let i;if(t<0){let r=Math.sqrt(2*(Math.E*t+1));i=-1+r-r*r/3+11/72*r*r*r}else if(t<=1)i=t*(1-t*(1-1.5*t));else if(t<100){let r=Math.log(t);i=r-Math.log(r)}else{let r=Math.log(t),s=Math.log(r);i=r-s+s/r}return Ls(i,t)}if(e===-1){if(t<-n||t>=0)return NaN;if(Math.abs(t+n)<1e-15)return-1;let i;if(t<-.27){let r=Math.sqrt(2*(Math.E*t+1));i=-1-r-r*r/3-11/72*r*r*r}else{let r=Math.log(-t);i=r-Math.log(-r)}return Ls(i,t)}return NaN}function Ie(t,e){return!isFinite(e)||!Number.isInteger(t)?NaN:e===0?t===0?1:0:t<0?(t=-t,t%2===0?Ie(t,e):-Ie(t,e)):e<0?t%2===0?Ie(t,-e):-Ie(t,-e):e>25+t*t/2?yc(t,e):e<5+t?Nc(t,e):Tc(t,e)}function Nc(t,e){let n=e/2,i=-(e*e)/4,r=1;for(let o=1;o<=t;o++)r/=o;let s=r;for(let o=1;o<=60&&(r*=i/(o*(t+o)),s+=r,!(Math.abs(r)<Math.abs(s)*1e-16));o++);return s*Math.pow(n,t)}function ro(t,e){let n=4*t*t,i=1,r=0,s=1,o=8*e;for(let a=1;a<=20;a++){s*=n-(2*a-1)*(2*a-1);let c=vi(a)*Math.pow(o,a),l=s/c;if(a%2===1?r+=(a%4===1?1:-1)*l:i+=(a%4===2?-1:1)*l,Math.abs(l)<1e-15)break}return[i,r]}function yc(t,e){let n=e-(t/2+.25)*Math.PI,[i,r]=ro(t,e);return Math.sqrt(2/(Math.PI*e))*(i*Math.cos(n)-r*Math.sin(n))}function Tc(t,e){let n=Math.max(t+20,Math.ceil(e)+30),i=0,r=1,s=new Array(n+1);s[n]=r;for(let c=n;c>=1;c--){let l=2*c/e*r-i;i=r,r=l,s[c-1]=r}let o=s[0];for(let c=2;c<=n;c+=2)o+=2*s[c];let a=1/o;return s[t]*a}function bn(t,e){if(!isFinite(e)||!Number.isInteger(t))return NaN;if(e<=0)return NaN;if(t<0)return t=-t,t%2===0?bn(t,e):-bn(t,e);if(e>12+t*t/4)return Ec(t,e);let n=Ic(e);if(t===0)return n;let i=vc(e);if(t===1)return i;let r=n,s=i;for(let o=1;o<t;o++){let a=2*o/e*s-r;r=s,s=a}return s}function Ic(t){let e=t/2,n=e*e,i=Ie(0,t),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=-n/(a*a),r-=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16));a++);return 2/Math.PI*(i*(Math.log(e)+gn)+r)}function vc(t){let e=t/2,n=e*e,i=Ie(1,t),r=0,s=1,o=1;for(let a=0;a<=60;a++){a>0&&(o*=a,s*=n);let c=o*(a+1),l=0;for(let g=1;g<=a;g++)l+=1/g;let f=l+1/(a+1),m=-gn+l,d=-gn+f,h=(a%2===0?1:-1)*(m+d)*s/(o*c);if(r+=h,a>3&&Math.abs(h)<1e-16*Math.abs(r))break}return-2/(Math.PI*t)+2/Math.PI*Math.log(e)*i-e/Math.PI*r}function Ec(t,e){let n=e-(t/2+.25)*Math.PI,[i,r]=ro(t,e);return Math.sqrt(2/(Math.PI*e))*(i*Math.sin(n)+r*Math.cos(n))}function Ce(t,e){return!isFinite(e)||!Number.isInteger(t)?NaN:e===0?t===0?1:0:(t<0&&(t=-t),e<0?t%2===0?Ce(t,-e):-Ce(t,-e):e>20&&e>=t*t?wc(t,e):Mc(t,e))}function Mc(t,e){let n=e/2,i=e*e/4,r=1;for(let a=1;a<=t;a++)r/=a;let s=r,o=0;for(let a=1;a<=500;a++){r*=i/(a*(t+a));let c=r-o,l=s+c;if(o=l-s-c,s=l,Math.abs(r)<Math.abs(s)*1e-17)break}return s*Math.pow(n,t)}function wc(t,e){let n=4*t*t,i=1,r=1,s=1/0;for(let o=1;o<=40;o++){let a=n-(2*o-1)*(2*o-1);if(i*=-a/(o*8*e),Math.abs(i)>=s||(r+=i,s=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.exp(e)/Math.sqrt(2*Math.PI*e)*r}function so(t,e){if(!isFinite(e)||!Number.isInteger(t))return NaN;if(e<=0)return NaN;t<0&&(t=-t);let n,i;if(e>=20){if(n=qs(0,e),t===0)return n;i=qs(1,e)}else if(e>=1.5){if([n,i]=kc(e),t===0)return n}else{if(n=oo(e),t===0)return n;i=xc(e)}if(t===1)return i;let r=n,s=i;for(let o=1;o<t;o++){let a=2*o/e*s+r;r=s,s=a}return s}function kc(t){let n=2*(1+t),i=1/n,r=i,s=i,o=0,a=1,c=-.25,l=.25,f=.25,m=1+f*s,d=0,p=0;for(let y=2;y<=1e4;y++){c-=2*(y-1),l=-c*l/y;let I=(o-n*a)/c;o=a,a=I,f+=l*I,n+=2,i=1/(n+c*i),s=(n*i-1)*s;let T=s-p,N=r+T;p=N-r-T,r=N;let E=f*s;if(T=E-d,N=m+T,d=N-m-T,m=N,Math.abs(E)<1e-18*Math.abs(m))break}r=.25*r;let h=Math.sqrt(Math.PI/(2*t))*Math.exp(-t)/m,g=h*(t+.5-r)/t;return[h,g]}function oo(t){let e=t/2,n=e*e,i=Ce(0,t),r=0,s=1,o=0;for(let a=1;a<=60&&(o+=1/a,s*=n/(a*a),r+=s*o,!(Math.abs(s*o)<Math.abs(r)*1e-16&&a>3));a++);return-(Math.log(e)+gn)*i+r}function xc(t){let e=Ce(0,t),n=Ce(1,t),i=oo(t);return(1/t-n*i)/e}function qs(t,e){let n=4*t*t,i=1,r=1,s=1/0;for(let o=1;o<=40;o++){let a=n-(2*o-1)*(2*o-1);if(i*=a/(o*8*e),Math.abs(i)>=s||(r+=i,s=Math.abs(i),Math.abs(i)<1e-17*Math.abs(r)))break}return Math.sqrt(Math.PI/(2*e))*Math.exp(-e)*r}var $s=134217729;function Zs(t,e){let n=t+e,i=n-t;return[n,t-(n-i)+(e-i)]}function Je(t,e){let n=t+e;return[n,e-(n-t)]}function It(t,e){let n=t*e,i=$s*t,r=i-(i-t),s=t-r,o=$s*e,a=o-(o-e),c=e-a;return[n,r*a-n+r*c+s*a+s*c]}function He(t,e){let[n,i]=Zs(t[0],e[0]),[r,s]=Zs(t[1],e[1]),[o,a]=Je(n,i+r);return Je(o,a+s)}function ao(t){return[-t[0],-t[1]]}function De(t,e){let[n,i]=It(t[0],e[0]);return Je(n,i+t[0]*e[1]+t[1]*e[0])}function Ei(t,e){let[n,i]=It(t[0],e);return Je(n,i+t[1]*e)}function Mi(t,e){let n=t[0]/e,[i,r]=It(n,e),s=He(t,[-i,-r]);return Je(n,(s[0]+s[1])/e)}function Pc(t){let e=Math.sqrt(t),[n,i]=It(e,e);return Je(e,(t-n-i)/(2*e))}var uo=[.3550280538878172,205233632436212e-31],co=[.2588194037928068,-2522243111610832e-32],Sc=[1.7320508075688772,10035084221806903e-32],Rc=[.7853981633974483,3061616997868383e-32];function lo(t){let e=Ei(It(t,t),t),n=[1,0],i=[t,0],r=[1,0],s=[t,0];for(let o=1;o<=200;o++){let a=3*o;if(r=Mi(De(r,e),(a-1)*a),s=Mi(De(s,e),a*(a+1)),n=He(n,r),i=He(i,s),Math.abs(r[0])+Math.abs(s[0])<1e-34*(Math.abs(n[0])+Math.abs(i[0])))break}return[n,i]}function Pi(t){let e=Ei(Pc(t),t);return Mi(Ei(e,2),3)}function Si(t){return(6*t-5)*(6*t-3)*(6*t-1)/(216*t*(2*t-1))}function fo(t){let e=Pi(t),n=e[0],i=He(e,ao(Rc)),r=Math.cos(i[0]),s=Math.sin(i[0]),o=r-s*i[1],a=s+r*i[1],c=1,l=0,f=1,m=1/0;for(let p=1;p<=60;p++){f*=Si(p)/n;let h=Math.abs(f);if(h>=m)break;m=h;let g=p%4===0||p%4===1?f:-f;if(p%2===0?c+=g:l+=g,h<1e-18)break}let d=1/(Math.sqrt(Math.PI)*Math.pow(t,.25));return[c,l,o,a,d]}function mo(t){if(!isFinite(t))return NaN;if(t>9){let i=Pi(t),r=i[0];if(!Number.isFinite(r))return 0;let s=1,o=1,a=1/0;for(let l=1;l<=60&&(o*=Si(l)/r,!(o>=a||(s+=l%2===0?o:-o,a=o,o<1e-18*s)));l++);return Math.exp(-r)*(1-i[1])/(2*Math.sqrt(Math.PI)*Math.pow(t,.25))*s}if(t<-9){let[i,r,s,o,a]=fo(-t);return a*(s*i+o*r)}let[e,n]=lo(t);return He(De(uo,e),ao(De(co,n)))[0]}function po(t){if(!isFinite(t))return NaN;if(t>9){let i=Pi(t),r=i[0];if(!Number.isFinite(r))return 1/0;let s=1,o=1,a=1/0;for(let l=1;l<=60&&(o*=Si(l)/r,!(o>=a||(s+=o,a=o,o<1e-18*s)));l++);return Math.exp(r)*(1+i[1])/(Math.sqrt(Math.PI)*Math.pow(t,.25))*s}if(t<-9){let[i,r,s,o,a]=fo(-t);return a*(-o*i+s*r)}let[e,n]=lo(t);return De(Sc,He(De(uo,e),De(co,n)))[0]}var Bc=[-2991.8191940101983,708840.0452577386,-6297414862058625e-8,25489088057337637e-7,-4429795180596978e-5,3180162978765678e-4],Ac=[1,281.3762688899943,45584.78108065326,5173438887700964e-9,4193202458981112e-7,22441179564534092e-6,607366389490085e-3],Oc=[-49884311457357354e-24,9504280628298596e-21,-.0006451914356839651,.018884331939670384,-.20552590095501388,1],Dc=[399982968972496e-26,9154392157746574e-25,12500186247959882e-23,12226278902417902e-21,.0008680295429417843,.04121420907221998,1],ho=[.4215435550436775,.1434079197807589,.011522095507358577,.000345017939782574,46361374928786735e-22,3055689837902576e-23,10230451416490724e-26,17201074326816183e-29,13428327623306275e-32,3763297112699879e-35],go=[1,.7515863983533789,.11688892585919138,.0064405152650885865,.00015593440916415301,18462756734893055e-22,11269922476399903e-24,36014002958937136e-27,5887545336215784e-29,45200143407412973e-33,12544323709001127e-36],bo=[.5044420736433832,.1971028335255234,.018764858409257526,.0006840793809153931,11513882611188428e-21,9828524436884223e-23,44534441586175015e-26,10826804113902088e-28,1375554606332618e-30,8363544356306774e-34,18695871016278324e-38],No=[1,1.4749575992512833,.33774898912002,.02536037414203388,.0008146791071843061,12754507566772912e-21,10431458965757199e-23,46068072851523205e-26,11027321506624028e-28,13879653125957886e-31,8391588162831187e-34,18695871016278324e-38];function Q(t,e){let n=e[0];for(let i=1;i<e.length;i++)n=n*t+e[i];return n}var yo=6e15;function To(t){let n=134217729*t,i=n-(n-t),r=t-i,s=i*i%4+2*(i*r%2)+r*r%4;return s%=4,s<0&&(s+=4),Math.PI/2*s}function Io(t){if(!isFinite(t))return t!==t?NaN:t>0?.5:-.5;let e=t<0?-1:1;if(t=Math.abs(t),t<1.6){let n=t*t,i=n*n;return e*t*n*Q(i,Bc)/Q(i,Ac)}if(t<yo){let n=t*t,i=Math.PI*n,r=1/(i*i),s=1-r*Q(r,ho)/Q(r,go),o=1/i*Q(r,bo)/Q(r,No),a=To(t),c=Math.cos(a),l=Math.sin(a);return e*(.5-(s*c+o*l)/(Math.PI*t))}return e*.5}function vo(t){if(!isFinite(t))return t!==t?NaN:t>0?.5:-.5;let e=t<0?-1:1;if(t=Math.abs(t),t<1.6){let n=t*t,i=n*n;return e*t*Q(i,Oc)/Q(i,Dc)}if(t<yo){let n=t*t,i=Math.PI*n,r=1/(i*i),s=1-r*Q(r,ho)/Q(r,go),o=1/i*Q(r,bo)/Q(r,No),a=To(t),c=Math.cos(a),l=Math.sin(a);return e*(.5+(s*l-o*c)/(Math.PI*t))}return e*.5}function Eo(t){return t===0?1:Math.sin(t)/t}var _=Math.cosh||function(t){return Math.abs(t)<1e-9?1-t:(Math.exp(t)+Math.exp(-t))*.5},z=Math.sinh||function(t){return Math.abs(t)<1e-9?t:(Math.exp(t)-Math.exp(-t))*.5},Cc=function(t){var e=Math.PI/4;if(-e>t||t>e)return Math.cos(t)-1;var n=t*t;return n*(n*(n*(n*(n*(n*(n*(n/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Fc=function(t,e){var n=Math.abs(t),i=Math.abs(e);return n<3e3&&i<3e3?Math.sqrt(n*n+i*i):(n<i?(n=i,i=t/e):i=e/t,n*Math.sqrt(1+i*i))},Xe=function(){throw SyntaxError("Invalid Param")};function Ri(t,e){var n=Math.abs(t),i=Math.abs(e);return t===0?Math.log(i):e===0?Math.log(n):n<3e3&&i<3e3?Math.log(t*t+e*e)*.5:(t=t/2,e=e/2,.5*Math.log(t*t+e*e)+Math.LN2)}var _c=function(t,e){var n={re:0,im:0};if(t==null)n.re=n.im=0;else if(e!==void 0)n.re=t,n.im=e;else switch(typeof t){case"object":if("im"in t&&"re"in t)n.re=t.re,n.im=t.im;else if("abs"in t&&"arg"in t){if(!Number.isFinite(t.abs)&&Number.isFinite(t.arg))return x.INFINITY;n.re=t.abs*Math.cos(t.arg),n.im=t.abs*Math.sin(t.arg)}else if("r"in t&&"phi"in t){if(!Number.isFinite(t.r)&&Number.isFinite(t.phi))return x.INFINITY;n.re=t.r*Math.cos(t.phi),n.im=t.r*Math.sin(t.phi)}else t.length===2?(n.re=t[0],n.im=t[1]):Xe();break;case"string":n.im=n.re=0;var i=t.match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,s=0;i===null&&Xe();for(var o=0;o<i.length;o++){var a=i[o];a===" "||a===" "||a===`
|
|
7
|
-
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Xe(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(n.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):n.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Xe(),i[o+1]==="i"||i[o+1]==="I"?(n.im+=parseFloat((s%2?"-":"")+a),o++):n.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Xe();break;case"number":n.im=0,n.re=t;break;default:Xe()}return isNaN(n.re)||isNaN(n.im),n},x=class t{constructor(e,n){this.re=0,this.im=0;var i=_c(e,n);this.re=i.re,this.im=i.im}sign(){var e=this.abs();return new t(this.re/e,this.im/e)}add(e,n){var i=new t(e,n);return this.isInfinite()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:new t(this.re+i.re,this.im+i.im)}sub(e,n){var i=new t(e,n);return this.isInfinite()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:new t(this.re-i.re,this.im-i.im)}mul(e,n){var i=new t(e,n);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:i.im===0&&this.im===0?new t(this.re*i.re,0):new t(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(e,n){var i=new t(e,n);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return t.NAN;if(this.isInfinite()||i.isZero())return t.INFINITY;if(this.isZero()||i.isInfinite())return t.ZERO;e=this.re,n=this.im;var r=i.re,s=i.im,o,a;return s===0?new t(e/r,n/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new t((e*a+n)/o,(n*a-e)/o)):(a=s/r,o=s*a+r,new t((e+n*a)/o,(n-e*a)/o))}pow(e,n){var i=new t(e,n);if(e=this.re,n=this.im,i.isZero())return t.ONE;if(i.im===0){if(n===0&&e>0)return new t(Math.pow(e,i.re),0);if(e===0)switch((i.re%4+4)%4){case 0:return new t(Math.pow(n,i.re),0);case 1:return new t(0,Math.pow(n,i.re));case 2:return new t(-Math.pow(n,i.re),0);case 3:return new t(0,-Math.pow(n,i.re))}}if(e===0&&n===0&&i.re>0&&i.im>=0)return t.ZERO;var r=Math.atan2(n,e),s=Ri(e,n);return e=Math.exp(i.re*s-i.im*r),n=i.im*s+i.re*r,new t(e*Math.cos(n),e*Math.sin(n))}sqrt(){var e=this.re,n=this.im,i=this.abs(),r,s;if(e>=0){if(n===0)return new t(Math.sqrt(e),0);r=.5*Math.sqrt(2*(i+e))}else r=Math.abs(n)/Math.sqrt(2*(i-e));return e<=0?s=.5*Math.sqrt(2*(i-e)):s=Math.abs(n)/Math.sqrt(2*(i+e)),new t(r,n<0?-s:s)}exp(){var e=Math.exp(this.re);return this.im,new t(e*Math.cos(this.im),e*Math.sin(this.im))}expm1(){var e=this.re,n=this.im;return new t(Math.expm1(e)*Math.cos(n)+Cc(n),Math.exp(e)*Math.sin(n))}log(){var e=this.re,n=this.im;return n===0&&e>0,new t(Ri(e,n),Math.atan2(n,e))}abs(){return Fc(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var e=this.re,n=this.im;return new t(Math.sin(e)*_(n),Math.cos(e)*z(n))}cos(){var e=this.re,n=this.im;return new t(Math.cos(e)*_(n),-Math.sin(e)*z(n))}tan(){var e=2*this.re,n=2*this.im,i=Math.cos(e)+_(n);return new t(Math.sin(e)/i,z(n)/i)}cot(){var e=2*this.re,n=2*this.im,i=Math.cos(e)-_(n);return new t(-Math.sin(e)/i,z(n)/i)}sec(){var e=this.re,n=this.im,i=.5*_(2*n)+.5*Math.cos(2*e);return new t(Math.cos(e)*_(n)/i,Math.sin(e)*z(n)/i)}csc(){var e=this.re,n=this.im,i=.5*_(2*n)-.5*Math.cos(2*e);return new t(Math.sin(e)*_(n)/i,-Math.cos(e)*z(n)/i)}asin(){var e=this.re,n=this.im,i=new t(n*n-e*e+1,-2*e*n).sqrt(),r=new t(i.re-n,i.im+e).log();return new t(r.im,-r.re)}acos(){var e=this.re,n=this.im,i=new t(n*n-e*e+1,-2*e*n).sqrt(),r=new t(i.re-n,i.im+e).log();return new t(Math.PI/2-r.im,r.re)}atan(){var e=this.re,n=this.im;if(e===0){if(n===1)return new t(0,1/0);if(n===-1)return new t(0,-1/0)}var i=e*e+(1-n)*(1-n),r=new t((1-n*n-e*e)/i,-2*e/i).log();return new t(-.5*r.im,.5*r.re)}acot(){var e=this.re,n=this.im;if(n===0)return new t(Math.atan2(1,e),0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).atan():new t(e!==0?e/0:0,n!==0?-n/0:0).atan()}asec(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(0,1/0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).acos():new t(e!==0?e/0:0,n!==0?-n/0:0).acos()}acsc(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(Math.PI/2,1/0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).asin():new t(e!==0?e/0:0,n!==0?-n/0:0).asin()}sinh(){var e=this.re,n=this.im;return new t(z(e)*Math.cos(n),_(e)*Math.sin(n))}cosh(){var e=this.re,n=this.im;return new t(_(e)*Math.cos(n),z(e)*Math.sin(n))}tanh(){var e=2*this.re,n=2*this.im,i=_(e)+Math.cos(n);return new t(z(e)/i,Math.sin(n)/i)}coth(){var e=2*this.re,n=2*this.im,i=_(e)-Math.cos(n);return new t(z(e)/i,-Math.sin(n)/i)}csch(){var e=this.re,n=this.im,i=Math.cos(2*n)-_(2*e);return new t(-2*z(e)*Math.cos(n)/i,2*_(e)*Math.sin(n)/i)}sech(){var e=this.re,n=this.im,i=Math.cos(2*n)+_(2*e);return new t(2*_(e)*Math.cos(n)/i,-2*z(e)*Math.sin(n)/i)}asinh(){var e=this.im;this.im=-this.re,this.re=e;var n=this.asin();return this.re=-this.im,this.im=e,e=n.re,n.re=-n.im,n.im=e,n}acosh(){var e=this.acos();if(e.im<=0){var n=e.re;e.re=-e.im,e.im=n}else{var n=e.im;e.im=-e.re,e.re=n}return e}atanh(){var e=this.re,n=this.im,i=e>1&&n===0,r=1-e,s=1+e,o=r*r+n*n,a=o!==0?new t((s*r-n*n)/o,(n*r+s*n)/o):new t(e!==-1?e/0:0,n!==0?n/0:0),c=a.re;return a.re=Ri(a.re,a.im)/2,a.im=Math.atan2(a.im,c)/2,i&&(a.im=-a.im),a}acoth(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(0,Math.PI/2);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).atanh():new t(e!==0?e/0:0,n!==0?-n/0:0).atanh()}acsch(){var e=this.re,n=this.im;if(n===0)return new t(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).asinh():new t(e!==0?e/0:0,n!==0?-n/0:0).asinh()}asech(){var e=this.re,n=this.im;if(this.isZero())return t.INFINITY;var i=e*e+n*n;return i!==0?new t(e/i,-n/i).acosh():new t(e!==0?e/0:0,n!==0?-n/0:0).acosh()}inverse(){if(this.isZero())return t.INFINITY;if(this.isInfinite())return t.ZERO;var e=this.re,n=this.im,i=e*e+n*n;return new t(e/i,-n/i)}conjugate(){return new t(this.re,-this.im)}neg(){return new t(-this.re,-this.im)}ceil(e){return e=Math.pow(10,e||0),new t(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)}floor(e){return e=Math.pow(10,e||0),new t(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)}round(e){return e=Math.pow(10,e||0),new t(Math.round(this.re*e)/e,Math.round(this.im*e)/e)}equals(e,n){var i=new t(e,n);return Math.abs(i.re-this.re)<=t.EPSILON&&Math.abs(i.im-this.im)<=t.EPSILON}clone(){return new t(this.re,this.im)}toString(){var e=this.re,n=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<t.EPSILON&&(e=0),Math.abs(n)<t.EPSILON&&(n=0),n===0?i+e:(e!==0?(i+=e,i+=" ",n<0?(n=-n,i+="-"):i+="+",i+=" "):n<0&&(n=-n,i+="-"),n!==1&&(i+=n),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};x.ZERO=new x(0,0);x.ONE=new x(1,0);x.I=new x(0,1);x.PI=new x(Math.PI,0);x.E=new x(Math.E,0);x.INFINITY=new x(1/0,1/0);x.NAN=new x(NaN,NaN);x.EPSILON=1e-15;var En=7,Mn=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23],Vc=Math.sqrt(2*Math.PI),jc=.5*Math.log(2*Math.PI);function Bi(t){if(t.re<.5){let r=t.mul(Math.PI).sin();return new x(Math.PI,0).div(r.mul(Bi(new x(1,0).sub(t))))}let e=t.sub(1),n=new x(Mn[0],0);for(let r=1;r<En+2;r++)n=n.add(new x(Mn[r],0).div(e.add(r)));let i=e.add(En+.5);return new x(Vc,0).mul(i.pow(e.add(.5))).mul(i.neg().exp()).mul(n)}function Ai(t){if(t.re<.5){let r=t.mul(Math.PI).sin();return new x(Math.PI,0).div(r).log().sub(Ai(new x(1,0).sub(t)))}let e=t.sub(1),n=new x(Mn[0],0);for(let r=1;r<En+2;r++)n=n.add(new x(Mn[r],0).div(e.add(r)));let i=e.add(En+.5);return new x(jc,0).add(e.add(.5).mul(i.log())).sub(i).add(n.log())}var zm=new x(NaN,NaN),ed=new x(1,0),td=new x(0,0);var nd=Math.sqrt(Math.PI);var Lc="0.129.
|
|
7
|
+
`||(a==="+"?r++:a==="-"?s++:a==="i"||a==="I"?(r+s===0&&Xe(),i[o+1]!==" "&&!isNaN(Number(i[o+1]))?(n.im+=parseFloat((s%2?"-":"")+i[o+1]),o++):n.im+=parseFloat((s%2?"-":"")+"1"),r=s=0):((r+s===0||isNaN(Number(a)))&&Xe(),i[o+1]==="i"||i[o+1]==="I"?(n.im+=parseFloat((s%2?"-":"")+a),o++):n.re+=parseFloat((s%2?"-":"")+a),r=s=0))}r+s>0&&Xe();break;case"number":n.im=0,n.re=t;break;default:Xe()}return isNaN(n.re)||isNaN(n.im),n},x=class t{constructor(e,n){this.re=0,this.im=0;var i=_c(e,n);this.re=i.re,this.im=i.im}sign(){var e=this.abs();return new t(this.re/e,this.im/e)}add(e,n){var i=new t(e,n);return this.isInfinite()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:new t(this.re+i.re,this.im+i.im)}sub(e,n){var i=new t(e,n);return this.isInfinite()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:new t(this.re-i.re,this.im-i.im)}mul(e,n){var i=new t(e,n);return this.isInfinite()&&i.isZero()||this.isZero()&&i.isInfinite()?t.NAN:this.isInfinite()||i.isInfinite()?t.INFINITY:i.im===0&&this.im===0?new t(this.re*i.re,0):new t(this.re*i.re-this.im*i.im,this.re*i.im+this.im*i.re)}div(e,n){var i=new t(e,n);if(this.isZero()&&i.isZero()||this.isInfinite()&&i.isInfinite())return t.NAN;if(this.isInfinite()||i.isZero())return t.INFINITY;if(this.isZero()||i.isInfinite())return t.ZERO;e=this.re,n=this.im;var r=i.re,s=i.im,o,a;return s===0?new t(e/r,n/r):Math.abs(r)<Math.abs(s)?(a=r/s,o=r*a+s,new t((e*a+n)/o,(n*a-e)/o)):(a=s/r,o=s*a+r,new t((e+n*a)/o,(n-e*a)/o))}pow(e,n){var i=new t(e,n);if(e=this.re,n=this.im,i.isZero())return t.ONE;if(i.im===0){if(n===0&&e>0)return new t(Math.pow(e,i.re),0);if(e===0)switch((i.re%4+4)%4){case 0:return new t(Math.pow(n,i.re),0);case 1:return new t(0,Math.pow(n,i.re));case 2:return new t(-Math.pow(n,i.re),0);case 3:return new t(0,-Math.pow(n,i.re))}}if(e===0&&n===0&&i.re>0&&i.im>=0)return t.ZERO;var r=Math.atan2(n,e),s=Ri(e,n);return e=Math.exp(i.re*s-i.im*r),n=i.im*s+i.re*r,new t(e*Math.cos(n),e*Math.sin(n))}sqrt(){var e=this.re,n=this.im,i=this.abs(),r,s;if(e>=0){if(n===0)return new t(Math.sqrt(e),0);r=.5*Math.sqrt(2*(i+e))}else r=Math.abs(n)/Math.sqrt(2*(i-e));return e<=0?s=.5*Math.sqrt(2*(i-e)):s=Math.abs(n)/Math.sqrt(2*(i+e)),new t(r,n<0?-s:s)}exp(){var e=Math.exp(this.re);return this.im,new t(e*Math.cos(this.im),e*Math.sin(this.im))}expm1(){var e=this.re,n=this.im;return new t(Math.expm1(e)*Math.cos(n)+Cc(n),Math.exp(e)*Math.sin(n))}log(){var e=this.re,n=this.im;return n===0&&e>0,new t(Ri(e,n),Math.atan2(n,e))}abs(){return Fc(this.re,this.im)}arg(){return Math.atan2(this.im,this.re)}sin(){var e=this.re,n=this.im;return new t(Math.sin(e)*_(n),Math.cos(e)*z(n))}cos(){var e=this.re,n=this.im;return new t(Math.cos(e)*_(n),-Math.sin(e)*z(n))}tan(){var e=2*this.re,n=2*this.im,i=Math.cos(e)+_(n);return new t(Math.sin(e)/i,z(n)/i)}cot(){var e=2*this.re,n=2*this.im,i=Math.cos(e)-_(n);return new t(-Math.sin(e)/i,z(n)/i)}sec(){var e=this.re,n=this.im,i=.5*_(2*n)+.5*Math.cos(2*e);return new t(Math.cos(e)*_(n)/i,Math.sin(e)*z(n)/i)}csc(){var e=this.re,n=this.im,i=.5*_(2*n)-.5*Math.cos(2*e);return new t(Math.sin(e)*_(n)/i,-Math.cos(e)*z(n)/i)}asin(){var e=this.re,n=this.im,i=new t(n*n-e*e+1,-2*e*n).sqrt(),r=new t(i.re-n,i.im+e).log();return new t(r.im,-r.re)}acos(){var e=this.re,n=this.im,i=new t(n*n-e*e+1,-2*e*n).sqrt(),r=new t(i.re-n,i.im+e).log();return new t(Math.PI/2-r.im,r.re)}atan(){var e=this.re,n=this.im;if(e===0){if(n===1)return new t(0,1/0);if(n===-1)return new t(0,-1/0)}var i=e*e+(1-n)*(1-n),r=new t((1-n*n-e*e)/i,-2*e/i).log();return new t(-.5*r.im,.5*r.re)}acot(){var e=this.re,n=this.im;if(n===0)return new t(Math.atan2(1,e),0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).atan():new t(e!==0?e/0:0,n!==0?-n/0:0).atan()}asec(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(0,1/0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).acos():new t(e!==0?e/0:0,n!==0?-n/0:0).acos()}acsc(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(Math.PI/2,1/0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).asin():new t(e!==0?e/0:0,n!==0?-n/0:0).asin()}sinh(){var e=this.re,n=this.im;return new t(z(e)*Math.cos(n),_(e)*Math.sin(n))}cosh(){var e=this.re,n=this.im;return new t(_(e)*Math.cos(n),z(e)*Math.sin(n))}tanh(){var e=2*this.re,n=2*this.im,i=_(e)+Math.cos(n);return new t(z(e)/i,Math.sin(n)/i)}coth(){var e=2*this.re,n=2*this.im,i=_(e)-Math.cos(n);return new t(z(e)/i,-Math.sin(n)/i)}csch(){var e=this.re,n=this.im,i=Math.cos(2*n)-_(2*e);return new t(-2*z(e)*Math.cos(n)/i,2*_(e)*Math.sin(n)/i)}sech(){var e=this.re,n=this.im,i=Math.cos(2*n)+_(2*e);return new t(2*_(e)*Math.cos(n)/i,-2*z(e)*Math.sin(n)/i)}asinh(){var e=this.im;this.im=-this.re,this.re=e;var n=this.asin();return this.re=-this.im,this.im=e,e=n.re,n.re=-n.im,n.im=e,n}acosh(){var e=this.acos();if(e.im<=0){var n=e.re;e.re=-e.im,e.im=n}else{var n=e.im;e.im=-e.re,e.re=n}return e}atanh(){var e=this.re,n=this.im,i=e>1&&n===0,r=1-e,s=1+e,o=r*r+n*n,a=o!==0?new t((s*r-n*n)/o,(n*r+s*n)/o):new t(e!==-1?e/0:0,n!==0?n/0:0),c=a.re;return a.re=Ri(a.re,a.im)/2,a.im=Math.atan2(a.im,c)/2,i&&(a.im=-a.im),a}acoth(){var e=this.re,n=this.im;if(e===0&&n===0)return new t(0,Math.PI/2);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).atanh():new t(e!==0?e/0:0,n!==0?-n/0:0).atanh()}acsch(){var e=this.re,n=this.im;if(n===0)return new t(e!==0?Math.log(e+Math.sqrt(e*e+1)):1/0,0);var i=e*e+n*n;return i!==0?new t(e/i,-n/i).asinh():new t(e!==0?e/0:0,n!==0?-n/0:0).asinh()}asech(){var e=this.re,n=this.im;if(this.isZero())return t.INFINITY;var i=e*e+n*n;return i!==0?new t(e/i,-n/i).acosh():new t(e!==0?e/0:0,n!==0?-n/0:0).acosh()}inverse(){if(this.isZero())return t.INFINITY;if(this.isInfinite())return t.ZERO;var e=this.re,n=this.im,i=e*e+n*n;return new t(e/i,-n/i)}conjugate(){return new t(this.re,-this.im)}neg(){return new t(-this.re,-this.im)}ceil(e){return e=Math.pow(10,e||0),new t(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)}floor(e){return e=Math.pow(10,e||0),new t(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)}round(e){return e=Math.pow(10,e||0),new t(Math.round(this.re*e)/e,Math.round(this.im*e)/e)}equals(e,n){var i=new t(e,n);return Math.abs(i.re-this.re)<=t.EPSILON&&Math.abs(i.im-this.im)<=t.EPSILON}clone(){return new t(this.re,this.im)}toString(){var e=this.re,n=this.im,i="";return this.isNaN()?"NaN":this.isInfinite()?"Infinity":(Math.abs(e)<t.EPSILON&&(e=0),Math.abs(n)<t.EPSILON&&(n=0),n===0?i+e:(e!==0?(i+=e,i+=" ",n<0?(n=-n,i+="-"):i+="+",i+=" "):n<0&&(n=-n,i+="-"),n!==1&&(i+=n),i+"i"))}toVector(){return[this.re,this.im]}valueOf(){return this.im===0?this.re:null}isNaN(){return isNaN(this.re)||isNaN(this.im)}isZero(){return this.im===0&&this.re===0}isFinite(){return isFinite(this.re)&&isFinite(this.im)}isInfinite(){return!(this.isNaN()||this.isFinite())}};x.ZERO=new x(0,0);x.ONE=new x(1,0);x.I=new x(0,1);x.PI=new x(Math.PI,0);x.E=new x(Math.E,0);x.INFINITY=new x(1/0,1/0);x.NAN=new x(NaN,NaN);x.EPSILON=1e-15;var En=7,Mn=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,15056327351493116e-23],Vc=Math.sqrt(2*Math.PI),jc=.5*Math.log(2*Math.PI);function Bi(t){if(t.re<.5){let r=t.mul(Math.PI).sin();return new x(Math.PI,0).div(r.mul(Bi(new x(1,0).sub(t))))}let e=t.sub(1),n=new x(Mn[0],0);for(let r=1;r<En+2;r++)n=n.add(new x(Mn[r],0).div(e.add(r)));let i=e.add(En+.5);return new x(Vc,0).mul(i.pow(e.add(.5))).mul(i.neg().exp()).mul(n)}function Ai(t){if(t.re<.5){let r=t.mul(Math.PI).sin();return new x(Math.PI,0).div(r).log().sub(Ai(new x(1,0).sub(t)))}let e=t.sub(1),n=new x(Mn[0],0);for(let r=1;r<En+2;r++)n=n.add(new x(Mn[r],0).div(e.add(r)));let i=e.add(En+.5);return new x(jc,0).add(e.add(.5).mul(i.log())).sub(i).add(n.log())}var zm=new x(NaN,NaN),ed=new x(1,0),td=new x(0,0);var nd=Math.sqrt(Math.PI);var Lc="0.129.1";return So(qc);})();
|
|
8
8
|
/*! Bundled license information:
|
|
9
9
|
|
|
10
10
|
complex-esm/dist/src/complex.js:
|