[{"data":1,"prerenderedAt":13153},["ShallowReactive",2],{"nav:algorithms":3,"lesson:\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":374,"course-wordcounts":13021,"ref-card-index":13077},[4,28,50,71,120,152,205,230,286,306,331,352],{"module":5,"moduleNumber":6,"slug":7,"lessons":8},"Foundations",1,"foundations",[9,15,21],{"title":10,"path":11,"lessonNumber":6,"topics":12,"summary":14},"What Is an Algorithm?","\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm",[5,13],"Correctness & Induction","An algorithm is a finite, mechanical recipe that transforms inputs into outputs. We pin down what counts as an algorithm, how we write one down, and the three things we always ask of it: is it correct, is it fast, and can we prove it.\n",{"title":16,"path":17,"lessonNumber":18,"topics":19,"summary":20},"Asymptotic Analysis","\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis",2,[16],"We measure an algorithm's running time as a function of its input size, then strip away machine-specific constants and lower-order terms to compare algorithms cleanly. This lesson defines the RAM model and the $O$, $\\Omega$, $\\Theta$, $o$, and $\\omega$ notations, and shows how to read the cost of loops off the page.\n",{"title":22,"path":23,"lessonNumber":24,"topics":25,"summary":27},"Recurrences and the Master Theorem","\u002Falgorithms\u002Ffoundations\u002Frecurrences",3,[26],"Recurrences","Recursive and divide-and-conquer algorithms describe their own running time with a recurrence: $T(n)$ in terms of $T$ on smaller inputs. We solve recurrences three ways — drawing the recursion tree, guessing-and-verifying by induction, and applying the Master Theorem — using merge sort as the running example.\n",{"module":29,"moduleNumber":18,"slug":30,"lessons":31},"Divide & Conquer","divide-and-conquer",[32,38,44],{"title":33,"path":34,"lessonNumber":6,"topics":35,"summary":37},"Divide and Conquer & Mergesort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort",[29,36],"Comparison Sorting","Divide and conquer breaks a problem into smaller copies of itself, solves them recursively, and stitches the answers together. We meet the paradigm through mergesort — its merge step, its loop-invariant proof, and the recursion tree that pins its cost at $\\Theta(n\\log n)$ — then glimpse Karatsuba multiplication as a second example of the same idea.",{"title":39,"path":40,"lessonNumber":18,"topics":41,"summary":43},"Quicksort","\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort",[36,42],"Probabilistic Analysis","Quicksort sorts in place by partitioning around a pivot and recursing on each side. We give Lomuto and Hoare partitioning with a correctness invariant, see why a bad pivot costs $\\Theta(n^2)$ while a balanced one gives $\\Theta(n\\log n)$, and prove that randomizing the pivot makes the expected cost $\\Theta(n\\log n)$ on every input.",{"title":45,"path":46,"lessonNumber":24,"topics":47,"summary":49},"Linear-Time Selection","\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection",[48,29],"Order Statistics","Finding the $k$-th smallest element looks like it should require sorting, but it does not. Quickselect adapts quicksort's partition to recurse on just one side, achieving expected $O(n)$. The median-of-medians algorithm guarantees a good pivot with the groups-of-five trick, pushing the worst case down to a provable $O(n)$.",{"module":51,"moduleNumber":24,"slug":52,"lessons":53},"Sorting & Order Statistics","sorting",[54,60,65],{"title":55,"path":56,"lessonNumber":6,"topics":57,"summary":59},"Heaps and Heapsort","\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort",[58,36],"Heaps","A binary heap is a tree we store flat in an array, with index arithmetic standing in for pointers. We build the max-heap property bottom-up in $O(n)$ time, sort in place in $\\Theta(n\\log n)$ by repeatedly extracting the maximum, and reuse the same structure to implement a priority queue.",{"title":61,"path":62,"lessonNumber":18,"topics":63,"summary":64},"Lower Bounds for Comparison Sorting","\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds",[36],"Every sort we have seen runs in $\\Omega(n\\log n)$, and that is no accident. Modeling a sort as a decision tree of comparisons, we show any such tree must have $n!$ leaves, forcing height $\\ge \\log_2(n!) = \\Omega(n\\log n)$ — a worst-case bound no comparison sort can ever beat.",{"title":66,"path":67,"lessonNumber":24,"topics":68,"summary":70},"Sorting in Linear Time","\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting",[69],"Linear-Time Sorting","The $\\Omega(n\\log n)$ barrier only binds algorithms that compare. By instead using keys as array indices we slip past it: counting sort runs in $\\Theta(n+k)$ and is stable, radix sort layers it digit by digit, and bucket sort averages $\\Theta(n)$ on uniform data. We see exactly when each applies.",{"module":72,"moduleNumber":73,"slug":74,"lessons":75},"Data Structures",4,"data-structures",[76,82,88,93,99,105,113],{"title":77,"path":78,"lessonNumber":6,"topics":79,"summary":81},"Elementary Data Structures","\u002Falgorithms\u002Fdata-structures\u002Felementary-structures",[80],"Linear Structures","Every container is built one of two ways: **contiguous** in an array, or **linked** through pointers. We trade cache-friendly random access against $O(1)$ splicing, derive the **amortized $O(1)$** append of a doubling dynamic array, and assemble the two ordered access disciplines — the LIFO **stack** and the FIFO **queue** (with its generalization, the **deque**) — on top of both.",{"title":83,"path":84,"lessonNumber":18,"topics":85,"summary":87},"Hash Tables","\u002Falgorithms\u002Fdata-structures\u002Fhash-tables",[86],"Hashing","A hash table implements the dictionary — insert, search, delete — in expected $O(1)$ time by scattering keys across an array with a hash function. We build up from direct addressing, handle collisions by chaining and by open addressing, analyze the load factor $\\alpha$, and see how universal hashing earns its expected-time guarantee against every input.",{"title":89,"path":90,"lessonNumber":24,"topics":91,"summary":92},"Binary Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees",[89],"A binary search tree keeps keys ordered so that every operation follows a single root-to-leaf path. We state the BST property, give search and insert, find minimum, maximum, and successor, see that an inorder walk emits the keys in sorted order, and confront the catch — every operation costs $O(h)$, and a carelessly built tree degrades to height $h = \\Theta(n)$, motivating balance.",{"title":94,"path":95,"lessonNumber":73,"topics":96,"summary":98},"AVL Trees","\u002Falgorithms\u002Fdata-structures\u002Favl-trees",[97],"Balanced Trees","An AVL tree is the first balanced BST: at every node the two subtrees' heights differ by at most $1$. A Fibonacci-style minimal-node argument forces height $h \\le 1.44\\log_2 n = O(\\log n)$, so search, insert, and delete are all $O(\\log n)$. Insertion rebalances with at most one of four rotation cases (LL, RR, LR, RL); deletion may rotate all the way to the root.",{"title":100,"path":101,"lessonNumber":102,"topics":103,"summary":104},"Balanced Search Trees","\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees",5,[97],"An ordinary BST can degrade to height $\\Theta(n)$; balanced search trees guarantee $h = O(\\log n)$ by maintaining invariants and repairing them after every update. We meet rotations, the local restructuring primitive, then red-black trees, whose color invariants force logarithmic height, and finally B-trees, which trade tall-and-thin for short-and-wide to win on disk.",{"title":106,"path":107,"lessonNumber":108,"topics":109,"summary":112},"Disjoint Sets (Union-Find)","\u002Falgorithms\u002Fdata-structures\u002Funion-find",6,[110,111],"Disjoint Sets","Amortized Analysis","The disjoint-set data structure tracks a partition of elements into groups, answering \"are these two in the same group?\" and merging groups on demand. A forest of parent pointers, sped up by union by rank and path compression, drives every operation to near-constant $O(\\alpha(n))$ amortized time — the engine behind connectivity queries and Kruskal's minimum spanning tree.",{"title":114,"path":115,"lessonNumber":116,"topics":117,"summary":119},"Fenwick & Segment Trees","\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees",7,[118],"Range Queries","A prefix-sum array answers a range sum in $O(1)$ but pays $O(n)$ per update; a plain array updates in $O(1)$ but pays $O(n)$ per range sum. Fenwick and segment trees give us _both_ in $O(\\log n)$. The Fenwick (binary indexed) tree is a tiny array keyed by the low bit; the segment tree is a general balanced tree over canonical ranges that handles any associative aggregate and, with lazy propagation, range updates too.",{"module":121,"moduleNumber":102,"slug":122,"lessons":123},"Sequences & Strings","sequences",[124,130,135,141,147],{"title":125,"path":126,"lessonNumber":6,"topics":127,"summary":129},"Two Pointers, Sliding Windows & Prefix Sums","\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows",[128],"Array Techniques","A family of array idioms that collapse an obvious $O(n^2)$ scan into a single $O(n)$ pass by maintaining an invariant as indices move. We meet two pointers (converging on a sorted array, and a fast\u002Fslow pair for in-place rewriting), the sliding window (fixed and variable size, amortized $O(n)$), and prefix sums, which answer any range-sum in $O(1)$ and count subarrays summing to $k$.",{"title":131,"path":132,"lessonNumber":18,"topics":133,"summary":134},"Monotonic Stacks & Queues","\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks",[128],"A **monotonic stack** keeps its contents sorted by popping every element that would break the order before each push — turning a family of \"previous\u002Fnext greater (or smaller) element\" questions into a single $O(n)$ scan. We derive the next-greater-element routine and its amortized analysis, fuse two such scans to measure the **largest rectangle in a histogram** in linear time, and extend the idea to a **monotonic deque** that streams the **sliding-window maximum** in $O(n)$.",{"title":136,"path":137,"lessonNumber":24,"topics":138,"summary":140},"Binary Search on the Answer","\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer",[139],"Searching","Binary search is not really about arrays — it is about locating the boundary of a **monotone predicate** $p(x)$ in $O(\\log(\\text{range}))$ probes. We first pin down the half-open `while (lo \u003C hi)` template for $\\textsc{lower\\_bound}$ and $\\textsc{upper\\_bound}$, then generalize to \"binary search on the answer\": whenever feasibility is monotone in a numeric parameter, we binary search the parameter itself, calling a feasibility check at each step.",{"title":142,"path":143,"lessonNumber":73,"topics":144,"summary":146},"String Matching: Rabin–Karp, KMP & Z","\u002Falgorithms\u002Fsequences\u002Fstring-matching",[145],"Strings","Given a text $T$ of length $n$ and a pattern $P$ of length $m$, find every occurrence of $P$ in $T$. The naive scan costs $O(nm)$; we beat it three ways. Rabin–Karp uses a **rolling hash** to test alignments in $O(1)$ amortised each, with expected $O(n+m)$. KMP precomputes a **failure function** so the scan never re-reads a text character, for worst-case $O(n+m)$. The **Z-function** gives the same bound from a different angle and converts freely to KMP's table.",{"title":148,"path":149,"lessonNumber":102,"topics":150,"summary":151},"Tries & Prefix Trees","\u002Falgorithms\u002Fsequences\u002Ftries",[145],"A **trie** stores a set of strings in a tree keyed by _characters_, so that insert, search, and prefix-test all run in $O(L)$ time — the length of the key, _independent of how many keys are stored_. Shared prefixes are stored once, which makes tries the natural structure for autocomplete, wildcard dictionaries, board word-search, and — over the alphabet $\\{0,1\\}$ — the maximum-XOR-pair problem.",{"module":153,"moduleNumber":108,"slug":154,"lessons":155},"Graphs","graphs",[156,163,168,173,178,183,188,193,199],{"title":157,"path":158,"lessonNumber":6,"topics":159,"summary":162},"Graph Representations and Traversal","\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal",[160,161],"Graph Representations","Graph Traversal","A graph captures _relationships_ — who connects to whom. We fix the vocabulary, weigh the two standard representations (adjacency list versus matrix), then meet the two explorations you'll use constantly: breadth-first search, which finds shortest paths by number of edges, and depth-first search, whose discovery and finish times reveal a graph's hidden structure. Both run in $O(V + E)$.",{"title":164,"path":165,"lessonNumber":18,"topics":166,"summary":167},"Topological Sort and Strong Connectivity","\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc",[161],"Directed acyclic graphs model dependencies: tasks that must precede other tasks. A _topological order_ lays such a graph out in a line so every edge points forward, and depth-first finish times hand it to us almost for free. We then ask the harder question for graphs _with_ cycles: which vertices can reach each other? The answer is the strongly connected components, found by a two-pass DFS.",{"title":169,"path":170,"lessonNumber":24,"topics":171,"summary":172},"Minimum Spanning Trees","\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees",[169],"Given a weighted network, how do we connect everything as cheaply as possible? The answer is a minimum spanning tree. One lemma, the cut property, justifies _every_ correct MST algorithm, and from it two famous greedy methods fall out: Kruskal's, which grows a forest edge by edge with a union-find structure, and Prim's, which grows a single tree using a priority queue.",{"title":174,"path":175,"lessonNumber":73,"topics":176,"summary":177},"Shortest Paths","\u002Falgorithms\u002Fgraphs\u002Fshortest-paths",[174],"Finding the cheapest route through a weighted network is one of the most-used algorithms in computing. A single operation — _relaxation_ — underlies them all. Dijkstra's algorithm solves the non-negative case greedily; Bellman-Ford handles negative edges and detects negative cycles; and Floyd-Warshall finds the shortest path between _every_ pair of vertices.",{"title":179,"path":180,"lessonNumber":102,"topics":181,"summary":182},"Network Flow","\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow",[179],"How much can flow through a network from source to sink? Max-flow is a surprisingly general model — once you see a problem as flow, a whole toolbox opens up. We build flow networks, find maximum flows by repeatedly pushing along augmenting paths in the residual graph, prove the max-flow min-cut theorem, and watch bipartite matching fall out as a special case.",{"title":184,"path":185,"lessonNumber":108,"topics":186,"summary":187},"Bridges & Articulation Points","\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points",[153],"A **bridge** is an edge whose removal disconnects the graph; an **articulation point** is a vertex whose removal does. Both are single points of failure in a network. A single depth-first search computes discovery times and **low-links**, and two local criteria — $low[v] > disc[u]$ for bridges, $low[v] \\ge disc[u]$ for cut vertices — find them all in $O(V+E)$.",{"title":189,"path":190,"lessonNumber":116,"topics":191,"summary":192},"Lowest Common Ancestor & Binary Lifting","\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor",[153],"Given a rooted tree, the lowest common ancestor of $u$ and $v$ is the deepest node that is an ancestor of both. A naive walk answers one query in $O(h)$; **binary lifting** precomputes the $2^k$-th ancestor of every node in $O(n\\log n)$, then answers $k$-th-ancestor and LCA queries in $O(\\log n)$ each. We derive both jumps, apply them to tree distance, and compare against the Euler-tour + RMQ and Tarjan offline alternatives.",{"title":194,"path":195,"lessonNumber":196,"topics":197,"summary":198},"2-SAT via Implication Graphs","\u002Falgorithms\u002Fgraphs\u002Ftwo-sat",8,[153],"A boolean formula whose every clause has exactly two literals can be solved in _linear_ time — even though its three-literal cousin is NP-complete. The trick is to read each clause as a pair of implications, build a directed graph on the $2n$ literals, and ask a question we already know how to answer: which literals share a strongly connected component? The formula is satisfiable iff no variable lands in the same SCC as its own negation, and the SCCs' topological order hands us a satisfying assignment for free.",{"title":200,"path":201,"lessonNumber":202,"topics":203,"summary":204},"Eulerian Tours","\u002Falgorithms\u002Fgraphs\u002Feulerian-tours",9,[153],"An **Eulerian tour** uses every _edge_ of a graph exactly once. We give the exact parity and balance conditions under which one exists (even degree for undirected graphs, in-degree equal to out-degree for directed) and Hierholzer's $O(E)$ algorithm that constructs one by splicing closed sub-tours. We contrast this sharply with the **Hamiltonian** problem (visit every _vertex_ once), which is NP-complete: visiting edges is easy, visiting vertices is hard.",{"module":206,"moduleNumber":116,"slug":207,"lessons":208},"Greedy Algorithms","greedy",[209,214,220,225],{"title":210,"path":211,"lessonNumber":6,"topics":212,"summary":213},"The Greedy Method","\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method",[206],"A greedy algorithm builds a solution one locally-best choice at a time and never looks back. We pin down the two properties that make this work — the greedy-choice property and optimal substructure — prove the canonical activity-selection algorithm correct with an exchange argument, watch greedy fail spectacularly on the 0\u002F1 knapsack, and glimpse matroids as the theory that says exactly when greed is good.",{"title":215,"path":216,"lessonNumber":18,"topics":217,"summary":219},"Scheduling & Interval Partitioning","\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals",[218],"Greedy","Three classic scheduling problems all yield to greedy algorithms — and all three turn on a single design decision: which key to sort by. Interval scheduling sorts by **finish** time to pack the most compatible jobs; interval partitioning sorts by **start** time and proves the rooms needed equal the maximum overlap **depth**; minimizing maximum lateness sorts by **deadline** and is justified by an adjacent-swap exchange argument.",{"title":221,"path":222,"lessonNumber":24,"topics":223,"summary":224},"Huffman Codes","\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes",[206],"Huffman coding is the greedy method's most beautiful application: it builds a provably optimal prefix-free binary code by repeatedly merging the two least frequent symbols. We develop prefix-free codes as binary trees, give the algorithm with a priority queue, build a Huffman tree from example frequencies, prove optimality with the same greedy-choice-plus-substructure argument, and pin the running time at $O(n\\log n)$.",{"title":226,"path":227,"lessonNumber":73,"topics":228,"summary":229},"Matroids & Exchange Arguments","\u002Falgorithms\u002Fgreedy\u002Fmatroids",[218],"The capstone of the greedy module: _why_ and _when_ a greedy algorithm is provably optimal. We recap the two correctness templates — **greedy-stays-ahead** and the **exchange argument** — then meet the **matroid** $M=(S,\\mathcal{I})$, an abstraction whose **exchange property** is exactly the structure greedy needs. The matroid–greedy theorem says sorting by weight and taking what stays independent yields a maximum-weight basis _if and only if_ the structure is a matroid. Kruskal's MST is the canonical instance; 0\u002F1 knapsack and TSP are the canonical failures.",{"module":231,"moduleNumber":196,"slug":232,"lessons":233},"Dynamic Programming","dynamic-programming",[234,239,245,250,255,260,265,270,275,280],{"title":235,"path":236,"lessonNumber":6,"topics":237,"summary":238},"Principles of Dynamic Programming","\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples",[231,26],"Dynamic programming is recursion with memory: when a recursive solution re-solves the same subproblems again and again, we solve each one once and store the answer. We pin down the two structural conditions that make this work — overlapping subproblems and optimal substructure — contrast top-down memoization with bottom-up tabulation, and distil the whole method into a five-step recipe.",{"title":240,"path":241,"lessonNumber":18,"topics":242,"summary":244},"Sequence Alignment & LCS","\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp",[231,243],"String Structures","Two strings can be compared by asking how much of one survives inside the other. The longest common subsequence (LCS) and edit distance are the two classic answers, and they are the _same_ dynamic program wearing different costs. We derive the LCS recurrence by examining the last characters, fill a worked DP table, reconstruct the subsequence, and then show edit distance as the identical $\\Theta(mn)$ pattern.",{"title":246,"path":247,"lessonNumber":24,"topics":248,"summary":249},"Longest Increasing Subsequence","\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence",[231],"Given a sequence of numbers, how long is its longest strictly increasing subsequence? A first dynamic program indexes subproblems by the element each subsequence _ends at_, giving an $O(n^2)$ solution with parent-pointer reconstruction. A sharper idea, the patience-sorting _tails_ array searched by binary search, drops the time to $O(n\\log n)$. We then fold in the variants: non-decreasing, counting, Russian-doll envelopes, and bitonic.",{"title":251,"path":252,"lessonNumber":73,"topics":253,"summary":254},"Knapsack & Subset Problems","\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack",[231],"We start from $\\textsc{Subset-sum}$ — does some sublist hit a target $t$? — and its include\u002Fexclude recurrence over a boolean table $A(i, u)$, then bolt on values to get 0\u002F1 knapsack as the same machine with $\\lor$ promoted to $\\max$. We fill both tables, recover the chosen items, and confront the surprise that the $\\Theta(nt)$ running time is only _pseudo-polynomial_ — exponential in the bit length $b$, and unimprovable unless $\\mathrm{P}=\\mathrm{NP}$ since subset-sum is $\\textsc{NP-complete}$. The fractional variant reveals the sharp line between greedy and dynamic programming.",{"title":256,"path":257,"lessonNumber":102,"topics":258,"summary":259},"Coin Change & Unbounded Knapsack","\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded",[231],"The previous lesson let each item be taken at most once. Drop that cap — items may be reused _any number of times_ — and the 0\u002F1 knapsack collapses from a two-dimensional table to a one-dimensional one, because there is no longer a prefix of \"already-used\" items to track. We meet **unbounded knapsack**, then its most famous instance, **coin change**: the minimum-coins recurrence $C[a] = 1 + \\min_c C[a-c]$, and the counting variant where the _order of the loops_ decides whether you count unordered combinations or ordered sequences — the classic bug. Greed fails in general but works for canonical coin systems.",{"title":261,"path":262,"lessonNumber":108,"topics":263,"summary":264},"Interval DP","\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp",[231],"Many problems ask for the best way to combine a contiguous range of items, and the answer is a dynamic program over subintervals $[i,j]$ that chooses a split point $k$. We derive the pattern from matrix-chain multiplication — parenthesising a product to minimize scalar multiplications in $O(n^3)$ — distil it into a reusable template filled by increasing interval length, and then meet its sharpest variant: the \"last operation\" trick behind Burst Balloons and cutting a stick, where fixing the _last_ move (not the first) makes the two sides independent.",{"title":266,"path":267,"lessonNumber":116,"topics":268,"summary":269},"Dynamic Programming on Trees","\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp",[231],"When the subproblems of a dynamic program are _rooted subtrees_, a single post-order DFS solves the whole thing in $O(n)$: each node combines the already-computed answers of its children. We meet the archetype — maximum-weight independent set on a tree — then the \"path through a node\" pattern behind tree diameter and maximum path sum, and finally **rerooting**, which computes a per-node answer for _every_ node as root in $O(n)$ with two passes.",{"title":271,"path":272,"lessonNumber":196,"topics":273,"summary":274},"Bitmask DP","\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp",[231],"When a subproblem depends not on an index or a prefix but on _which subset_ of a small ground set has been used, we can encode that subset as the bits of an integer and index a DP table by it. With $n \\le \\sim 20$ the $2^n$ subsets fit in a table, turning $\\Theta(n!)$ brute force into $O(2^n \\cdot \\text{poly}(n))$. We meet the bit tricks, the Held–Karp TSP archetype, assignment by mask, subset-sum partitioning, and submask enumeration with its $3^n$ bound.",{"title":276,"path":277,"lessonNumber":202,"topics":278,"summary":279},"DP Optimizations","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations",[231],"A correct DP recurrence is only half the battle; its naive evaluation is often a factor of $n$ slower than necessary. This capstone surveys five techniques, monotonic-queue, the convex hull trick, divide-and-conquer optimization, Knuth's optimization, and SOS DP, that each exploit _structure in the transition_ (a sliding window, linear costs, monotone optimal splits, the quadrangle inequality, or subset lattices) to shave an $O(n)$, $O(\\log n)$, or worse factor off the running time.",{"title":281,"path":282,"lessonNumber":283,"topics":284,"summary":285},"Dynamic Programming on Graphs","\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs",10,[231],"Many graph algorithms are dynamic programs in disguise: the subproblem is the _best value reachable under a restricted resource_ — intermediate vertices allowed, edges allowed, or a topological prefix — and edge _relaxation_ is the DP transition. We frame Floyd–Warshall as the archetype ($O(V^3)$ all-pairs shortest paths), Bellman–Ford as a DP over path length (the at-most-$K$-stops variant), DAG-DP in topological order ($O(V+E)$), and Warshall's transitive closure as the boolean analog.",{"module":287,"moduleNumber":202,"slug":288,"lessons":289},"Backtracking & Search","backtracking",[290,296,301],{"title":291,"path":292,"lessonNumber":6,"topics":293,"summary":295},"Backtracking: Subsets, Permutations & Combinations","\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals",[294],"Backtracking","Backtracking builds a solution one choice at a time and abandons a partial solution the moment it cannot be completed, exploring a state-space tree by depth-first search. We meet the universal choose\u002Fexplore\u002Fun-choose template, derive the canonical enumerations — subsets ($2^n$), permutations ($n!$), and combinations ($\\binom{n}{k}$) — handle duplicate elements by skipping equal siblings, and see how pruning turns an exponential search into a tractable one.",{"title":297,"path":298,"lessonNumber":18,"topics":299,"summary":300},"Constraint Search: N-Queens & Sudoku","\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search",[294],"Many hard puzzles are **constraint satisfaction problems**: assign each variable a value from its domain so that every constraint holds. Backtracking solves them by assigning variables one at a time and rejecting a partial assignment the instant a constraint breaks. We make the rejection cheap — $O(1)$ conflict checks for N-Queens via column and diagonal sets — and prune harder with **forward checking**, **MRV** ordering, and **constraint propagation**, which is what lets an exponential search actually finish.",{"title":302,"path":303,"lessonNumber":24,"topics":304,"summary":305},"Branch & Bound and Meet in the Middle","\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound",[294],"Plain backtracking prunes a search tree by _feasibility_; for _optimization_ problems we can prune far more aggressively by _value_. **Branch and bound** keeps the best complete solution found so far and discards any partial solution whose optimistic bound cannot beat it. **Meet in the middle** splits the instance in two, enumerates each half, and recombines by binary search — turning $2^n$ into $O(2^{n\u002F2}\\,n)$ and pushing exact search out to $n \\approx 40$.",{"module":307,"moduleNumber":283,"slug":308,"lessons":309},"Mathematical Algorithms","mathematical-algorithms",[310,316,321,326],{"title":311,"path":312,"lessonNumber":6,"topics":313,"summary":315},"Number Theory: GCD & Modular Arithmetic","\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics",[314],"Number Theory","This lesson opens the mathematical-algorithms module with the bedrock of computational number theory. We prove Euclid's recurrence $\\gcd(a,b)=\\gcd(b,\\,a\\bmod b)$ and its $O(\\log\\min(a,b))$ running time, extend it to recover Bézout coefficients $x,y$ with $ax+by=\\gcd(a,b)$, and build modular arithmetic on residue classes — including when a modular inverse $a^{-1}\\bmod m$ exists and how to compute it.",{"title":317,"path":318,"lessonNumber":18,"topics":319,"summary":320},"Modular Exponentiation & Primality","\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality",[314],"Computing $a^n \\bmod m$ naively costs $n$ multiplications; **repeated squaring** does it in $O(\\log n)$ by reading the bits of the exponent. We use this routine to state **Fermat's little theorem** (and the modular inverse it gives), then to test primality — trial division, the probabilistic **Fermat** and **Miller–Rabin** tests, and the deterministic witness set that settles primality for every 64-bit number.",{"title":322,"path":323,"lessonNumber":24,"topics":324,"summary":325},"Sieves & Factorization","\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization",[314],"The previous lesson tested one number for primality; here we ask for _all_ primes up to $n$ at once. The **sieve of Eratosthenes** cross-cuts composites in $O(n\\log\\log n)$, and a **linear sieve** does it in $O(n)$ while recording each number's **smallest prime factor**, which then factors any $x \\le n$ in $O(\\log x)$. From a factorization $x = \\prod p_i^{e_i}$ the multiplicative functions $\\tau$, $\\sigma$, and Euler's totient $\\varphi$ fall out immediately.",{"title":327,"path":328,"lessonNumber":73,"topics":329,"summary":330},"Combinatorics & Counting","\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics",[314],"Counting is the arithmetic of finite sets. We build up from permutations $n!$ and combinations $\\binom{n}{k}$, prove Pascal's rule by a bijection, and count multisets with stars and bars. The practical core is computing $\\binom{n}{k}\\bmod p$ in $O(1)$ from precomputed factorials and inverse factorials. We close with inclusion–exclusion and the Chinese Remainder Theorem, both of which lean on the modular inverse from the previous lesson.",{"module":332,"moduleNumber":333,"slug":334,"lessons":335},"Computational Geometry",11,"computational-geometry",[336,342,347],{"title":337,"path":338,"lessonNumber":6,"topics":339,"summary":341},"Geometric Primitives & Orientation","\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives",[340],"Geometry","Computational geometry is built on a single reliable primitive — the **orientation test**, a sign of a cross product that tells whether three points turn left, right, or lie collinear. From points-as-vectors and the dot and cross products we derive orientation, segment intersection, the shoelace area formula, and point-in-polygon tests, keeping all arithmetic **exact and integer** so that no floating-point rounding can corrupt a sign.",{"title":343,"path":344,"lessonNumber":18,"topics":345,"summary":346},"Convex Hull","\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull",[340],"The convex hull is the smallest convex polygon enclosing a point set — the rubber band snapped around the nails. We build it with Andrew's monotone chain, sorting by $(x,y)$ and sweeping a lower and upper hull while popping any non-left turn via the orientation primitive, in $O(n\\log n)$. A reduction from sorting shows that bound is optimal, and the hull unlocks diameter, smallest enclosing rectangle, and more through rotating calipers.",{"title":348,"path":349,"lessonNumber":24,"topics":350,"summary":351},"Sweep-Line Algorithms","\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line",[340],"The plane-sweep paradigm turns a static $2$-D geometry problem into a dynamic $1$-D ordered-set problem: a vertical line sweeps left to right, stopping at an $x$-sorted **event queue** while a balanced-BST **status structure** tracks the objects it currently crosses, ordered by $y$. We derive Bentley–Ottmann segment intersection in $O((n+k)\\log n)$, recover closest-pair in $O(n\\log n)$, and reduce skyline, rectangle-area, and overlap problems to $\\pm1$ event sweeps.",{"module":353,"moduleNumber":354,"slug":355,"lessons":356},"Intractability",12,"intractability",[357,363,367],{"title":358,"path":359,"lessonNumber":6,"topics":360,"summary":362},"P, NP, and Reductions","\u002Falgorithms\u002Fintractability\u002Fp-np-reductions",[361],"NP-Completeness","Most problems we have met so far have fast algorithms. A vast and important family seemingly does not. This lesson builds the vocabulary for that divide: decision problems, the class $\\mathsf{P}$ of problems we can solve quickly, the class $\\mathsf{NP}$ of problems whose solutions we can _check_ quickly, and polynomial-time reductions, the tool that lets us compare the difficulty of two problems without solving either.",{"title":361,"path":364,"lessonNumber":18,"topics":365,"summary":366},"\u002Falgorithms\u002Fintractability\u002Fnp-completeness",[361],"Some problems in $\\mathsf{NP}$ are universally hardest: every other problem in $\\mathsf{NP}$ reduces to them. This lesson defines $\\mathsf{NP}$-hard and $\\mathsf{NP}$-complete, states the Cook–Levin theorem that anchors the whole edifice on **SAT**, walks the web of reductions that grows from it, and gives the four-step recipe for proving a brand-new problem $\\mathsf{NP}$-complete.",{"title":368,"path":369,"lessonNumber":24,"topics":370,"summary":373},"Coping with NP-Hardness","\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness",[371,372],"Approximation","Heuristics","Proving a problem $\\mathsf{NP}$-hard is the beginning, not the end. The world still needs answers. This lesson surveys the four honest responses to hardness: approximation algorithms with a provable ratio (worked through a 2-approximation for vertex cover), heuristics and local search, exact exponential methods like branch and bound, and exploiting special structure in the instances you actually face.",{"id":375,"title":337,"blurb":376,"body":377,"description":12983,"extension":12984,"meta":12985,"module":332,"navigation":12987,"path":338,"practice":12988,"rawbody":13003,"readingTime":13004,"seo":13009,"sources":13010,"status":13017,"stem":13018,"summary":341,"topics":13019,"__hash__":13020},"course\u002F01.algorithms\u002F11.computational-geometry\u002F01.geometric-primitives.md","",{"type":378,"value":379,"toc":12972},"minimark",[380,407,529,534,880,1534,1673,1677,1684,2131,2300,2766,3567,3916,3920,3927,4350,4895,4899,4930,5561,5616,5833,6171,6391,6441,6445,6726,7056,7233,7254,7879,7934,8409,8413,8608,9447,9779,10105,10127,10454,10458,10716,10881,11334,11703,11707,12883,12968],[381,382,383,384,388,389,393,394,397,398,401,402,406],"p",{},"This lesson opens the ",[385,386,387],"strong",{},"computational geometry"," module, where the objects are\npoints, segments, and polygons in the plane rather than numbers or graphs. The\nalgorithms ahead, including ",[390,391,392],"a",{"href":344},"convex hulls",",\n",[390,395,396],{"href":349},"sweep-line intersection",", and\n",[390,399,400],{"href":46},"closest pairs",", look involved, but\nthey nearly all rest on one tiny operation asked over and over:\n",[403,404,405],"em",{},"given three points, does the path through them turn left or right?"," Get that\nprimitive exactly right and the rest is bookkeeping; get it subtly wrong and\nevery structure built on top inherits the error.",[381,408,409,410,413,414,417,418,491,492,495,496,499,500,509,510,528],{},"The central design decision of this lesson is therefore ",[385,411,412],{},"exact arithmetic",".\nThe natural geometric quantities (angles, lengths, slopes) are irrational and\nforce floating point, where a quantity that ",[403,415,416],{},"should"," be zero comes out as\n",[419,420,423],"span",{"className":421},[422],"katex",[419,424,428],{"className":425,"ariaHidden":427},[426],"katex-html","true",[419,429,432,437,442],{"className":430},[431],"base",[419,433],{"className":434,"style":436},[435],"strut","height:0.8141em;",[419,438,441],{"className":439},[440],"mord","1",[419,443,445,449],{"className":444},[440],[419,446,448],{"className":447},[440],"0",[419,450,453],{"className":451},[452],"msupsub",[419,454,457],{"className":455},[456],"vlist-t",[419,458,461],{"className":459},[460],"vlist-r",[419,462,465],{"className":463,"style":436},[464],"vlist",[419,466,468,473],{"style":467},"top:-3.063em;margin-right:0.05em;",[419,469],{"className":470,"style":472},[471],"pstrut","height:2.7em;",[419,474,480],{"className":475},[476,477,478,479],"sizing","reset-size6","size3","mtight",[419,481,483,487],{"className":482},[440,479],[419,484,486],{"className":485},[440,479],"−",[419,488,490],{"className":489},[440,479],"16"," and a collinearity test flips the wrong way. We avoid them. With\ninteger input coordinates, the orientation and area primitives below are\n",[385,493,494],{},"polynomials in the coordinates",", so they evaluate to ",[403,497,498],{},"exact integers"," and\ntheir signs are never in doubt.",[501,502,503],"sup",{},[390,504,441],{"href":505,"ariaDescribedBy":506,"dataFootnoteRef":376,"id":508},"#user-content-fn-clrs-primitives",[507],"footnote-label","user-content-fnref-clrs-primitives"," Slopes, square roots, and\n",[419,511,513],{"className":512},[422],[419,514,516],{"className":515,"ariaHidden":427},[426],[419,517,519,523],{"className":518},[431],[419,520],{"className":521,"style":522},[435],"height:0.6151em;",[419,524,527],{"className":525},[526],"mop","arctan"," never appear.",[530,531,533],"h2",{"id":532},"points-as-vectors","Points as vectors",[381,535,536,537,604,605,736,737,862,863,879],{},"We identify a point ",[419,538,540],{"className":539},[422],[419,541,543,569],{"className":542,"ariaHidden":427},[426],[419,544,546,550,556,561,566],{"className":545},[431],[419,547],{"className":548,"style":549},[435],"height:0.6833em;",[419,551,555],{"className":552,"style":554},[440,553],"mathnormal","margin-right:0.1389em;","P",[419,557],{"className":558,"style":560},[559],"mspace","margin-right:0.2778em;",[419,562,565],{"className":563},[564],"mrel","=",[419,567],{"className":568,"style":560},[559],[419,570,572,576,581,585,590,594,599],{"className":571},[431],[419,573],{"className":574,"style":575},[435],"height:1em;vertical-align:-0.25em;",[419,577,580],{"className":578},[579],"mopen","(",[419,582,584],{"className":583},[440,553],"x",[419,586,589],{"className":587},[588],"mpunct",",",[419,591],{"className":592,"style":593},[559],"margin-right:0.1667em;",[419,595,598],{"className":596,"style":597},[440,553],"margin-right:0.0359em;","y",[419,600,603],{"className":601},[602],"mclose",")"," with the vector from the origin to it, which\nlets us do arithmetic on geometry. For points ",[419,606,608],{"className":607},[422],[419,609,611,630],{"className":610,"ariaHidden":427},[426],[419,612,614,617,621,624,627],{"className":613},[431],[419,615],{"className":616,"style":549},[435],[419,618,620],{"className":619},[440,553],"A",[419,622],{"className":623,"style":560},[559],[419,625,565],{"className":626},[564],[419,628],{"className":629,"style":560},[559],[419,631,633,637,640,686,689,692,733],{"className":632},[431],[419,634],{"className":635,"style":636},[435],"height:1.0361em;vertical-align:-0.2861em;",[419,638,580],{"className":639},[579],[419,641,643,646],{"className":642},[440],[419,644,390],{"className":645},[440,553],[419,647,649],{"className":648},[452],[419,650,653,677],{"className":651},[456,652],"vlist-t2",[419,654,656,672],{"className":655},[460],[419,657,660],{"className":658,"style":659},[464],"height:0.1514em;",[419,661,663,666],{"style":662},"top:-2.55em;margin-left:0em;margin-right:0.05em;",[419,664],{"className":665,"style":472},[471],[419,667,669],{"className":668},[476,477,478,479],[419,670,584],{"className":671},[440,553,479],[419,673,676],{"className":674},[675],"vlist-s","​",[419,678,680],{"className":679},[460],[419,681,684],{"className":682,"style":683},[464],"height:0.15em;",[419,685],{},[419,687,589],{"className":688},[588],[419,690],{"className":691,"style":593},[559],[419,693,695,698],{"className":694},[440],[419,696,390],{"className":697},[440,553],[419,699,701],{"className":700},[452],[419,702,704,724],{"className":703},[456,652],[419,705,707,721],{"className":706},[460],[419,708,710],{"className":709,"style":659},[464],[419,711,712,715],{"style":662},[419,713],{"className":714,"style":472},[471],[419,716,718],{"className":717},[476,477,478,479],[419,719,598],{"className":720,"style":597},[440,553,479],[419,722,676],{"className":723},[675],[419,725,727],{"className":726},[460],[419,728,731],{"className":729,"style":730},[464],"height:0.2861em;",[419,732],{},[419,734,603],{"className":735},[602]," and\n",[419,738,740],{"className":739},[422],[419,741,743,763],{"className":742,"ariaHidden":427},[426],[419,744,746,749,754,757,760],{"className":745},[431],[419,747],{"className":748,"style":549},[435],[419,750,753],{"className":751,"style":752},[440,553],"margin-right:0.0502em;","B",[419,755],{"className":756,"style":560},[559],[419,758,565],{"className":759},[564],[419,761],{"className":762,"style":560},[559],[419,764,766,769,772,813,816,819,859],{"className":765},[431],[419,767],{"className":768,"style":636},[435],[419,770,580],{"className":771},[579],[419,773,775,779],{"className":774},[440],[419,776,778],{"className":777},[440,553],"b",[419,780,782],{"className":781},[452],[419,783,785,805],{"className":784},[456,652],[419,786,788,802],{"className":787},[460],[419,789,791],{"className":790,"style":659},[464],[419,792,793,796],{"style":662},[419,794],{"className":795,"style":472},[471],[419,797,799],{"className":798},[476,477,478,479],[419,800,584],{"className":801},[440,553,479],[419,803,676],{"className":804},[675],[419,806,808],{"className":807},[460],[419,809,811],{"className":810,"style":683},[464],[419,812],{},[419,814,589],{"className":815},[588],[419,817],{"className":818,"style":593},[559],[419,820,822,825],{"className":821},[440],[419,823,778],{"className":824},[440,553],[419,826,828],{"className":827},[452],[419,829,831,851],{"className":830},[456,652],[419,832,834,848],{"className":833},[460],[419,835,837],{"className":836,"style":659},[464],[419,838,839,842],{"style":662},[419,840],{"className":841,"style":472},[471],[419,843,845],{"className":844},[476,477,478,479],[419,846,598],{"className":847,"style":597},[440,553,479],[419,849,676],{"className":850},[675],[419,852,854],{"className":853},[460],[419,855,857],{"className":856,"style":730},[464],[419,858],{},[419,860,603],{"className":861},[602]," and a scalar ",[419,864,866],{"className":865},[422],[419,867,869],{"className":868,"ariaHidden":427},[426],[419,870,872,875],{"className":871},[431],[419,873],{"className":874,"style":522},[435],[419,876,878],{"className":877},[440,553],"t",":",[419,881,884],{"className":882},[883],"katex-display",[419,885,887],{"className":886},[422],[419,888,890,912,930,988,1093,1164,1182,1240,1344,1417],{"className":889,"ariaHidden":427},[426],[419,891,893,897,900,904,909],{"className":892},[431],[419,894],{"className":895,"style":896},[435],"height:0.7667em;vertical-align:-0.0833em;",[419,898,620],{"className":899},[440,553],[419,901],{"className":902,"style":903},[559],"margin-right:0.2222em;",[419,905,908],{"className":906},[907],"mbin","+",[419,910],{"className":911,"style":903},[559],[419,913,915,918,921,924,927],{"className":914},[431],[419,916],{"className":917,"style":549},[435],[419,919,753],{"className":920,"style":752},[440,553],[419,922],{"className":923,"style":560},[559],[419,925,565],{"className":926},[564],[419,928],{"className":929,"style":560},[559],[419,931,933,936,939,979,982,985],{"className":932},[431],[419,934],{"className":935,"style":575},[435],[419,937,580],{"className":938},[579],[419,940,942,945],{"className":941},[440],[419,943,390],{"className":944},[440,553],[419,946,948],{"className":947},[452],[419,949,951,971],{"className":950},[456,652],[419,952,954,968],{"className":953},[460],[419,955,957],{"className":956,"style":659},[464],[419,958,959,962],{"style":662},[419,960],{"className":961,"style":472},[471],[419,963,965],{"className":964},[476,477,478,479],[419,966,584],{"className":967},[440,553,479],[419,969,676],{"className":970},[675],[419,972,974],{"className":973},[460],[419,975,977],{"className":976,"style":683},[464],[419,978],{},[419,980],{"className":981,"style":903},[559],[419,983,908],{"className":984},[907],[419,986],{"className":987,"style":903},[559],[419,989,991,995,1035,1038,1041,1044,1084,1087,1090],{"className":990},[431],[419,992],{"className":993,"style":994},[435],"height:0.9805em;vertical-align:-0.2861em;",[419,996,998,1001],{"className":997},[440],[419,999,778],{"className":1000},[440,553],[419,1002,1004],{"className":1003},[452],[419,1005,1007,1027],{"className":1006},[456,652],[419,1008,1010,1024],{"className":1009},[460],[419,1011,1013],{"className":1012,"style":659},[464],[419,1014,1015,1018],{"style":662},[419,1016],{"className":1017,"style":472},[471],[419,1019,1021],{"className":1020},[476,477,478,479],[419,1022,584],{"className":1023},[440,553,479],[419,1025,676],{"className":1026},[675],[419,1028,1030],{"className":1029},[460],[419,1031,1033],{"className":1032,"style":683},[464],[419,1034],{},[419,1036,589],{"className":1037},[588],[419,1039],{"className":1040,"style":560},[559],[419,1042],{"className":1043,"style":593},[559],[419,1045,1047,1050],{"className":1046},[440],[419,1048,390],{"className":1049},[440,553],[419,1051,1053],{"className":1052},[452],[419,1054,1056,1076],{"className":1055},[456,652],[419,1057,1059,1073],{"className":1058},[460],[419,1060,1062],{"className":1061,"style":659},[464],[419,1063,1064,1067],{"style":662},[419,1065],{"className":1066,"style":472},[471],[419,1068,1070],{"className":1069},[476,477,478,479],[419,1071,598],{"className":1072,"style":597},[440,553,479],[419,1074,676],{"className":1075},[675],[419,1077,1079],{"className":1078},[460],[419,1080,1082],{"className":1081,"style":730},[464],[419,1083],{},[419,1085],{"className":1086,"style":903},[559],[419,1088,908],{"className":1089},[907],[419,1091],{"className":1092,"style":903},[559],[419,1094,1096,1099,1139,1142,1145,1149,1152,1155,1158,1161],{"className":1095},[431],[419,1097],{"className":1098,"style":636},[435],[419,1100,1102,1105],{"className":1101},[440],[419,1103,778],{"className":1104},[440,553],[419,1106,1108],{"className":1107},[452],[419,1109,1111,1131],{"className":1110},[456,652],[419,1112,1114,1128],{"className":1113},[460],[419,1115,1117],{"className":1116,"style":659},[464],[419,1118,1119,1122],{"style":662},[419,1120],{"className":1121,"style":472},[471],[419,1123,1125],{"className":1124},[476,477,478,479],[419,1126,598],{"className":1127,"style":597},[440,553,479],[419,1129,676],{"className":1130},[675],[419,1132,1134],{"className":1133},[460],[419,1135,1137],{"className":1136,"style":730},[464],[419,1138],{},[419,1140,603],{"className":1141},[602],[419,1143,589],{"className":1144},[588],[419,1146],{"className":1147,"style":1148},[559],"margin-right:2em;",[419,1150],{"className":1151,"style":593},[559],[419,1153,753],{"className":1154,"style":752},[440,553],[419,1156],{"className":1157,"style":903},[559],[419,1159,486],{"className":1160},[907],[419,1162],{"className":1163,"style":903},[559],[419,1165,1167,1170,1173,1176,1179],{"className":1166},[431],[419,1168],{"className":1169,"style":549},[435],[419,1171,620],{"className":1172},[440,553],[419,1174],{"className":1175,"style":560},[559],[419,1177,565],{"className":1178},[564],[419,1180],{"className":1181,"style":560},[559],[419,1183,1185,1188,1191,1231,1234,1237],{"className":1184},[431],[419,1186],{"className":1187,"style":575},[435],[419,1189,580],{"className":1190},[579],[419,1192,1194,1197],{"className":1193},[440],[419,1195,778],{"className":1196},[440,553],[419,1198,1200],{"className":1199},[452],[419,1201,1203,1223],{"className":1202},[456,652],[419,1204,1206,1220],{"className":1205},[460],[419,1207,1209],{"className":1208,"style":659},[464],[419,1210,1211,1214],{"style":662},[419,1212],{"className":1213,"style":472},[471],[419,1215,1217],{"className":1216},[476,477,478,479],[419,1218,584],{"className":1219},[440,553,479],[419,1221,676],{"className":1222},[675],[419,1224,1226],{"className":1225},[460],[419,1227,1229],{"className":1228,"style":683},[464],[419,1230],{},[419,1232],{"className":1233,"style":903},[559],[419,1235,486],{"className":1236},[907],[419,1238],{"className":1239,"style":903},[559],[419,1241,1243,1246,1286,1289,1292,1295,1335,1338,1341],{"className":1242},[431],[419,1244],{"className":1245,"style":994},[435],[419,1247,1249,1252],{"className":1248},[440],[419,1250,390],{"className":1251},[440,553],[419,1253,1255],{"className":1254},[452],[419,1256,1258,1278],{"className":1257},[456,652],[419,1259,1261,1275],{"className":1260},[460],[419,1262,1264],{"className":1263,"style":659},[464],[419,1265,1266,1269],{"style":662},[419,1267],{"className":1268,"style":472},[471],[419,1270,1272],{"className":1271},[476,477,478,479],[419,1273,584],{"className":1274},[440,553,479],[419,1276,676],{"className":1277},[675],[419,1279,1281],{"className":1280},[460],[419,1282,1284],{"className":1283,"style":683},[464],[419,1285],{},[419,1287,589],{"className":1288},[588],[419,1290],{"className":1291,"style":560},[559],[419,1293],{"className":1294,"style":593},[559],[419,1296,1298,1301],{"className":1297},[440],[419,1299,778],{"className":1300},[440,553],[419,1302,1304],{"className":1303},[452],[419,1305,1307,1327],{"className":1306},[456,652],[419,1308,1310,1324],{"className":1309},[460],[419,1311,1313],{"className":1312,"style":659},[464],[419,1314,1315,1318],{"style":662},[419,1316],{"className":1317,"style":472},[471],[419,1319,1321],{"className":1320},[476,477,478,479],[419,1322,598],{"className":1323,"style":597},[440,553,479],[419,1325,676],{"className":1326},[675],[419,1328,1330],{"className":1329},[460],[419,1331,1333],{"className":1332,"style":730},[464],[419,1334],{},[419,1336],{"className":1337,"style":903},[559],[419,1339,486],{"className":1340},[907],[419,1342],{"className":1343,"style":903},[559],[419,1345,1347,1350,1390,1393,1396,1399,1402,1405,1408,1411,1414],{"className":1346},[431],[419,1348],{"className":1349,"style":636},[435],[419,1351,1353,1356],{"className":1352},[440],[419,1354,390],{"className":1355},[440,553],[419,1357,1359],{"className":1358},[452],[419,1360,1362,1382],{"className":1361},[456,652],[419,1363,1365,1379],{"className":1364},[460],[419,1366,1368],{"className":1367,"style":659},[464],[419,1369,1370,1373],{"style":662},[419,1371],{"className":1372,"style":472},[471],[419,1374,1376],{"className":1375},[476,477,478,479],[419,1377,598],{"className":1378,"style":597},[440,553,479],[419,1380,676],{"className":1381},[675],[419,1383,1385],{"className":1384},[460],[419,1386,1388],{"className":1387,"style":730},[464],[419,1389],{},[419,1391,603],{"className":1392},[602],[419,1394,589],{"className":1395},[588],[419,1397],{"className":1398,"style":1148},[559],[419,1400],{"className":1401,"style":593},[559],[419,1403,878],{"className":1404},[440,553],[419,1406,620],{"className":1407},[440,553],[419,1409],{"className":1410,"style":560},[559],[419,1412,565],{"className":1413},[564],[419,1415],{"className":1416,"style":560},[559],[419,1418,1420,1423,1426,1429,1432,1472,1475,1478,1481,1484,1487,1527,1530],{"className":1419},[431],[419,1421],{"className":1422,"style":636},[435],[419,1424,580],{"className":1425},[579],[419,1427,878],{"className":1428},[440,553],[419,1430],{"className":1431,"style":593},[559],[419,1433,1435,1438],{"className":1434},[440],[419,1436,390],{"className":1437},[440,553],[419,1439,1441],{"className":1440},[452],[419,1442,1444,1464],{"className":1443},[456,652],[419,1445,1447,1461],{"className":1446},[460],[419,1448,1450],{"className":1449,"style":659},[464],[419,1451,1452,1455],{"style":662},[419,1453],{"className":1454,"style":472},[471],[419,1456,1458],{"className":1457},[476,477,478,479],[419,1459,584],{"className":1460},[440,553,479],[419,1462,676],{"className":1463},[675],[419,1465,1467],{"className":1466},[460],[419,1468,1470],{"className":1469,"style":683},[464],[419,1471],{},[419,1473,589],{"className":1474},[588],[419,1476],{"className":1477,"style":560},[559],[419,1479],{"className":1480,"style":593},[559],[419,1482,878],{"className":1483},[440,553],[419,1485],{"className":1486,"style":593},[559],[419,1488,1490,1493],{"className":1489},[440],[419,1491,390],{"className":1492},[440,553],[419,1494,1496],{"className":1495},[452],[419,1497,1499,1519],{"className":1498},[456,652],[419,1500,1502,1516],{"className":1501},[460],[419,1503,1505],{"className":1504,"style":659},[464],[419,1506,1507,1510],{"style":662},[419,1508],{"className":1509,"style":472},[471],[419,1511,1513],{"className":1512},[476,477,478,479],[419,1514,598],{"className":1515,"style":597},[440,553,479],[419,1517,676],{"className":1518},[675],[419,1520,1522],{"className":1521},[460],[419,1523,1525],{"className":1524,"style":730},[464],[419,1526],{},[419,1528,603],{"className":1529},[602],[419,1531,1533],{"className":1532},[440],".",[381,1535,1536,1537,1570,1571,1574,1575,1590,1591,1606,1607,1622,1623,1638,1639,1672],{},"The subtraction ",[419,1538,1540],{"className":1539},[422],[419,1541,1543,1561],{"className":1542,"ariaHidden":427},[426],[419,1544,1546,1549,1552,1555,1558],{"className":1545},[431],[419,1547],{"className":1548,"style":896},[435],[419,1550,753],{"className":1551,"style":752},[440,553],[419,1553],{"className":1554,"style":903},[559],[419,1556,486],{"className":1557},[907],[419,1559],{"className":1560,"style":903},[559],[419,1562,1564,1567],{"className":1563},[431],[419,1565],{"className":1566,"style":549},[435],[419,1568,620],{"className":1569},[440,553]," is the one that does the work: it is the ",[385,1572,1573],{},"displacement vector","\npointing from ",[419,1576,1578],{"className":1577},[422],[419,1579,1581],{"className":1580,"ariaHidden":427},[426],[419,1582,1584,1587],{"className":1583},[431],[419,1585],{"className":1586,"style":549},[435],[419,1588,620],{"className":1589},[440,553]," to ",[419,1592,1594],{"className":1593},[422],[419,1595,1597],{"className":1596,"ariaHidden":427},[426],[419,1598,1600,1603],{"className":1599},[431],[419,1601],{"className":1602,"style":549},[435],[419,1604,753],{"className":1605,"style":752},[440,553],", and almost every primitive below is phrased in terms of\nsuch difference vectors anchored at a common point. If ",[419,1608,1610],{"className":1609},[422],[419,1611,1613],{"className":1612,"ariaHidden":427},[426],[419,1614,1616,1619],{"className":1615},[431],[419,1617],{"className":1618,"style":549},[435],[419,1620,620],{"className":1621},[440,553],", ",[419,1624,1626],{"className":1625},[422],[419,1627,1629],{"className":1628,"ariaHidden":427},[426],[419,1630,1632,1635],{"className":1631},[431],[419,1633],{"className":1634,"style":549},[435],[419,1636,753],{"className":1637,"style":752},[440,553]," have integer\ncoordinates, so does ",[419,1640,1642],{"className":1641},[422],[419,1643,1645,1663],{"className":1644,"ariaHidden":427},[426],[419,1646,1648,1651,1654,1657,1660],{"className":1647},[431],[419,1649],{"className":1650,"style":896},[435],[419,1652,753],{"className":1653,"style":752},[440,553],[419,1655],{"className":1656,"style":903},[559],[419,1658,486],{"className":1659},[907],[419,1661],{"className":1662,"style":903},[559],[419,1664,1666,1669],{"className":1665},[431],[419,1667],{"className":1668,"style":549},[435],[419,1670,620],{"className":1671},[440,553],", and exactness is preserved by every one of these\noperations.",[530,1674,1676],{"id":1675},"the-dot-product-angle-and-projection","The dot product: angle and projection",[381,1678,1679,1680,1683],{},"The ",[385,1681,1682],{},"dot product"," of two vectors measures how much they point the same way:",[419,1685,1687],{"className":1686},[883],[419,1688,1690],{"className":1689},[422],[419,1691,1693,1761,1819,1915,2016],{"className":1692,"ariaHidden":427},[426],[419,1694,1696,1700,1751,1754,1758],{"className":1695},[431],[419,1697],{"className":1698,"style":1699},[435],"height:0.714em;",[419,1701,1704],{"className":1702},[440,1703],"accent",[419,1705,1707],{"className":1706},[456],[419,1708,1710],{"className":1709},[460],[419,1711,1713,1723],{"className":1712,"style":1699},[464],[419,1714,1716,1720],{"style":1715},"top:-3em;",[419,1717],{"className":1718,"style":1719},[471],"height:3em;",[419,1721,390],{"className":1722},[440,553],[419,1724,1725,1728],{"style":1715},[419,1726],{"className":1727,"style":1719},[471],[419,1729,1733],{"className":1730,"style":1732},[1731],"accent-body","left:-0.2355em;",[419,1734,1738],{"className":1735,"style":1737},[1736],"overlay","height:0.714em;width:0.471em;",[1739,1740,1747],"svg",{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","0.471em","0.714em","width:0.471em","0 0 471 714","xMinYMin",[1748,1749],"path",{"d":1750},"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",[419,1752],{"className":1753,"style":903},[559],[419,1755,1757],{"className":1756},[907],"⋅",[419,1759],{"className":1760,"style":903},[559],[419,1762,1764,1768,1804,1807,1810,1813,1816],{"className":1763},[431],[419,1765],{"className":1766,"style":1767},[435],"height:0.9774em;",[419,1769,1771],{"className":1770},[440,1703],[419,1772,1774],{"className":1773},[456],[419,1775,1777],{"className":1776},[460],[419,1778,1780,1788],{"className":1779,"style":1767},[464],[419,1781,1782,1785],{"style":1715},[419,1783],{"className":1784,"style":1719},[471],[419,1786,778],{"className":1787},[440,553],[419,1789,1791,1794],{"style":1790},"top:-3.2634em;",[419,1792],{"className":1793,"style":1719},[471],[419,1795,1797],{"className":1796,"style":1732},[1731],[419,1798,1800],{"className":1799,"style":1737},[1736],[1739,1801,1802],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,1803],{"d":1750},[419,1805],{"className":1806,"style":560},[559],[419,1808],{"className":1809,"style":560},[559],[419,1811,565],{"className":1812},[564],[419,1814],{"className":1815,"style":560},[559],[419,1817],{"className":1818,"style":560},[559],[419,1820,1822,1826,1866,1906,1909,1912],{"className":1821},[431],[419,1823],{"className":1824,"style":1825},[435],"height:0.8444em;vertical-align:-0.15em;",[419,1827,1829,1832],{"className":1828},[440],[419,1830,390],{"className":1831},[440,553],[419,1833,1835],{"className":1834},[452],[419,1836,1838,1858],{"className":1837},[456,652],[419,1839,1841,1855],{"className":1840},[460],[419,1842,1844],{"className":1843,"style":659},[464],[419,1845,1846,1849],{"style":662},[419,1847],{"className":1848,"style":472},[471],[419,1850,1852],{"className":1851},[476,477,478,479],[419,1853,584],{"className":1854},[440,553,479],[419,1856,676],{"className":1857},[675],[419,1859,1861],{"className":1860},[460],[419,1862,1864],{"className":1863,"style":683},[464],[419,1865],{},[419,1867,1869,1872],{"className":1868},[440],[419,1870,778],{"className":1871},[440,553],[419,1873,1875],{"className":1874},[452],[419,1876,1878,1898],{"className":1877},[456,652],[419,1879,1881,1895],{"className":1880},[460],[419,1882,1884],{"className":1883,"style":659},[464],[419,1885,1886,1889],{"style":662},[419,1887],{"className":1888,"style":472},[471],[419,1890,1892],{"className":1891},[476,477,478,479],[419,1893,584],{"className":1894},[440,553,479],[419,1896,676],{"className":1897},[675],[419,1899,1901],{"className":1900},[460],[419,1902,1904],{"className":1903,"style":683},[464],[419,1905],{},[419,1907],{"className":1908,"style":903},[559],[419,1910,908],{"className":1911},[907],[419,1913],{"className":1914,"style":903},[559],[419,1916,1918,1921,1961,2001,2004,2007,2010,2013],{"className":1917},[431],[419,1919],{"className":1920,"style":994},[435],[419,1922,1924,1927],{"className":1923},[440],[419,1925,390],{"className":1926},[440,553],[419,1928,1930],{"className":1929},[452],[419,1931,1933,1953],{"className":1932},[456,652],[419,1934,1936,1950],{"className":1935},[460],[419,1937,1939],{"className":1938,"style":659},[464],[419,1940,1941,1944],{"style":662},[419,1942],{"className":1943,"style":472},[471],[419,1945,1947],{"className":1946},[476,477,478,479],[419,1948,598],{"className":1949,"style":597},[440,553,479],[419,1951,676],{"className":1952},[675],[419,1954,1956],{"className":1955},[460],[419,1957,1959],{"className":1958,"style":730},[464],[419,1960],{},[419,1962,1964,1967],{"className":1963},[440],[419,1965,778],{"className":1966},[440,553],[419,1968,1970],{"className":1969},[452],[419,1971,1973,1993],{"className":1972},[456,652],[419,1974,1976,1990],{"className":1975},[460],[419,1977,1979],{"className":1978,"style":659},[464],[419,1980,1981,1984],{"style":662},[419,1982],{"className":1983,"style":472},[471],[419,1985,1987],{"className":1986},[476,477,478,479],[419,1988,598],{"className":1989,"style":597},[440,553,479],[419,1991,676],{"className":1992},[675],[419,1994,1996],{"className":1995},[460],[419,1997,1999],{"className":1998,"style":730},[464],[419,2000],{},[419,2002],{"className":2003,"style":560},[559],[419,2005],{"className":2006,"style":560},[559],[419,2008,565],{"className":2009},[564],[419,2011],{"className":2012,"style":560},[559],[419,2014],{"className":2015,"style":560},[559],[419,2017,2019,2023,2027,2062,2065,2068,2071,2106,2109,2112,2120,2123,2128],{"className":2018},[431],[419,2020],{"className":2021,"style":2022},[435],"height:1.2274em;vertical-align:-0.25em;",[419,2024,2026],{"className":2025},[440],"∣",[419,2028,2030],{"className":2029},[440,1703],[419,2031,2033],{"className":2032},[456],[419,2034,2036],{"className":2035},[460],[419,2037,2039,2047],{"className":2038,"style":1699},[464],[419,2040,2041,2044],{"style":1715},[419,2042],{"className":2043,"style":1719},[471],[419,2045,390],{"className":2046},[440,553],[419,2048,2049,2052],{"style":1715},[419,2050],{"className":2051,"style":1719},[471],[419,2053,2055],{"className":2054,"style":1732},[1731],[419,2056,2058],{"className":2057,"style":1737},[1736],[1739,2059,2060],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2061],{"d":1750},[419,2063,2026],{"className":2064},[440],[419,2066],{"className":2067,"style":593},[559],[419,2069,2026],{"className":2070},[440],[419,2072,2074],{"className":2073},[440,1703],[419,2075,2077],{"className":2076},[456],[419,2078,2080],{"className":2079},[460],[419,2081,2083,2091],{"className":2082,"style":1767},[464],[419,2084,2085,2088],{"style":1715},[419,2086],{"className":2087,"style":1719},[471],[419,2089,778],{"className":2090},[440,553],[419,2092,2093,2096],{"style":1790},[419,2094],{"className":2095,"style":1719},[471],[419,2097,2099],{"className":2098,"style":1732},[1731],[419,2100,2102],{"className":2101,"style":1737},[1736],[1739,2103,2104],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2105],{"d":1750},[419,2107,2026],{"className":2108},[440],[419,2110],{"className":2111,"style":593},[559],[419,2113,2115],{"className":2114},[526],[419,2116,2119],{"className":2117},[440,2118],"mathrm","cos",[419,2121],{"className":2122,"style":593},[559],[419,2124,2127],{"className":2125,"style":2126},[440,553],"margin-right:0.0278em;","θ",[419,2129,589],{"className":2130},[588],[381,2132,2133,2134,2150,2151,2271,2272,2299],{},"where ",[419,2135,2137],{"className":2136},[422],[419,2138,2140],{"className":2139,"ariaHidden":427},[426],[419,2141,2143,2147],{"className":2142},[431],[419,2144],{"className":2145,"style":2146},[435],"height:0.6944em;",[419,2148,2127],{"className":2149,"style":2126},[440,553]," is the angle between them. The second equality is the useful one\nin reverse: because ",[419,2152,2154],{"className":2153},[422],[419,2155,2157,2261],{"className":2156,"ariaHidden":427},[426],[419,2158,2160,2163,2166,2201,2204,2207,2210,2213,2248,2251,2254,2258],{"className":2159},[431],[419,2161],{"className":2162,"style":2022},[435],[419,2164,2026],{"className":2165},[440],[419,2167,2169],{"className":2168},[440,1703],[419,2170,2172],{"className":2171},[456],[419,2173,2175],{"className":2174},[460],[419,2176,2178,2186],{"className":2177,"style":1699},[464],[419,2179,2180,2183],{"style":1715},[419,2181],{"className":2182,"style":1719},[471],[419,2184,390],{"className":2185},[440,553],[419,2187,2188,2191],{"style":1715},[419,2189],{"className":2190,"style":1719},[471],[419,2192,2194],{"className":2193,"style":1732},[1731],[419,2195,2197],{"className":2196,"style":1737},[1736],[1739,2198,2199],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2200],{"d":1750},[419,2202,2026],{"className":2203},[440],[419,2205,589],{"className":2206},[588],[419,2208],{"className":2209,"style":593},[559],[419,2211,2026],{"className":2212},[440],[419,2214,2216],{"className":2215},[440,1703],[419,2217,2219],{"className":2218},[456],[419,2220,2222],{"className":2221},[460],[419,2223,2225,2233],{"className":2224,"style":1767},[464],[419,2226,2227,2230],{"style":1715},[419,2228],{"className":2229,"style":1719},[471],[419,2231,778],{"className":2232},[440,553],[419,2234,2235,2238],{"style":1790},[419,2236],{"className":2237,"style":1719},[471],[419,2239,2241],{"className":2240,"style":1732},[1731],[419,2242,2244],{"className":2243,"style":1737},[1736],[1739,2245,2246],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2247],{"d":1750},[419,2249,2026],{"className":2250},[440],[419,2252],{"className":2253,"style":560},[559],[419,2255,2257],{"className":2256},[564],">",[419,2259],{"className":2260,"style":560},[559],[419,2262,2264,2268],{"className":2263},[431],[419,2265],{"className":2266,"style":2267},[435],"height:0.6444em;",[419,2269,448],{"className":2270},[440],", the ",[385,2273,2274,2275],{},"sign of the dot product is the\nsign of ",[419,2276,2278],{"className":2277},[422],[419,2279,2281],{"className":2280,"ariaHidden":427},[426],[419,2282,2284,2287,2293,2296],{"className":2283},[431],[419,2285],{"className":2286,"style":2146},[435],[419,2288,2290],{"className":2289},[526],[419,2291,2119],{"className":2292},[440,2118],[419,2294],{"className":2295,"style":593},[559],[419,2297,2127],{"className":2298,"style":2126},[440,553],", so it classifies the angle without ever computing it.",[2301,2302,2304],"callout",{"type":2303},"lemma",[381,2305,2306,2309,2310,2357,2358,2405,2406,2409,2410,393,2526,2529,2530,2645,2646,2649,2650,1533],{},[385,2307,2308],{},"Fact (Acute-angle test)."," The angle between ",[419,2311,2313],{"className":2312},[422],[419,2314,2316],{"className":2315,"ariaHidden":427},[426],[419,2317,2319,2322],{"className":2318},[431],[419,2320],{"className":2321,"style":1699},[435],[419,2323,2325],{"className":2324},[440,1703],[419,2326,2328],{"className":2327},[456],[419,2329,2331],{"className":2330},[460],[419,2332,2334,2342],{"className":2333,"style":1699},[464],[419,2335,2336,2339],{"style":1715},[419,2337],{"className":2338,"style":1719},[471],[419,2340,390],{"className":2341},[440,553],[419,2343,2344,2347],{"style":1715},[419,2345],{"className":2346,"style":1719},[471],[419,2348,2350],{"className":2349,"style":1732},[1731],[419,2351,2353],{"className":2352,"style":1737},[1736],[1739,2354,2355],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2356],{"d":1750}," and ",[419,2359,2361],{"className":2360},[422],[419,2362,2364],{"className":2363,"ariaHidden":427},[426],[419,2365,2367,2370],{"className":2366},[431],[419,2368],{"className":2369,"style":1767},[435],[419,2371,2373],{"className":2372},[440,1703],[419,2374,2376],{"className":2375},[456],[419,2377,2379],{"className":2378},[460],[419,2380,2382,2390],{"className":2381,"style":1767},[464],[419,2383,2384,2387],{"style":1715},[419,2385],{"className":2386,"style":1719},[471],[419,2388,778],{"className":2389},[440,553],[419,2391,2392,2395],{"style":1790},[419,2393],{"className":2394,"style":1719},[471],[419,2396,2398],{"className":2397,"style":1732},[1731],[419,2399,2401],{"className":2400,"style":1737},[1736],[1739,2402,2403],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2404],{"d":1750}," is ",[385,2407,2408],{},"acute"," iff ",[419,2411,2413],{"className":2412},[422],[419,2414,2416,2466,2517],{"className":2415,"ariaHidden":427},[426],[419,2417,2419,2422,2457,2460,2463],{"className":2418},[431],[419,2420],{"className":2421,"style":1699},[435],[419,2423,2425],{"className":2424},[440,1703],[419,2426,2428],{"className":2427},[456],[419,2429,2431],{"className":2430},[460],[419,2432,2434,2442],{"className":2433,"style":1699},[464],[419,2435,2436,2439],{"style":1715},[419,2437],{"className":2438,"style":1719},[471],[419,2440,390],{"className":2441},[440,553],[419,2443,2444,2447],{"style":1715},[419,2445],{"className":2446,"style":1719},[471],[419,2448,2450],{"className":2449,"style":1732},[1731],[419,2451,2453],{"className":2452,"style":1737},[1736],[1739,2454,2455],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2456],{"d":1750},[419,2458],{"className":2459,"style":903},[559],[419,2461,1757],{"className":2462},[907],[419,2464],{"className":2465,"style":903},[559],[419,2467,2469,2473,2508,2511,2514],{"className":2468},[431],[419,2470],{"className":2471,"style":2472},[435],"height:1.0165em;vertical-align:-0.0391em;",[419,2474,2476],{"className":2475},[440,1703],[419,2477,2479],{"className":2478},[456],[419,2480,2482],{"className":2481},[460],[419,2483,2485,2493],{"className":2484,"style":1767},[464],[419,2486,2487,2490],{"style":1715},[419,2488],{"className":2489,"style":1719},[471],[419,2491,778],{"className":2492},[440,553],[419,2494,2495,2498],{"style":1790},[419,2496],{"className":2497,"style":1719},[471],[419,2499,2501],{"className":2500,"style":1732},[1731],[419,2502,2504],{"className":2503,"style":1737},[1736],[1739,2505,2506],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2507],{"d":1750},[419,2509],{"className":2510,"style":560},[559],[419,2512,2257],{"className":2513},[564],[419,2515],{"className":2516,"style":560},[559],[419,2518,2520,2523],{"className":2519},[431],[419,2521],{"className":2522,"style":2267},[435],[419,2524,448],{"className":2525},[440],[385,2527,2528],{},"right"," (perpendicular) iff ",[419,2531,2533],{"className":2532},[422],[419,2534,2536,2586,2636],{"className":2535,"ariaHidden":427},[426],[419,2537,2539,2542,2577,2580,2583],{"className":2538},[431],[419,2540],{"className":2541,"style":1699},[435],[419,2543,2545],{"className":2544},[440,1703],[419,2546,2548],{"className":2547},[456],[419,2549,2551],{"className":2550},[460],[419,2552,2554,2562],{"className":2553,"style":1699},[464],[419,2555,2556,2559],{"style":1715},[419,2557],{"className":2558,"style":1719},[471],[419,2560,390],{"className":2561},[440,553],[419,2563,2564,2567],{"style":1715},[419,2565],{"className":2566,"style":1719},[471],[419,2568,2570],{"className":2569,"style":1732},[1731],[419,2571,2573],{"className":2572,"style":1737},[1736],[1739,2574,2575],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2576],{"d":1750},[419,2578],{"className":2579,"style":903},[559],[419,2581,1757],{"className":2582},[907],[419,2584],{"className":2585,"style":903},[559],[419,2587,2589,2592,2627,2630,2633],{"className":2588},[431],[419,2590],{"className":2591,"style":1767},[435],[419,2593,2595],{"className":2594},[440,1703],[419,2596,2598],{"className":2597},[456],[419,2599,2601],{"className":2600},[460],[419,2602,2604,2612],{"className":2603,"style":1767},[464],[419,2605,2606,2609],{"style":1715},[419,2607],{"className":2608,"style":1719},[471],[419,2610,778],{"className":2611},[440,553],[419,2613,2614,2617],{"style":1790},[419,2615],{"className":2616,"style":1719},[471],[419,2618,2620],{"className":2619,"style":1732},[1731],[419,2621,2623],{"className":2622,"style":1737},[1736],[1739,2624,2625],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2626],{"d":1750},[419,2628],{"className":2629,"style":560},[559],[419,2631,565],{"className":2632},[564],[419,2634],{"className":2635,"style":560},[559],[419,2637,2639,2642],{"className":2638},[431],[419,2640],{"className":2641,"style":2267},[435],[419,2643,448],{"className":2644},[440],", and ",[385,2647,2648],{},"obtuse"," iff\n",[419,2651,2653],{"className":2652},[422],[419,2654,2656,2706,2757],{"className":2655,"ariaHidden":427},[426],[419,2657,2659,2662,2697,2700,2703],{"className":2658},[431],[419,2660],{"className":2661,"style":1699},[435],[419,2663,2665],{"className":2664},[440,1703],[419,2666,2668],{"className":2667},[456],[419,2669,2671],{"className":2670},[460],[419,2672,2674,2682],{"className":2673,"style":1699},[464],[419,2675,2676,2679],{"style":1715},[419,2677],{"className":2678,"style":1719},[471],[419,2680,390],{"className":2681},[440,553],[419,2683,2684,2687],{"style":1715},[419,2685],{"className":2686,"style":1719},[471],[419,2688,2690],{"className":2689,"style":1732},[1731],[419,2691,2693],{"className":2692,"style":1737},[1736],[1739,2694,2695],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2696],{"d":1750},[419,2698],{"className":2699,"style":903},[559],[419,2701,1757],{"className":2702},[907],[419,2704],{"className":2705,"style":903},[559],[419,2707,2709,2712,2747,2750,2754],{"className":2708},[431],[419,2710],{"className":2711,"style":2472},[435],[419,2713,2715],{"className":2714},[440,1703],[419,2716,2718],{"className":2717},[456],[419,2719,2721],{"className":2720},[460],[419,2722,2724,2732],{"className":2723,"style":1767},[464],[419,2725,2726,2729],{"style":1715},[419,2727],{"className":2728,"style":1719},[471],[419,2730,778],{"className":2731},[440,553],[419,2733,2734,2737],{"style":1790},[419,2735],{"className":2736,"style":1719},[471],[419,2738,2740],{"className":2739,"style":1732},[1731],[419,2741,2743],{"className":2742,"style":1737},[1736],[1739,2744,2745],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2746],{"d":1750},[419,2748],{"className":2749,"style":560},[559],[419,2751,2753],{"className":2752},[564],"\u003C",[419,2755],{"className":2756,"style":560},[559],[419,2758,2760,2763],{"className":2759},[431],[419,2761],{"className":2762,"style":2267},[435],[419,2764,448],{"className":2765},[440],[381,2767,2768,2769,2772,2773,2820,2821,2868,2869,3014,3015,3062,3063,3110,3111,3114,3115,3338,3339,3114,3342,3562,3563,3566],{},"Three uses recur. ",[403,2770,2771],{},"Projection",": the scalar projection of ",[419,2774,2776],{"className":2775},[422],[419,2777,2779],{"className":2778,"ariaHidden":427},[426],[419,2780,2782,2785],{"className":2781},[431],[419,2783],{"className":2784,"style":1767},[435],[419,2786,2788],{"className":2787},[440,1703],[419,2789,2791],{"className":2790},[456],[419,2792,2794],{"className":2793},[460],[419,2795,2797,2805],{"className":2796,"style":1767},[464],[419,2798,2799,2802],{"style":1715},[419,2800],{"className":2801,"style":1719},[471],[419,2803,778],{"className":2804},[440,553],[419,2806,2807,2810],{"style":1790},[419,2808],{"className":2809,"style":1719},[471],[419,2811,2813],{"className":2812,"style":1732},[1731],[419,2814,2816],{"className":2815,"style":1737},[1736],[1739,2817,2818],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2819],{"d":1750}," onto ",[419,2822,2824],{"className":2823},[422],[419,2825,2827],{"className":2826,"ariaHidden":427},[426],[419,2828,2830,2833],{"className":2829},[431],[419,2831],{"className":2832,"style":1699},[435],[419,2834,2836],{"className":2835},[440,1703],[419,2837,2839],{"className":2838},[456],[419,2840,2842],{"className":2841},[460],[419,2843,2845,2853],{"className":2844,"style":1699},[464],[419,2846,2847,2850],{"style":1715},[419,2848],{"className":2849,"style":1719},[471],[419,2851,390],{"className":2852},[440,553],[419,2854,2855,2858],{"style":1715},[419,2856],{"className":2857,"style":1719},[471],[419,2859,2861],{"className":2860,"style":1732},[1731],[419,2862,2864],{"className":2863,"style":1737},[1736],[1739,2865,2866],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2867],{"d":1750}," is\n",[419,2870,2872],{"className":2871},[422],[419,2873,2875,2928],{"className":2874,"ariaHidden":427},[426],[419,2876,2878,2881,2884,2919,2922,2925],{"className":2877},[431],[419,2879],{"className":2880,"style":575},[435],[419,2882,580],{"className":2883},[579],[419,2885,2887],{"className":2886},[440,1703],[419,2888,2890],{"className":2889},[456],[419,2891,2893],{"className":2892},[460],[419,2894,2896,2904],{"className":2895,"style":1699},[464],[419,2897,2898,2901],{"style":1715},[419,2899],{"className":2900,"style":1719},[471],[419,2902,390],{"className":2903},[440,553],[419,2905,2906,2909],{"style":1715},[419,2907],{"className":2908,"style":1719},[471],[419,2910,2912],{"className":2911,"style":1732},[1731],[419,2913,2915],{"className":2914,"style":1737},[1736],[1739,2916,2917],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2918],{"d":1750},[419,2920],{"className":2921,"style":903},[559],[419,2923,1757],{"className":2924},[907],[419,2926],{"className":2927,"style":903},[559],[419,2929,2931,2934,2969,2972,2976,3011],{"className":2930},[431],[419,2932],{"className":2933,"style":2022},[435],[419,2935,2937],{"className":2936},[440,1703],[419,2938,2940],{"className":2939},[456],[419,2941,2943],{"className":2942},[460],[419,2944,2946,2954],{"className":2945,"style":1767},[464],[419,2947,2948,2951],{"style":1715},[419,2949],{"className":2950,"style":1719},[471],[419,2952,778],{"className":2953},[440,553],[419,2955,2956,2959],{"style":1790},[419,2957],{"className":2958,"style":1719},[471],[419,2960,2962],{"className":2961,"style":1732},[1731],[419,2963,2965],{"className":2964,"style":1737},[1736],[1739,2966,2967],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,2968],{"d":1750},[419,2970,603],{"className":2971},[602],[419,2973,2975],{"className":2974},[440],"\u002F∣",[419,2977,2979],{"className":2978},[440,1703],[419,2980,2982],{"className":2981},[456],[419,2983,2985],{"className":2984},[460],[419,2986,2988,2996],{"className":2987,"style":1699},[464],[419,2989,2990,2993],{"style":1715},[419,2991],{"className":2992,"style":1719},[471],[419,2994,390],{"className":2995},[440,553],[419,2997,2998,3001],{"style":1715},[419,2999],{"className":3000,"style":1719},[471],[419,3002,3004],{"className":3003,"style":1732},[1731],[419,3005,3007],{"className":3006,"style":1737},[1736],[1739,3008,3009],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3010],{"d":1750},[419,3012,2026],{"className":3013},[440],", the signed length of ",[419,3016,3018],{"className":3017},[422],[419,3019,3021],{"className":3020,"ariaHidden":427},[426],[419,3022,3024,3027],{"className":3023},[431],[419,3025],{"className":3026,"style":1767},[435],[419,3028,3030],{"className":3029},[440,1703],[419,3031,3033],{"className":3032},[456],[419,3034,3036],{"className":3035},[460],[419,3037,3039,3047],{"className":3038,"style":1767},[464],[419,3040,3041,3044],{"style":1715},[419,3042],{"className":3043,"style":1719},[471],[419,3045,778],{"className":3046},[440,553],[419,3048,3049,3052],{"style":1790},[419,3050],{"className":3051,"style":1719},[471],[419,3053,3055],{"className":3054,"style":1732},[1731],[419,3056,3058],{"className":3057,"style":1737},[1736],[1739,3059,3060],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3061],{"d":1750},"'s shadow along\n",[419,3064,3066],{"className":3065},[422],[419,3067,3069],{"className":3068,"ariaHidden":427},[426],[419,3070,3072,3075],{"className":3071},[431],[419,3073],{"className":3074,"style":1699},[435],[419,3076,3078],{"className":3077},[440,1703],[419,3079,3081],{"className":3080},[456],[419,3082,3084],{"className":3083},[460],[419,3085,3087,3095],{"className":3086,"style":1699},[464],[419,3088,3089,3092],{"style":1715},[419,3090],{"className":3091,"style":1719},[471],[419,3093,390],{"className":3094},[440,553],[419,3096,3097,3100],{"style":1715},[419,3098],{"className":3099,"style":1719},[471],[419,3101,3103],{"className":3102,"style":1732},[1731],[419,3104,3106],{"className":3105,"style":1737},[1736],[1739,3107,3108],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3109],{"d":1750},". ",[403,3112,3113],{},"Perpendicularity",": ",[419,3116,3118],{"className":3117},[422],[419,3119,3121,3172,3229,3279,3329],{"className":3120,"ariaHidden":427},[426],[419,3122,3124,3127,3162,3165,3169],{"className":3123},[431],[419,3125],{"className":3126,"style":1699},[435],[419,3128,3130],{"className":3129},[440,1703],[419,3131,3133],{"className":3132},[456],[419,3134,3136],{"className":3135},[460],[419,3137,3139,3147],{"className":3138,"style":1699},[464],[419,3140,3141,3144],{"style":1715},[419,3142],{"className":3143,"style":1719},[471],[419,3145,390],{"className":3146},[440,553],[419,3148,3149,3152],{"style":1715},[419,3150],{"className":3151,"style":1719},[471],[419,3153,3155],{"className":3154,"style":1732},[1731],[419,3156,3158],{"className":3157,"style":1737},[1736],[1739,3159,3160],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3161],{"d":1750},[419,3163],{"className":3164,"style":560},[559],[419,3166,3168],{"className":3167},[564],"⊥",[419,3170],{"className":3171,"style":560},[559],[419,3173,3175,3178,3213,3216,3219,3223,3226],{"className":3174},[431],[419,3176],{"className":3177,"style":1767},[435],[419,3179,3181],{"className":3180},[440,1703],[419,3182,3184],{"className":3183},[456],[419,3185,3187],{"className":3186},[460],[419,3188,3190,3198],{"className":3189,"style":1767},[464],[419,3191,3192,3195],{"style":1715},[419,3193],{"className":3194,"style":1719},[471],[419,3196,778],{"className":3197},[440,553],[419,3199,3200,3203],{"style":1790},[419,3201],{"className":3202,"style":1719},[471],[419,3204,3206],{"className":3205,"style":1732},[1731],[419,3207,3209],{"className":3208,"style":1737},[1736],[1739,3210,3211],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3212],{"d":1750},[419,3214],{"className":3215,"style":560},[559],[419,3217],{"className":3218,"style":560},[559],[419,3220,3222],{"className":3221},[564],"↔",[419,3224],{"className":3225,"style":560},[559],[419,3227],{"className":3228,"style":560},[559],[419,3230,3232,3235,3270,3273,3276],{"className":3231},[431],[419,3233],{"className":3234,"style":1699},[435],[419,3236,3238],{"className":3237},[440,1703],[419,3239,3241],{"className":3240},[456],[419,3242,3244],{"className":3243},[460],[419,3245,3247,3255],{"className":3246,"style":1699},[464],[419,3248,3249,3252],{"style":1715},[419,3250],{"className":3251,"style":1719},[471],[419,3253,390],{"className":3254},[440,553],[419,3256,3257,3260],{"style":1715},[419,3258],{"className":3259,"style":1719},[471],[419,3261,3263],{"className":3262,"style":1732},[1731],[419,3264,3266],{"className":3265,"style":1737},[1736],[1739,3267,3268],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3269],{"d":1750},[419,3271],{"className":3272,"style":903},[559],[419,3274,1757],{"className":3275},[907],[419,3277],{"className":3278,"style":903},[559],[419,3280,3282,3285,3320,3323,3326],{"className":3281},[431],[419,3283],{"className":3284,"style":1767},[435],[419,3286,3288],{"className":3287},[440,1703],[419,3289,3291],{"className":3290},[456],[419,3292,3294],{"className":3293},[460],[419,3295,3297,3305],{"className":3296,"style":1767},[464],[419,3298,3299,3302],{"style":1715},[419,3300],{"className":3301,"style":1719},[471],[419,3303,778],{"className":3304},[440,553],[419,3306,3307,3310],{"style":1790},[419,3308],{"className":3309,"style":1719},[471],[419,3311,3313],{"className":3312,"style":1732},[1731],[419,3314,3316],{"className":3315,"style":1737},[1736],[1739,3317,3318],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3319],{"d":1750},[419,3321],{"className":3322,"style":560},[559],[419,3324,565],{"className":3325},[564],[419,3327],{"className":3328,"style":560},[559],[419,3330,3332,3335],{"className":3331},[431],[419,3333],{"className":3334,"style":2267},[435],[419,3336,448],{"className":3337},[440],",\nan exact integer test. ",[403,3340,3341],{},"Angle",[419,3343,3345],{"className":3344},[422],[419,3346,3348,3375,3428],{"className":3347,"ariaHidden":427},[426],[419,3349,3351,3354,3360,3363,3366,3369,3372],{"className":3350},[431],[419,3352],{"className":3353,"style":2146},[435],[419,3355,3357],{"className":3356},[526],[419,3358,2119],{"className":3359},[440,2118],[419,3361],{"className":3362,"style":593},[559],[419,3364,2127],{"className":3365,"style":2126},[440,553],[419,3367],{"className":3368,"style":560},[559],[419,3370,565],{"className":3371},[564],[419,3373],{"className":3374,"style":560},[559],[419,3376,3378,3381,3384,3419,3422,3425],{"className":3377},[431],[419,3379],{"className":3380,"style":575},[435],[419,3382,580],{"className":3383},[579],[419,3385,3387],{"className":3386},[440,1703],[419,3388,3390],{"className":3389},[456],[419,3391,3393],{"className":3392},[460],[419,3394,3396,3404],{"className":3395,"style":1699},[464],[419,3397,3398,3401],{"style":1715},[419,3399],{"className":3400,"style":1719},[471],[419,3402,390],{"className":3403},[440,553],[419,3405,3406,3409],{"style":1715},[419,3407],{"className":3408,"style":1719},[471],[419,3410,3412],{"className":3411,"style":1732},[1731],[419,3413,3415],{"className":3414,"style":1737},[1736],[1739,3416,3417],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3418],{"d":1750},[419,3420],{"className":3421,"style":903},[559],[419,3423,1757],{"className":3424},[907],[419,3426],{"className":3427,"style":903},[559],[419,3429,3431,3434,3469,3472,3476,3479,3482,3517,3521,3556,3559],{"className":3430},[431],[419,3432],{"className":3433,"style":2022},[435],[419,3435,3437],{"className":3436},[440,1703],[419,3438,3440],{"className":3439},[456],[419,3441,3443],{"className":3442},[460],[419,3444,3446,3454],{"className":3445,"style":1767},[464],[419,3447,3448,3451],{"style":1715},[419,3449],{"className":3450,"style":1719},[471],[419,3452,778],{"className":3453},[440,553],[419,3455,3456,3459],{"style":1790},[419,3457],{"className":3458,"style":1719},[471],[419,3460,3462],{"className":3461,"style":1732},[1731],[419,3463,3465],{"className":3464,"style":1737},[1736],[1739,3466,3467],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3468],{"d":1750},[419,3470,603],{"className":3471},[602],[419,3473,3475],{"className":3474},[440],"\u002F",[419,3477,580],{"className":3478},[579],[419,3480,2026],{"className":3481},[440],[419,3483,3485],{"className":3484},[440,1703],[419,3486,3488],{"className":3487},[456],[419,3489,3491],{"className":3490},[460],[419,3492,3494,3502],{"className":3493,"style":1699},[464],[419,3495,3496,3499],{"style":1715},[419,3497],{"className":3498,"style":1719},[471],[419,3500,390],{"className":3501},[440,553],[419,3503,3504,3507],{"style":1715},[419,3505],{"className":3506,"style":1719},[471],[419,3508,3510],{"className":3509,"style":1732},[1731],[419,3511,3513],{"className":3512,"style":1737},[1736],[1739,3514,3515],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3516],{"d":1750},[419,3518,3520],{"className":3519},[440],"∣∣",[419,3522,3524],{"className":3523},[440,1703],[419,3525,3527],{"className":3526},[456],[419,3528,3530],{"className":3529},[460],[419,3531,3533,3541],{"className":3532,"style":1767},[464],[419,3534,3535,3538],{"style":1715},[419,3536],{"className":3537,"style":1719},[471],[419,3539,778],{"className":3540},[440,553],[419,3542,3543,3546],{"style":1790},[419,3544],{"className":3545,"style":1719},[471],[419,3547,3549],{"className":3548,"style":1732},[1731],[419,3550,3552],{"className":3551,"style":1737},[1736],[1739,3553,3554],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3555],{"d":1750},[419,3557,2026],{"className":3558},[440],[419,3560,603],{"className":3561},[602],"\nwhen the actual angle is genuinely needed (the one place a square root sneaks in).\nNote the dot product is symmetric and tells us nothing about ",[403,3564,3565],{},"which side"," one\nvector lies on; for that we need its companion.",[3568,3569,3573,3760],"figure",{"className":3570},[3571,3572],"tikz-figure","tikz-diagram-rendered",[1739,3574,3578],{"xmlns":1741,"width":3575,"height":3576,"viewBox":3577},"189.974","156.013","-75 -75 142.481 117.010",[3579,3580,3583,3587,3596,3622,3646,3649,3653,3657,3750,3753],"g",{"stroke":3581,"style":3582},"currentColor","stroke-miterlimit:10;stroke-width:.4",[1748,3584],{"stroke":3585,"d":3586},"none","M-48.162.516a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,3588,3590],{"transform":3589},"translate(-12.27 11.124)",[1748,3591],{"d":3592,"fill":3581,"stroke":3581,"className":3593,"style":3595},"M-47.174 0.714Q-47.684 0.714-48.124 0.538Q-48.563 0.362-48.886 0.033Q-49.209-0.297-49.380-0.745Q-49.552-1.193-49.552-1.699Q-49.552-2.446-49.220-3.191Q-48.888-3.936-48.317-4.533Q-47.746-5.131-47.018-5.480Q-46.291-5.830-45.544-5.830Q-45.025-5.830-44.586-5.650Q-44.146-5.469-43.832-5.138Q-43.518-4.806-43.349-4.364Q-43.180-3.922-43.180-3.391Q-43.180-2.635-43.507-1.897Q-43.834-1.158-44.401-0.569Q-44.968 0.019-45.691 0.367Q-46.414 0.714-47.174 0.714M-47.104 0.406Q-46.436 0.406-45.863 0.008Q-45.289-0.389-44.878-1.033Q-44.467-1.677-44.250-2.391Q-44.032-3.105-44.032-3.725Q-44.032-4.230-44.212-4.639Q-44.393-5.047-44.753-5.294Q-45.113-5.540-45.619-5.540Q-45.944-5.540-46.260-5.434Q-46.577-5.329-46.867-5.142Q-47.157-4.955-47.398-4.713Q-47.781-4.331-48.066-3.784Q-48.352-3.237-48.501-2.630Q-48.651-2.024-48.651-1.475Q-48.651-0.983-48.482-0.552Q-48.312-0.121-47.963 0.142Q-47.614 0.406-47.104 0.406",[3594],"tikz-text","stroke-width:0.270",[3579,3597,3599,3602,3605],{"style":3598},"stroke-width:.8",[1748,3600],{"fill":3585,"d":3601},"M-47.962.516H61.211",[1748,3603],{"stroke":3585,"d":3604},"m63.81.516-4.16-2.08 1.56 2.08-1.56 2.08",[3579,3606,3609,3616],{"stroke":3585,"fontFamily":3607,"fontSize":3608},"cmmi9","9",[3579,3610,3612],{"transform":3611},"translate(55.475 10.173)",[1748,3613],{"d":3614,"fill":3581,"stroke":3581,"className":3615,"style":3595},"M-45.677-4.832L-48.736-4.832Q-48.907-4.863-48.907-5.030Q-48.907-5.179-48.736-5.219L-45.506-5.219Q-45.594-5.329-45.662-5.476Q-45.730-5.623-45.730-5.729Q-45.730-5.808-45.675-5.867Q-45.620-5.926-45.541-5.926Q-45.484-5.926-45.429-5.891Q-45.374-5.856-45.352-5.795Q-45.251-5.381-44.912-5.188Q-44.811-5.131-44.811-5.030Q-44.811-4.902-44.912-4.859Q-45.413-4.621-45.739-4.199Q-45.809-4.120-45.892-4.120Q-45.976-4.120-46.033-4.177Q-46.090-4.234-46.090-4.318Q-46.090-4.481-45.677-4.832",[3594],[3579,3617,3618],{"transform":3611},[1748,3619],{"d":3620,"fill":3581,"stroke":3581,"className":3621,"style":3595},"M-48.378 0.617Q-48.774 0.617-49.060 0.413Q-49.345 0.208-49.492-0.126Q-49.640-0.460-49.640-0.851Q-49.640-1.286-49.466-1.747Q-49.292-2.209-48.980-2.600Q-48.668-2.991-48.258-3.226Q-47.847-3.461-47.407-3.461Q-47.139-3.461-46.922-3.323Q-46.704-3.184-46.572-2.938Q-46.533-3.088-46.425-3.184Q-46.317-3.281-46.177-3.281Q-46.054-3.281-45.970-3.208Q-45.887-3.136-45.887-3.013Q-45.887-2.960-45.896-2.929L-46.515-0.438Q-46.572-0.240-46.572-0.042Q-46.572 0.353-46.309 0.353Q-46.023 0.353-45.889 0.030Q-45.755-0.293-45.636-0.798Q-45.627-0.829-45.603-0.853Q-45.579-0.877-45.544-0.877L-45.438-0.877Q-45.390-0.877-45.368-0.844Q-45.346-0.811-45.346-0.763Q-45.460-0.332-45.551-0.079Q-45.641 0.173-45.834 0.395Q-46.027 0.617-46.326 0.617Q-46.634 0.617-46.882 0.446Q-47.130 0.274-47.201-0.016Q-47.456 0.270-47.752 0.443Q-48.049 0.617-48.378 0.617M-48.361 0.353Q-48.031 0.353-47.721 0.112Q-47.412-0.130-47.201-0.446Q-47.192-0.455-47.192-0.473L-46.695-2.437Q-46.752-2.754-46.944-2.978Q-47.135-3.202-47.425-3.202Q-47.794-3.202-48.093-2.883Q-48.392-2.565-48.559-2.156Q-48.695-1.809-48.820-1.299Q-48.945-0.789-48.945-0.464Q-48.945-0.139-48.807 0.107Q-48.668 0.353-48.361 0.353",[3594],[3579,3623,3625,3628,3631],{"fill":3624,"stroke":3624,"style":3598},"var(--tk-accent)",[1748,3626],{"fill":3585,"d":3627},"m-48.304-.614 81.499-54.333",[1748,3629],{"stroke":3585,"d":3630},"m35.358-56.39-4.615.578 2.452.865-.145 2.596",[3579,3632,3633,3640],{"fill":3624,"stroke":3585,"fontFamily":3607,"fontSize":3608},[3579,3634,3636],{"transform":3635},"translate(77.661 -60.638)",[1748,3637],{"d":3638,"fill":3624,"stroke":3624,"className":3639,"style":3595},"M-46.145-7.207L-49.204-7.207Q-49.375-7.238-49.375-7.405Q-49.375-7.554-49.204-7.594L-45.974-7.594Q-46.062-7.704-46.130-7.851Q-46.198-7.998-46.198-8.104Q-46.198-8.183-46.143-8.242Q-46.088-8.301-46.009-8.301Q-45.952-8.301-45.897-8.266Q-45.842-8.231-45.820-8.170Q-45.719-7.756-45.380-7.563Q-45.279-7.506-45.279-7.405Q-45.279-7.277-45.380-7.234Q-45.881-6.996-46.207-6.574Q-46.277-6.495-46.360-6.495Q-46.444-6.495-46.501-6.552Q-46.558-6.609-46.558-6.693Q-46.558-6.856-46.145-7.207",[3594],[3579,3641,3642],{"transform":3635},[1748,3643],{"d":3644,"fill":3624,"stroke":3624,"className":3645,"style":3595},"M-48.378 0.617Q-48.954 0.617-49.275 0.186Q-49.596-0.244-49.596-0.824Q-49.596-1.229-49.512-1.457L-48.633-4.955Q-48.598-5.105-48.598-5.179Q-48.598-5.316-49.165-5.316Q-49.262-5.316-49.262-5.434Q-49.262-5.491-49.231-5.562Q-49.200-5.632-49.134-5.632L-47.913-5.729Q-47.860-5.729-47.827-5.700Q-47.794-5.671-47.794-5.623L-47.794-5.588L-48.453-2.978Q-47.930-3.461-47.407-3.461Q-47.021-3.461-46.730-3.257Q-46.440-3.052-46.293-2.718Q-46.146-2.384-46.146-1.993Q-46.146-1.409-46.449-0.800Q-46.752-0.192-47.273 0.213Q-47.794 0.617-48.378 0.617M-48.361 0.353Q-47.992 0.353-47.688 0.030Q-47.385-0.293-47.227-0.688Q-47.082-1.044-46.961-1.552Q-46.840-2.059-46.840-2.380Q-46.840-2.705-46.985-2.953Q-47.130-3.202-47.425-3.202Q-48.027-3.202-48.598-2.402L-48.840-1.409Q-48.985-0.785-48.985-0.521Q-48.985-0.178-48.833 0.088Q-48.682 0.353-48.361 0.353",[3594],[1748,3647],{"stroke":3585,"d":3648},"M37.196.516a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[1748,3650],{"fill":3585,"d":3651,"style":3652},"M35.358-56.39v54.868","stroke-dasharray:3.0,3.0",[1748,3654],{"fill":3585,"stroke":3624,"d":3655,"style":3656},"M-50 13.32h85.358","stroke-width:1.2",[3579,3658,3659],{"fill":3624,"stroke":3624},[3579,3660,3661,3669,3675,3681,3687,3693,3699,3705,3711,3714,3720,3726,3732,3738,3744],{"fill":3624,"stroke":3585},[3579,3662,3664],{"transform":3663},"translate(12.962 26.897)",[1748,3665],{"d":3666,"fill":3624,"stroke":3624,"className":3667,"style":3668},"M-47.879 2.067L-49.734 2.067L-49.734 1.774Q-49.465 1.774-49.297 1.729Q-49.129 1.684-49.129 1.508L-49.129-2.316Q-49.129-2.523-49.285-2.576Q-49.441-2.629-49.734-2.629L-49.734-2.925L-48.512-3.011L-48.512-2.546Q-48.281-2.769-47.967-2.890Q-47.652-3.011-47.312-3.011Q-46.840-3.011-46.436-2.765Q-46.031-2.519-45.799-2.103Q-45.566-1.687-45.566-1.211Q-45.566-0.836-45.715-0.507Q-45.863-0.179-46.133 0.073Q-46.402 0.325-46.746 0.459Q-47.090 0.594-47.449 0.594Q-47.738 0.594-48.010 0.473Q-48.281 0.352-48.488 0.141L-48.488 1.508Q-48.488 1.684-48.320 1.729Q-48.152 1.774-47.879 1.774L-47.879 2.067M-48.488-2.148L-48.488-0.308Q-48.336-0.019-48.074 0.161Q-47.812 0.340-47.504 0.340Q-47.219 0.340-46.996 0.202Q-46.773 0.063-46.621-0.168Q-46.469-0.398-46.391-0.670Q-46.312-0.941-46.312-1.211Q-46.312-1.543-46.437-1.900Q-46.562-2.257-46.811-2.494Q-47.059-2.730-47.406-2.730Q-47.730-2.730-48.025-2.574Q-48.320-2.418-48.488-2.148M-43.035 0.516L-45.016 0.516L-45.016 0.219Q-44.746 0.219-44.578 0.174Q-44.410 0.129-44.410-0.043L-44.410-2.179Q-44.410-2.394-44.473-2.490Q-44.535-2.586-44.652-2.607Q-44.770-2.629-45.016-2.629L-45.016-2.925L-43.848-3.011L-43.848-2.226Q-43.770-2.437-43.617-2.623Q-43.465-2.808-43.266-2.910Q-43.066-3.011-42.840-3.011Q-42.594-3.011-42.402-2.867Q-42.211-2.722-42.211-2.492Q-42.211-2.336-42.316-2.226Q-42.422-2.117-42.578-2.117Q-42.734-2.117-42.844-2.226Q-42.953-2.336-42.953-2.492Q-42.953-2.652-42.848-2.757Q-43.172-2.757-43.387-2.529Q-43.602-2.300-43.697-1.961Q-43.793-1.621-43.793-1.316L-43.793-0.043Q-43.793 0.125-43.566 0.172Q-43.340 0.219-43.035 0.219L-43.035 0.516M-41.730-1.179Q-41.730-1.683-41.475-2.115Q-41.219-2.546-40.783-2.798Q-40.348-3.050-39.848-3.050Q-39.461-3.050-39.119-2.906Q-38.777-2.761-38.516-2.500Q-38.254-2.238-38.111-1.902Q-37.969-1.566-37.969-1.179Q-37.969-0.687-38.232-0.277Q-38.496 0.133-38.926 0.364Q-39.355 0.594-39.848 0.594Q-40.340 0.594-40.773 0.362Q-41.207 0.129-41.469-0.279Q-41.730-0.687-41.730-1.179M-39.848 0.317Q-39.391 0.317-39.139 0.094Q-38.887-0.129-38.799-0.480Q-38.711-0.832-38.711-1.277Q-38.711-1.707-38.805-2.045Q-38.898-2.382-39.152-2.589Q-39.406-2.796-39.848-2.796Q-40.496-2.796-40.740-2.380Q-40.984-1.964-40.984-1.277Q-40.984-0.832-40.896-0.480Q-40.809-0.129-40.557 0.094Q-40.305 0.317-39.848 0.317",[3594],"stroke-width:0.240",[3579,3670,3671],{"transform":3663},[1748,3672],{"d":3673,"fill":3624,"stroke":3624,"className":3674,"style":3668},"M-37.563 1.493Q-37.563 1.387-37.513 1.295Q-37.462 1.204-37.370 1.153Q-37.278 1.102-37.173 1.102Q-37.063 1.102-36.972 1.153Q-36.880 1.204-36.829 1.295Q-36.778 1.387-36.778 1.493Q-36.778 1.707-36.970 1.829Q-36.813 1.891-36.587 1.891Q-36.286 1.891-36.157 1.582Q-36.028 1.274-36.028 0.907L-36.028-2.179Q-36.028-2.484-36.175-2.556Q-36.321-2.629-36.700-2.629L-36.700-2.925L-35.411-3.011L-35.411 0.930Q-35.411 1.250-35.571 1.534Q-35.731 1.817-36.009 1.983Q-36.286 2.149-36.602 2.149Q-36.962 2.149-37.263 1.985Q-37.563 1.821-37.563 1.493M-36.333-4.406Q-36.333-4.589-36.194-4.724Q-36.056-4.859-35.868-4.859Q-35.681-4.859-35.546-4.728Q-35.411-4.597-35.411-4.406Q-35.411-4.207-35.544-4.074Q-35.677-3.941-35.868-3.941Q-36.059-3.941-36.196-4.078Q-36.333-4.214-36.333-4.406",[3594],[3579,3676,3677],{"transform":3663},[1748,3678],{"d":3679,"fill":3624,"stroke":3624,"className":3680,"style":3668},"M-25.852-0.461L-31.165-0.461Q-31.243-0.468-31.292-0.517Q-31.340-0.566-31.340-0.644Q-31.340-0.714-31.293-0.765Q-31.247-0.816-31.165-0.828L-25.852-0.828Q-25.778-0.816-25.731-0.765Q-25.684-0.714-25.684-0.644Q-25.684-0.566-25.733-0.517Q-25.782-0.468-25.852-0.461M-25.852-2.148L-31.165-2.148Q-31.243-2.156-31.292-2.205Q-31.340-2.254-31.340-2.332Q-31.340-2.402-31.293-2.453Q-31.247-2.504-31.165-2.515L-25.852-2.515Q-25.778-2.504-25.731-2.453Q-25.684-2.402-25.684-2.332Q-25.684-2.254-25.733-2.205Q-25.782-2.156-25.852-2.148",[3594],[3579,3682,3683],{"transform":3663},[1748,3684],{"d":3685,"fill":3624,"stroke":3624,"className":3686,"style":3668},"M-17.717-9.788L-20.482-9.788Q-20.650-9.824-20.650-9.976Q-20.650-10.132-20.482-10.159L-17.564-10.159Q-17.764-10.417-17.764-10.605Q-17.764-10.675-17.707-10.732Q-17.650-10.788-17.580-10.788Q-17.439-10.788-17.396-10.648Q-17.291-10.312-16.971-10.124Q-16.893-10.074-16.893-9.976Q-16.893-9.863-17.002-9.808Q-17.463-9.609-17.748-9.222Q-17.799-9.159-17.893-9.159Q-17.967-9.159-18.021-9.214Q-18.076-9.269-18.076-9.343Q-18.076-9.484-17.717-9.788",[3594],[3579,3688,3689],{"transform":3663},[1748,3690],{"d":3691,"fill":3624,"stroke":3624,"className":3692,"style":3668},"M-20.136-4.976Q-20.492-4.976-20.761-5.156Q-21.031-5.335-21.171-5.630Q-21.312-5.925-21.312-6.284Q-21.312-6.671-21.150-7.085Q-20.988-7.499-20.704-7.837Q-20.421-8.175-20.052-8.378Q-19.683-8.581-19.281-8.581Q-18.788-8.581-18.511-8.132Q-18.480-8.265-18.376-8.347Q-18.273-8.429-18.144-8.429Q-18.031-8.429-17.951-8.359Q-17.870-8.288-17.870-8.175Q-17.870-8.148-17.886-8.085L-18.441-5.886Q-18.480-5.640-18.480-5.589Q-18.480-5.230-18.234-5.230Q-18.089-5.230-17.988-5.337Q-17.886-5.445-17.822-5.599Q-17.757-5.753-17.708-5.943Q-17.660-6.132-17.640-6.230Q-17.613-6.300-17.550-6.300L-17.449-6.300Q-17.410-6.300-17.384-6.267Q-17.359-6.234-17.359-6.206Q-17.359-6.191-17.367-6.175Q-17.480-5.683-17.679-5.329Q-17.878-4.976-18.249-4.976Q-18.531-4.976-18.757-5.118Q-18.984-5.261-19.066-5.519Q-19.288-5.277-19.562-5.126Q-19.835-4.976-20.136-4.976M-20.120-5.230Q-19.910-5.230-19.701-5.343Q-19.492-5.456-19.322-5.630Q-19.152-5.804-19.023-5.999Q-19.035-5.984-19.044-5.970Q-19.054-5.956-19.066-5.941L-18.632-7.663Q-18.671-7.843-18.757-7.993Q-18.843-8.144-18.980-8.236Q-19.117-8.327-19.296-8.327Q-19.632-8.327-19.904-8.046Q-20.175-7.765-20.335-7.390Q-20.460-7.070-20.558-6.650Q-20.656-6.230-20.656-5.949Q-20.656-5.659-20.523-5.445Q-20.390-5.230-20.120-5.230",[3594],[3579,3694,3695],{"transform":3663},[1748,3696],{"d":3697,"fill":3624,"stroke":3624,"className":3698,"style":3668},"M-14.517-7.062Q-14.517-7.245-14.381-7.382Q-14.244-7.519-14.052-7.519Q-13.861-7.519-13.728-7.386Q-13.595-7.253-13.595-7.062Q-13.595-6.870-13.732-6.734Q-13.869-6.597-14.052-6.597Q-14.236-6.597-14.377-6.738Q-14.517-6.878-14.517-7.062",[3594],[3579,3700,3701],{"transform":3663},[1748,3702],{"d":3703,"fill":3624,"stroke":3624,"className":3704,"style":3668},"M-7.503-11.899L-10.268-11.899Q-10.436-11.935-10.436-12.087Q-10.436-12.243-10.268-12.270L-7.350-12.270Q-7.550-12.528-7.550-12.716Q-7.550-12.786-7.493-12.843Q-7.436-12.899-7.366-12.899Q-7.225-12.899-7.182-12.759Q-7.077-12.423-6.757-12.235Q-6.679-12.185-6.679-12.087Q-6.679-11.974-6.788-11.919Q-7.249-11.720-7.534-11.333Q-7.585-11.270-7.679-11.270Q-7.753-11.270-7.807-11.325Q-7.862-11.380-7.862-11.454Q-7.862-11.595-7.503-11.899",[3594],[3579,3706,3707],{"transform":3663},[1748,3708],{"d":3709,"fill":3624,"stroke":3624,"className":3710,"style":3668},"M-9.482-4.976Q-9.822-4.976-10.082-5.154Q-10.341-5.331-10.476-5.626Q-10.611-5.921-10.611-6.269Q-10.611-6.531-10.545-6.788L-9.795-9.816Q-9.783-9.863-9.756-9.964Q-9.728-10.066-9.728-10.117Q-9.728-10.222-10.224-10.222Q-10.322-10.253-10.322-10.351L-10.299-10.452Q-10.291-10.499-10.209-10.519L-9.107-10.605Q-9.064-10.605-9.025-10.574Q-8.986-10.542-8.986-10.488L-9.560-8.167Q-9.103-8.581-8.627-8.581Q-8.263-8.581-7.998-8.402Q-7.732-8.222-7.591-7.921Q-7.451-7.620-7.451-7.269Q-7.451-6.745-7.732-6.206Q-8.013-5.667-8.480-5.322Q-8.947-4.976-9.482-4.976M-9.466-5.230Q-9.131-5.230-8.851-5.521Q-8.572-5.812-8.435-6.167Q-8.310-6.460-8.209-6.894Q-8.107-7.327-8.107-7.605Q-8.107-7.890-8.240-8.109Q-8.373-8.327-8.642-8.327Q-8.853-8.327-9.049-8.226Q-9.244-8.124-9.404-7.968Q-9.564-7.812-9.697-7.620L-9.924-6.749Q-9.974-6.515-10.004-6.333Q-10.033-6.152-10.033-5.999Q-10.033-5.699-9.892-5.464Q-9.752-5.230-9.466-5.230",[3594],[1748,3712],{"d":3713},"M-8.678 25.233h14.29v.36h-14.29z",[3579,3715,3716],{"transform":3663},[1748,3717],{"d":3718,"fill":3624,"stroke":3624,"className":3719,"style":3668},"M-18.122 8.341L-18.122 0.677Q-18.094 0.509-17.938 0.509Q-17.782 0.509-17.755 0.677L-17.755 8.341Q-17.782 8.509-17.938 8.509Q-18.094 8.509-18.122 8.341",[3594],[3579,3721,3722],{"transform":3663},[1748,3723],{"d":3724,"fill":3624,"stroke":3624,"className":3725,"style":3668},"M-12.830 1.775L-15.595 1.775Q-15.763 1.739-15.763 1.587Q-15.763 1.431-15.595 1.404L-12.677 1.404Q-12.877 1.146-12.877 0.958Q-12.877 0.888-12.820 0.831Q-12.763 0.775-12.693 0.775Q-12.552 0.775-12.509 0.915Q-12.404 1.251-12.084 1.439Q-12.006 1.489-12.006 1.587Q-12.006 1.700-12.115 1.755Q-12.576 1.954-12.861 2.341Q-12.912 2.404-13.006 2.404Q-13.080 2.404-13.134 2.349Q-13.189 2.294-13.189 2.220Q-13.189 2.079-12.830 1.775",[3594],[3579,3727,3728],{"transform":3663},[1748,3729],{"d":3730,"fill":3624,"stroke":3624,"className":3731,"style":3668},"M-15.249 6.587Q-15.605 6.587-15.874 6.407Q-16.144 6.228-16.284 5.933Q-16.425 5.638-16.425 5.279Q-16.425 4.892-16.263 4.478Q-16.101 4.064-15.817 3.726Q-15.534 3.388-15.165 3.185Q-14.796 2.982-14.394 2.982Q-13.901 2.982-13.624 3.431Q-13.593 3.298-13.489 3.216Q-13.386 3.134-13.257 3.134Q-13.144 3.134-13.064 3.204Q-12.983 3.275-12.983 3.388Q-12.983 3.415-12.999 3.478L-13.554 5.677Q-13.593 5.923-13.593 5.974Q-13.593 6.333-13.347 6.333Q-13.202 6.333-13.101 6.226Q-12.999 6.118-12.935 5.964Q-12.870 5.810-12.821 5.620Q-12.773 5.431-12.753 5.333Q-12.726 5.263-12.663 5.263L-12.562 5.263Q-12.523 5.263-12.497 5.296Q-12.472 5.329-12.472 5.357Q-12.472 5.372-12.480 5.388Q-12.593 5.880-12.792 6.234Q-12.991 6.587-13.362 6.587Q-13.644 6.587-13.870 6.445Q-14.097 6.302-14.179 6.044Q-14.401 6.286-14.675 6.437Q-14.948 6.587-15.249 6.587M-15.233 6.333Q-15.023 6.333-14.814 6.220Q-14.605 6.107-14.435 5.933Q-14.265 5.759-14.136 5.564Q-14.148 5.579-14.157 5.593Q-14.167 5.607-14.179 5.622L-13.745 3.900Q-13.784 3.720-13.870 3.570Q-13.956 3.419-14.093 3.327Q-14.230 3.236-14.409 3.236Q-14.745 3.236-15.017 3.517Q-15.288 3.798-15.448 4.173Q-15.573 4.493-15.671 4.913Q-15.769 5.333-15.769 5.614Q-15.769 5.904-15.636 6.118Q-15.503 6.333-15.233 6.333",[3594],[3579,3733,3734],{"transform":3663},[1748,3735],{"d":3736,"fill":3624,"stroke":3624,"className":3737,"style":3668},"M-11.246 8.341L-11.246 0.677Q-11.218 0.509-11.062 0.509Q-10.906 0.509-10.879 0.677L-10.879 8.341Q-10.906 8.509-11.062 8.509Q-11.218 8.509-11.246 8.341",[3594],[3579,3739,3740],{"transform":3663},[1748,3741],{"d":3742,"fill":3624,"stroke":3624,"className":3743,"style":3668},"M2.172-0.461L-3.141-0.461Q-3.219-0.468-3.268-0.517Q-3.316-0.566-3.316-0.644Q-3.316-0.714-3.269-0.765Q-3.223-0.816-3.141-0.828L2.172-0.828Q2.246-0.816 2.293-0.765Q2.340-0.714 2.340-0.644Q2.340-0.566 2.291-0.517Q2.242-0.468 2.172-0.461M2.172-2.148L-3.141-2.148Q-3.219-2.156-3.268-2.205Q-3.316-2.254-3.316-2.332Q-3.316-2.402-3.269-2.453Q-3.223-2.504-3.141-2.515L2.172-2.515Q2.246-2.504 2.293-2.453Q2.340-2.402 2.340-2.332Q2.340-2.254 2.291-2.205Q2.242-2.156 2.172-2.148",[3594],[3579,3745,3746],{"transform":3663},[1748,3747],{"d":3748,"fill":3624,"stroke":3624,"className":3749,"style":3668},"M5.976-0.117Q6.167 0.157 6.523 0.284Q6.878 0.411 7.261 0.411Q7.597 0.411 7.806 0.225Q8.015 0.039 8.111-0.254Q8.206-0.546 8.206-0.859Q8.206-1.183 8.109-1.478Q8.011-1.773 7.798-1.957Q7.585-2.140 7.253-2.140L6.687-2.140Q6.656-2.140 6.626-2.170Q6.597-2.199 6.597-2.226L6.597-2.308Q6.597-2.343 6.626-2.369Q6.656-2.394 6.687-2.394L7.167-2.429Q7.453-2.429 7.650-2.634Q7.847-2.839 7.943-3.134Q8.038-3.429 8.038-3.707Q8.038-4.086 7.839-4.324Q7.640-4.562 7.261-4.562Q6.941-4.562 6.652-4.455Q6.363-4.347 6.199-4.125Q6.378-4.125 6.501-3.998Q6.624-3.871 6.624-3.699Q6.624-3.527 6.499-3.402Q6.374-3.277 6.199-3.277Q6.027-3.277 5.902-3.402Q5.777-3.527 5.777-3.699Q5.777-4.066 6.001-4.314Q6.226-4.562 6.566-4.683Q6.906-4.804 7.261-4.804Q7.609-4.804 7.972-4.683Q8.335-4.562 8.583-4.312Q8.831-4.062 8.831-3.707Q8.831-3.222 8.513-2.839Q8.195-2.457 7.718-2.285Q8.269-2.175 8.669-1.789Q9.070-1.402 9.070-0.867Q9.070-0.410 8.806-0.054Q8.542 0.301 8.120 0.493Q7.699 0.684 7.261 0.684Q6.851 0.684 6.458 0.549Q6.066 0.414 5.800 0.129Q5.535-0.156 5.535-0.574Q5.535-0.769 5.667-0.898Q5.800-1.027 5.992-1.027Q6.117-1.027 6.220-0.968Q6.324-0.910 6.386-0.804Q6.449-0.699 6.449-0.574Q6.449-0.379 6.314-0.248Q6.179-0.117 5.976-0.117",[3594],[1748,3751],{"fill":3585,"d":3752},"M29.098.516v-6.26h6.26",[3579,3754,3756],{"transform":3755},"translate(24.93 -5.758)",[1748,3757],{"d":3758,"fill":3581,"stroke":3581,"className":3759,"style":3668},"M-48.586 0.594L-48.594 0.594Q-48.984 0.594-49.227 0.325Q-49.469 0.055-49.566-0.332Q-49.664-0.718-49.664-1.117L-49.664-1.125Q-49.664-2.039-49.246-3.070Q-49.059-3.527-48.760-3.992Q-48.461-4.457-48.059-4.787Q-47.656-5.117-47.223-5.117L-47.215-5.117Q-46.820-5.117-46.582-4.845Q-46.344-4.574-46.248-4.187Q-46.152-3.800-46.152-3.406Q-46.152-2.504-46.559-1.453Q-46.730-1.027-47.039-0.546Q-47.348-0.066-47.752 0.264Q-48.156 0.594-48.586 0.594M-48.574 0.340Q-48.211 0.340-47.902-0.099Q-47.594-0.539-47.396-1.080Q-47.199-1.621-47.070-2.117L-48.809-2.117Q-49.047-1.156-49.047-0.636Q-49.047-0.277-48.953 0.032Q-48.859 0.340-48.574 0.340M-48.734-2.414L-47-2.414Q-46.891-2.836-46.826-3.181Q-46.762-3.527-46.762-3.882Q-46.762-4.261-46.855-4.560Q-46.949-4.859-47.230-4.859Q-47.516-4.859-47.762-4.588Q-48.008-4.316-48.201-3.914Q-48.395-3.511-48.508-3.166Q-48.621-2.820-48.734-2.414",[3594],[3761,3762,3765,3766,3814,3815,3862,3863],"figcaption",{"className":3763},[3764],"tikz-cap","The dot product is the signed length of ",[419,3767,3769],{"className":3768},[422],[419,3770,3772],{"className":3771,"ariaHidden":427},[426],[419,3773,3775,3778],{"className":3774},[431],[419,3776],{"className":3777,"style":1767},[435],[419,3779,3781],{"className":3780},[440,1703],[419,3782,3784],{"className":3783},[456],[419,3785,3787],{"className":3786},[460],[419,3788,3790,3798],{"className":3789,"style":1767},[464],[419,3791,3792,3795],{"style":1715},[419,3793],{"className":3794,"style":1719},[471],[419,3796,778],{"className":3797},[440,553],[419,3799,3800,3803],{"style":1790},[419,3801],{"className":3802,"style":1719},[471],[419,3804,3806],{"className":3805,"style":1732},[1731],[419,3807,3809],{"className":3808,"style":1737},[1736],[1739,3810,3811],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3812],{"d":3813},"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 53.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 1110.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359c-16-25.333-24-45-24-59z","'s shadow on ",[419,3816,3818],{"className":3817},[422],[419,3819,3821],{"className":3820,"ariaHidden":427},[426],[419,3822,3824,3827],{"className":3823},[431],[419,3825],{"className":3826,"style":1699},[435],[419,3828,3830],{"className":3829},[440,1703],[419,3831,3833],{"className":3832},[456],[419,3834,3836],{"className":3835},[460],[419,3837,3839,3847],{"className":3838,"style":1699},[464],[419,3840,3841,3844],{"style":1715},[419,3842],{"className":3843,"style":1719},[471],[419,3845,390],{"className":3846},[440,553],[419,3848,3849,3852],{"style":1715},[419,3850],{"className":3851,"style":1719},[471],[419,3853,3855],{"className":3854,"style":1732},[1731],[419,3856,3858],{"className":3857,"style":1737},[1736],[1739,3859,3860],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3861],{"d":3813}," times ",[419,3864,3866],{"className":3865},[422],[419,3867,3869],{"className":3868,"ariaHidden":427},[426],[419,3870,3872,3875,3878,3913],{"className":3871},[431],[419,3873],{"className":3874,"style":575},[435],[419,3876,2026],{"className":3877},[440],[419,3879,3881],{"className":3880},[440,1703],[419,3882,3884],{"className":3883},[456],[419,3885,3887],{"className":3886},[460],[419,3888,3890,3898],{"className":3889,"style":1699},[464],[419,3891,3892,3895],{"style":1715},[419,3893],{"className":3894,"style":1719},[471],[419,3896,390],{"className":3897},[440,553],[419,3899,3900,3903],{"style":1715},[419,3901],{"className":3902,"style":1719},[471],[419,3904,3906],{"className":3905,"style":1732},[1731],[419,3907,3909],{"className":3908,"style":1737},[1736],[1739,3910,3911],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3912],{"d":3813},[419,3914,2026],{"className":3915},[440],[530,3917,3919],{"id":3918},"the-cross-product-signed-area-and-orientation","The cross product: signed area and orientation",[381,3921,3922,3923,3926],{},"In the plane the ",[385,3924,3925],{},"cross product"," of two vectors is a single scalar:",[419,3928,3930],{"className":3929},[883],[419,3931,3933],{"className":3932},[422],[419,3934,3936,3988,4044,4139,4240],{"className":3935,"ariaHidden":427},[426],[419,3937,3939,3943,3978,3981,3985],{"className":3938},[431],[419,3940],{"className":3941,"style":3942},[435],"height:0.7973em;vertical-align:-0.0833em;",[419,3944,3946],{"className":3945},[440,1703],[419,3947,3949],{"className":3948},[456],[419,3950,3952],{"className":3951},[460],[419,3953,3955,3963],{"className":3954,"style":1699},[464],[419,3956,3957,3960],{"style":1715},[419,3958],{"className":3959,"style":1719},[471],[419,3961,390],{"className":3962},[440,553],[419,3964,3965,3968],{"style":1715},[419,3966],{"className":3967,"style":1719},[471],[419,3969,3971],{"className":3970,"style":1732},[1731],[419,3972,3974],{"className":3973,"style":1737},[1736],[1739,3975,3976],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,3977],{"d":1750},[419,3979],{"className":3980,"style":903},[559],[419,3982,3984],{"className":3983},[907],"×",[419,3986],{"className":3987,"style":903},[559],[419,3989,3991,3994,4029,4032,4035,4038,4041],{"className":3990},[431],[419,3992],{"className":3993,"style":1767},[435],[419,3995,3997],{"className":3996},[440,1703],[419,3998,4000],{"className":3999},[456],[419,4001,4003],{"className":4002},[460],[419,4004,4006,4014],{"className":4005,"style":1767},[464],[419,4007,4008,4011],{"style":1715},[419,4009],{"className":4010,"style":1719},[471],[419,4012,778],{"className":4013},[440,553],[419,4015,4016,4019],{"style":1790},[419,4017],{"className":4018,"style":1719},[471],[419,4020,4022],{"className":4021,"style":1732},[1731],[419,4023,4025],{"className":4024,"style":1737},[1736],[1739,4026,4027],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4028],{"d":1750},[419,4030],{"className":4031,"style":560},[559],[419,4033],{"className":4034,"style":560},[559],[419,4036,565],{"className":4037},[564],[419,4039],{"className":4040,"style":560},[559],[419,4042],{"className":4043,"style":560},[559],[419,4045,4047,4050,4090,4130,4133,4136],{"className":4046},[431],[419,4048],{"className":4049,"style":994},[435],[419,4051,4053,4056],{"className":4052},[440],[419,4054,390],{"className":4055},[440,553],[419,4057,4059],{"className":4058},[452],[419,4060,4062,4082],{"className":4061},[456,652],[419,4063,4065,4079],{"className":4064},[460],[419,4066,4068],{"className":4067,"style":659},[464],[419,4069,4070,4073],{"style":662},[419,4071],{"className":4072,"style":472},[471],[419,4074,4076],{"className":4075},[476,477,478,479],[419,4077,584],{"className":4078},[440,553,479],[419,4080,676],{"className":4081},[675],[419,4083,4085],{"className":4084},[460],[419,4086,4088],{"className":4087,"style":683},[464],[419,4089],{},[419,4091,4093,4096],{"className":4092},[440],[419,4094,778],{"className":4095},[440,553],[419,4097,4099],{"className":4098},[452],[419,4100,4102,4122],{"className":4101},[456,652],[419,4103,4105,4119],{"className":4104},[460],[419,4106,4108],{"className":4107,"style":659},[464],[419,4109,4110,4113],{"style":662},[419,4111],{"className":4112,"style":472},[471],[419,4114,4116],{"className":4115},[476,477,478,479],[419,4117,598],{"className":4118,"style":597},[440,553,479],[419,4120,676],{"className":4121},[675],[419,4123,4125],{"className":4124},[460],[419,4126,4128],{"className":4127,"style":730},[464],[419,4129],{},[419,4131],{"className":4132,"style":903},[559],[419,4134,486],{"className":4135},[907],[419,4137],{"className":4138,"style":903},[559],[419,4140,4142,4145,4185,4225,4228,4231,4234,4237],{"className":4141},[431],[419,4143],{"className":4144,"style":994},[435],[419,4146,4148,4151],{"className":4147},[440],[419,4149,390],{"className":4150},[440,553],[419,4152,4154],{"className":4153},[452],[419,4155,4157,4177],{"className":4156},[456,652],[419,4158,4160,4174],{"className":4159},[460],[419,4161,4163],{"className":4162,"style":659},[464],[419,4164,4165,4168],{"style":662},[419,4166],{"className":4167,"style":472},[471],[419,4169,4171],{"className":4170},[476,477,478,479],[419,4172,598],{"className":4173,"style":597},[440,553,479],[419,4175,676],{"className":4176},[675],[419,4178,4180],{"className":4179},[460],[419,4181,4183],{"className":4182,"style":730},[464],[419,4184],{},[419,4186,4188,4191],{"className":4187},[440],[419,4189,778],{"className":4190},[440,553],[419,4192,4194],{"className":4193},[452],[419,4195,4197,4217],{"className":4196},[456,652],[419,4198,4200,4214],{"className":4199},[460],[419,4201,4203],{"className":4202,"style":659},[464],[419,4204,4205,4208],{"style":662},[419,4206],{"className":4207,"style":472},[471],[419,4209,4211],{"className":4210},[476,477,478,479],[419,4212,584],{"className":4213},[440,553,479],[419,4215,676],{"className":4216},[675],[419,4218,4220],{"className":4219},[460],[419,4221,4223],{"className":4222,"style":683},[464],[419,4224],{},[419,4226],{"className":4227,"style":560},[559],[419,4229],{"className":4230,"style":560},[559],[419,4232,565],{"className":4233},[564],[419,4235],{"className":4236,"style":560},[559],[419,4238],{"className":4239,"style":560},[559],[419,4241,4243,4246,4249,4284,4287,4290,4293,4328,4331,4334,4341,4344,4347],{"className":4242},[431],[419,4244],{"className":4245,"style":2022},[435],[419,4247,2026],{"className":4248},[440],[419,4250,4252],{"className":4251},[440,1703],[419,4253,4255],{"className":4254},[456],[419,4256,4258],{"className":4257},[460],[419,4259,4261,4269],{"className":4260,"style":1699},[464],[419,4262,4263,4266],{"style":1715},[419,4264],{"className":4265,"style":1719},[471],[419,4267,390],{"className":4268},[440,553],[419,4270,4271,4274],{"style":1715},[419,4272],{"className":4273,"style":1719},[471],[419,4275,4277],{"className":4276,"style":1732},[1731],[419,4278,4280],{"className":4279,"style":1737},[1736],[1739,4281,4282],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4283],{"d":1750},[419,4285,2026],{"className":4286},[440],[419,4288],{"className":4289,"style":593},[559],[419,4291,2026],{"className":4292},[440],[419,4294,4296],{"className":4295},[440,1703],[419,4297,4299],{"className":4298},[456],[419,4300,4302],{"className":4301},[460],[419,4303,4305,4313],{"className":4304,"style":1767},[464],[419,4306,4307,4310],{"style":1715},[419,4308],{"className":4309,"style":1719},[471],[419,4311,778],{"className":4312},[440,553],[419,4314,4315,4318],{"style":1790},[419,4316],{"className":4317,"style":1719},[471],[419,4319,4321],{"className":4320,"style":1732},[1731],[419,4322,4324],{"className":4323,"style":1737},[1736],[1739,4325,4326],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4327],{"d":1750},[419,4329,2026],{"className":4330},[440],[419,4332],{"className":4333,"style":593},[559],[419,4335,4337],{"className":4336},[526],[419,4338,4340],{"className":4339},[440,2118],"sin",[419,4342],{"className":4343,"style":593},[559],[419,4345,2127],{"className":4346,"style":2126},[440,553],[419,4348,1533],{"className":4349},[440],[381,4351,4352,4353,4356,4357,4460,4461,2357,4508,4555,4556,4559,4560,4584,4585,4588,4589,4636,4637,4684,4685,3114,4688,4894],{},"Its ",[385,4354,4355],{},"magnitude"," ",[419,4358,4360],{"className":4359},[422],[419,4361,4363,4416],{"className":4362,"ariaHidden":427},[426],[419,4364,4366,4369,4372,4407,4410,4413],{"className":4365},[431],[419,4367],{"className":4368,"style":575},[435],[419,4370,2026],{"className":4371},[440],[419,4373,4375],{"className":4374},[440,1703],[419,4376,4378],{"className":4377},[456],[419,4379,4381],{"className":4380},[460],[419,4382,4384,4392],{"className":4383,"style":1699},[464],[419,4385,4386,4389],{"style":1715},[419,4387],{"className":4388,"style":1719},[471],[419,4390,390],{"className":4391},[440,553],[419,4393,4394,4397],{"style":1715},[419,4395],{"className":4396,"style":1719},[471],[419,4398,4400],{"className":4399,"style":1732},[1731],[419,4401,4403],{"className":4402,"style":1737},[1736],[1739,4404,4405],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4406],{"d":1750},[419,4408],{"className":4409,"style":903},[559],[419,4411,3984],{"className":4412},[907],[419,4414],{"className":4415,"style":903},[559],[419,4417,4419,4422,4457],{"className":4418},[431],[419,4420],{"className":4421,"style":2022},[435],[419,4423,4425],{"className":4424},[440,1703],[419,4426,4428],{"className":4427},[456],[419,4429,4431],{"className":4430},[460],[419,4432,4434,4442],{"className":4433,"style":1767},[464],[419,4435,4436,4439],{"style":1715},[419,4437],{"className":4438,"style":1719},[471],[419,4440,778],{"className":4441},[440,553],[419,4443,4444,4447],{"style":1790},[419,4445],{"className":4446,"style":1719},[471],[419,4448,4450],{"className":4449,"style":1732},[1731],[419,4451,4453],{"className":4452,"style":1737},[1736],[1739,4454,4455],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4456],{"d":1750},[419,4458,2026],{"className":4459},[440]," equals the area of the parallelogram\nspanned by ",[419,4462,4464],{"className":4463},[422],[419,4465,4467],{"className":4466,"ariaHidden":427},[426],[419,4468,4470,4473],{"className":4469},[431],[419,4471],{"className":4472,"style":1699},[435],[419,4474,4476],{"className":4475},[440,1703],[419,4477,4479],{"className":4478},[456],[419,4480,4482],{"className":4481},[460],[419,4483,4485,4493],{"className":4484,"style":1699},[464],[419,4486,4487,4490],{"style":1715},[419,4488],{"className":4489,"style":1719},[471],[419,4491,390],{"className":4492},[440,553],[419,4494,4495,4498],{"style":1715},[419,4496],{"className":4497,"style":1719},[471],[419,4499,4501],{"className":4500,"style":1732},[1731],[419,4502,4504],{"className":4503,"style":1737},[1736],[1739,4505,4506],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4507],{"d":1750},[419,4509,4511],{"className":4510},[422],[419,4512,4514],{"className":4513,"ariaHidden":427},[426],[419,4515,4517,4520],{"className":4516},[431],[419,4518],{"className":4519,"style":1767},[435],[419,4521,4523],{"className":4522},[440,1703],[419,4524,4526],{"className":4525},[456],[419,4527,4529],{"className":4528},[460],[419,4530,4532,4540],{"className":4531,"style":1767},[464],[419,4533,4534,4537],{"style":1715},[419,4535],{"className":4536,"style":1719},[471],[419,4538,778],{"className":4539},[440,553],[419,4541,4542,4545],{"style":1790},[419,4543],{"className":4544,"style":1719},[471],[419,4546,4548],{"className":4547,"style":1732},[1731],[419,4549,4551],{"className":4550,"style":1737},[1736],[1739,4552,4553],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4554],{"d":1750}," (and twice the area of the triangle they form).\nIts ",[385,4557,4558],{},"sign"," is the sign of ",[419,4561,4563],{"className":4562},[422],[419,4564,4566],{"className":4565,"ariaHidden":427},[426],[419,4567,4569,4572,4578,4581],{"className":4568},[431],[419,4570],{"className":4571,"style":2146},[435],[419,4573,4575],{"className":4574},[526],[419,4576,4340],{"className":4577},[440,2118],[419,4579],{"className":4580,"style":593},[559],[419,4582,2127],{"className":4583,"style":2126},[440,553],", which encodes ",[403,4586,4587],{},"orientation",": positive\nwhen ",[419,4590,4592],{"className":4591},[422],[419,4593,4595],{"className":4594,"ariaHidden":427},[426],[419,4596,4598,4601],{"className":4597},[431],[419,4599],{"className":4600,"style":1767},[435],[419,4602,4604],{"className":4603},[440,1703],[419,4605,4607],{"className":4606},[456],[419,4608,4610],{"className":4609},[460],[419,4611,4613,4621],{"className":4612,"style":1767},[464],[419,4614,4615,4618],{"style":1715},[419,4616],{"className":4617,"style":1719},[471],[419,4619,778],{"className":4620},[440,553],[419,4622,4623,4626],{"style":1790},[419,4624],{"className":4625,"style":1719},[471],[419,4627,4629],{"className":4628,"style":1732},[1731],[419,4630,4632],{"className":4631,"style":1737},[1736],[1739,4633,4634],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4635],{"d":1750}," lies counterclockwise from ",[419,4638,4640],{"className":4639},[422],[419,4641,4643],{"className":4642,"ariaHidden":427},[426],[419,4644,4646,4649],{"className":4645},[431],[419,4647],{"className":4648,"style":1699},[435],[419,4650,4652],{"className":4651},[440,1703],[419,4653,4655],{"className":4654},[456],[419,4656,4658],{"className":4657},[460],[419,4659,4661,4669],{"className":4660,"style":1699},[464],[419,4662,4663,4666],{"style":1715},[419,4664],{"className":4665,"style":1719},[471],[419,4667,390],{"className":4668},[440,553],[419,4670,4671,4674],{"style":1715},[419,4672],{"className":4673,"style":1719},[471],[419,4675,4677],{"className":4676,"style":1732},[1731],[419,4678,4680],{"className":4679,"style":1737},[1736],[1739,4681,4682],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4683],{"d":1750},", negative when clockwise, zero\nwhen the two are parallel (collinear). Unlike the dot product, the cross product\nis ",[385,4686,4687],{},"antisymmetric",[419,4689,4691],{"className":4690},[422],[419,4692,4694,4744,4794,4850],{"className":4693,"ariaHidden":427},[426],[419,4695,4697,4700,4735,4738,4741],{"className":4696},[431],[419,4698],{"className":4699,"style":3942},[435],[419,4701,4703],{"className":4702},[440,1703],[419,4704,4706],{"className":4705},[456],[419,4707,4709],{"className":4708},[460],[419,4710,4712,4720],{"className":4711,"style":1699},[464],[419,4713,4714,4717],{"style":1715},[419,4715],{"className":4716,"style":1719},[471],[419,4718,390],{"className":4719},[440,553],[419,4721,4722,4725],{"style":1715},[419,4723],{"className":4724,"style":1719},[471],[419,4726,4728],{"className":4727,"style":1732},[1731],[419,4729,4731],{"className":4730,"style":1737},[1736],[1739,4732,4733],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4734],{"d":1750},[419,4736],{"className":4737,"style":903},[559],[419,4739,3984],{"className":4740},[907],[419,4742],{"className":4743,"style":903},[559],[419,4745,4747,4750,4785,4788,4791],{"className":4746},[431],[419,4748],{"className":4749,"style":1767},[435],[419,4751,4753],{"className":4752},[440,1703],[419,4754,4756],{"className":4755},[456],[419,4757,4759],{"className":4758},[460],[419,4760,4762,4770],{"className":4761,"style":1767},[464],[419,4763,4764,4767],{"style":1715},[419,4765],{"className":4766,"style":1719},[471],[419,4768,778],{"className":4769},[440,553],[419,4771,4772,4775],{"style":1790},[419,4773],{"className":4774,"style":1719},[471],[419,4776,4778],{"className":4777,"style":1732},[1731],[419,4779,4781],{"className":4780,"style":1737},[1736],[1739,4782,4783],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4784],{"d":1750},[419,4786],{"className":4787,"style":560},[559],[419,4789,565],{"className":4790},[564],[419,4792],{"className":4793,"style":560},[559],[419,4795,4797,4800,4803,4806,4841,4844,4847],{"className":4796},[431],[419,4798],{"className":4799,"style":2022},[435],[419,4801,486],{"className":4802},[440],[419,4804,580],{"className":4805},[579],[419,4807,4809],{"className":4808},[440,1703],[419,4810,4812],{"className":4811},[456],[419,4813,4815],{"className":4814},[460],[419,4816,4818,4826],{"className":4817,"style":1767},[464],[419,4819,4820,4823],{"style":1715},[419,4821],{"className":4822,"style":1719},[471],[419,4824,778],{"className":4825},[440,553],[419,4827,4828,4831],{"style":1790},[419,4829],{"className":4830,"style":1719},[471],[419,4832,4834],{"className":4833,"style":1732},[1731],[419,4835,4837],{"className":4836,"style":1737},[1736],[1739,4838,4839],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4840],{"d":1750},[419,4842],{"className":4843,"style":903},[559],[419,4845,3984],{"className":4846},[907],[419,4848],{"className":4849,"style":903},[559],[419,4851,4853,4856,4891],{"className":4852},[431],[419,4854],{"className":4855,"style":575},[435],[419,4857,4859],{"className":4858},[440,1703],[419,4860,4862],{"className":4861},[456],[419,4863,4865],{"className":4864},[460],[419,4866,4868,4876],{"className":4867,"style":1699},[464],[419,4869,4870,4873],{"style":1715},[419,4871],{"className":4872,"style":1719},[471],[419,4874,390],{"className":4875},[440,553],[419,4877,4878,4881],{"style":1715},[419,4879],{"className":4880,"style":1719},[471],[419,4882,4884],{"className":4883,"style":1732},[1731],[419,4885,4887],{"className":4886,"style":1737},[1736],[1739,4888,4889],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,4890],{"d":1750},[419,4892,603],{"className":4893},[602],". This single\nquantity, an exact integer for integer inputs, is the seed of nearly everything\nthat follows.",[530,4896,4898],{"id":4897},"the-orientation-test","The orientation test",[381,4900,4901,4902,4917,4918,4920,4921,4925,4926,4929],{},"Anchor two difference vectors at a common point ",[419,4903,4905],{"className":4904},[422],[419,4906,4908],{"className":4907,"ariaHidden":427},[426],[419,4909,4911,4914],{"className":4910},[431],[419,4912],{"className":4913,"style":549},[435],[419,4915,620],{"className":4916},[440,553]," and take their cross product.\nThis is the ",[385,4919,4587],{}," (or ",[4922,4923,4924],"q",{},"ccw",") test, ",[403,4927,4928],{},"the"," fundamental primitive of\nplanar computational geometry:",[419,4931,4933],{"className":4932},[883],[419,4934,4936],{"className":4935},[422],[419,4937,4939,4996,5036,5057,5078,5111,5184,5286,5344,5402,5503],{"className":4938,"ariaHidden":427},[426],[419,4940,4942,4945,4952,4955,4958,4961,4964,4967,4970,4973,4978,4981,4984,4987,4990,4993],{"className":4941},[431],[419,4943],{"className":4944,"style":575},[435],[419,4946,4948],{"className":4947},[526],[419,4949,4924],{"className":4950,"style":4951},[440,2118],"margin-right:0.0139em;",[419,4953,580],{"className":4954},[579],[419,4956,620],{"className":4957},[440,553],[419,4959,589],{"className":4960},[588],[419,4962],{"className":4963,"style":593},[559],[419,4965,753],{"className":4966,"style":752},[440,553],[419,4968,589],{"className":4969},[588],[419,4971],{"className":4972,"style":593},[559],[419,4974,4977],{"className":4975,"style":4976},[440,553],"margin-right:0.0715em;","C",[419,4979,603],{"className":4980},[602],[419,4982],{"className":4983,"style":560},[559],[419,4985],{"className":4986,"style":560},[559],[419,4988,565],{"className":4989},[564],[419,4991],{"className":4992,"style":560},[559],[419,4994],{"className":4995,"style":560},[559],[419,4997,4999,5003,5009,5013,5021,5024,5027,5030,5033],{"className":4998},[431],[419,5000],{"className":5001,"style":5002},[435],"height:1.2em;vertical-align:-0.35em;",[419,5004,5006],{"className":5005},[526],[419,5007,4558],{"className":5008},[440,2118],[419,5010],{"className":5011,"style":5012},[559],"margin-right:-0.1667em;",[419,5014,5016],{"className":5015},[579],[419,5017,580],{"className":5018},[5019,5020],"delimsizing","size1",[419,5022,580],{"className":5023},[579],[419,5025,753],{"className":5026,"style":752},[440,553],[419,5028],{"className":5029,"style":903},[559],[419,5031,486],{"className":5032},[907],[419,5034],{"className":5035,"style":903},[559],[419,5037,5039,5042,5045,5048,5051,5054],{"className":5038},[431],[419,5040],{"className":5041,"style":575},[435],[419,5043,620],{"className":5044},[440,553],[419,5046,603],{"className":5047},[602],[419,5049],{"className":5050,"style":903},[559],[419,5052,3984],{"className":5053},[907],[419,5055],{"className":5056,"style":903},[559],[419,5058,5060,5063,5066,5069,5072,5075],{"className":5059},[431],[419,5061],{"className":5062,"style":575},[435],[419,5064,580],{"className":5065},[579],[419,5067,4977],{"className":5068,"style":4976},[440,553],[419,5070],{"className":5071,"style":903},[559],[419,5073,486],{"className":5074},[907],[419,5076],{"className":5077,"style":903},[559],[419,5079,5081,5084,5087,5090,5096,5099,5102,5105,5108],{"className":5080},[431],[419,5082],{"className":5083,"style":5002},[435],[419,5085,620],{"className":5086},[440,553],[419,5088,603],{"className":5089},[602],[419,5091,5093],{"className":5092},[602],[419,5094,603],{"className":5095},[5019,5020],[419,5097],{"className":5098,"style":560},[559],[419,5100],{"className":5101,"style":560},[559],[419,5103,565],{"className":5104},[564],[419,5106],{"className":5107,"style":560},[559],[419,5109],{"className":5110,"style":560},[559],[419,5112,5114,5117,5123,5126,5132,5135,5175,5178,5181],{"className":5113},[431],[419,5115],{"className":5116,"style":5002},[435],[419,5118,5120],{"className":5119},[526],[419,5121,4558],{"className":5122},[440,2118],[419,5124],{"className":5125,"style":5012},[559],[419,5127,5129],{"className":5128},[579],[419,5130,580],{"className":5131},[5019,5020],[419,5133,580],{"className":5134},[579],[419,5136,5138,5141],{"className":5137},[440],[419,5139,778],{"className":5140},[440,553],[419,5142,5144],{"className":5143},[452],[419,5145,5147,5167],{"className":5146},[456,652],[419,5148,5150,5164],{"className":5149},[460],[419,5151,5153],{"className":5152,"style":659},[464],[419,5154,5155,5158],{"style":662},[419,5156],{"className":5157,"style":472},[471],[419,5159,5161],{"className":5160},[476,477,478,479],[419,5162,584],{"className":5163},[440,553,479],[419,5165,676],{"className":5166},[675],[419,5168,5170],{"className":5169},[460],[419,5171,5173],{"className":5172,"style":683},[464],[419,5174],{},[419,5176],{"className":5177,"style":903},[559],[419,5179,486],{"className":5180},[907],[419,5182],{"className":5183,"style":903},[559],[419,5185,5187,5190,5230,5233,5236,5277,5280,5283],{"className":5186},[431],[419,5188],{"className":5189,"style":636},[435],[419,5191,5193,5196],{"className":5192},[440],[419,5194,390],{"className":5195},[440,553],[419,5197,5199],{"className":5198},[452],[419,5200,5202,5222],{"className":5201},[456,652],[419,5203,5205,5219],{"className":5204},[460],[419,5206,5208],{"className":5207,"style":659},[464],[419,5209,5210,5213],{"style":662},[419,5211],{"className":5212,"style":472},[471],[419,5214,5216],{"className":5215},[476,477,478,479],[419,5217,584],{"className":5218},[440,553,479],[419,5220,676],{"className":5221},[675],[419,5223,5225],{"className":5224},[460],[419,5226,5228],{"className":5227,"style":683},[464],[419,5229],{},[419,5231,603],{"className":5232},[602],[419,5234,580],{"className":5235},[579],[419,5237,5239,5243],{"className":5238},[440],[419,5240,5242],{"className":5241},[440,553],"c",[419,5244,5246],{"className":5245},[452],[419,5247,5249,5269],{"className":5248},[456,652],[419,5250,5252,5266],{"className":5251},[460],[419,5253,5255],{"className":5254,"style":659},[464],[419,5256,5257,5260],{"style":662},[419,5258],{"className":5259,"style":472},[471],[419,5261,5263],{"className":5262},[476,477,478,479],[419,5264,598],{"className":5265,"style":597},[440,553,479],[419,5267,676],{"className":5268},[675],[419,5270,5272],{"className":5271},[460],[419,5273,5275],{"className":5274,"style":730},[464],[419,5276],{},[419,5278],{"className":5279,"style":903},[559],[419,5281,486],{"className":5282},[907],[419,5284],{"className":5285,"style":903},[559],[419,5287,5289,5292,5332,5335,5338,5341],{"className":5288},[431],[419,5290],{"className":5291,"style":636},[435],[419,5293,5295,5298],{"className":5294},[440],[419,5296,390],{"className":5297},[440,553],[419,5299,5301],{"className":5300},[452],[419,5302,5304,5324],{"className":5303},[456,652],[419,5305,5307,5321],{"className":5306},[460],[419,5308,5310],{"className":5309,"style":659},[464],[419,5311,5312,5315],{"style":662},[419,5313],{"className":5314,"style":472},[471],[419,5316,5318],{"className":5317},[476,477,478,479],[419,5319,598],{"className":5320,"style":597},[440,553,479],[419,5322,676],{"className":5323},[675],[419,5325,5327],{"className":5326},[460],[419,5328,5330],{"className":5329,"style":730},[464],[419,5331],{},[419,5333,603],{"className":5334},[602],[419,5336],{"className":5337,"style":903},[559],[419,5339,486],{"className":5340},[907],[419,5342],{"className":5343,"style":903},[559],[419,5345,5347,5350,5353,5393,5396,5399],{"className":5346},[431],[419,5348],{"className":5349,"style":636},[435],[419,5351,580],{"className":5352},[579],[419,5354,5356,5359],{"className":5355},[440],[419,5357,778],{"className":5358},[440,553],[419,5360,5362],{"className":5361},[452],[419,5363,5365,5385],{"className":5364},[456,652],[419,5366,5368,5382],{"className":5367},[460],[419,5369,5371],{"className":5370,"style":659},[464],[419,5372,5373,5376],{"style":662},[419,5374],{"className":5375,"style":472},[471],[419,5377,5379],{"className":5378},[476,477,478,479],[419,5380,598],{"className":5381,"style":597},[440,553,479],[419,5383,676],{"className":5384},[675],[419,5386,5388],{"className":5387},[460],[419,5389,5391],{"className":5390,"style":730},[464],[419,5392],{},[419,5394],{"className":5395,"style":903},[559],[419,5397,486],{"className":5398},[907],[419,5400],{"className":5401,"style":903},[559],[419,5403,5405,5408,5448,5451,5454,5494,5497,5500],{"className":5404},[431],[419,5406],{"className":5407,"style":636},[435],[419,5409,5411,5414],{"className":5410},[440],[419,5412,390],{"className":5413},[440,553],[419,5415,5417],{"className":5416},[452],[419,5418,5420,5440],{"className":5419},[456,652],[419,5421,5423,5437],{"className":5422},[460],[419,5424,5426],{"className":5425,"style":659},[464],[419,5427,5428,5431],{"style":662},[419,5429],{"className":5430,"style":472},[471],[419,5432,5434],{"className":5433},[476,477,478,479],[419,5435,598],{"className":5436,"style":597},[440,553,479],[419,5438,676],{"className":5439},[675],[419,5441,5443],{"className":5442},[460],[419,5444,5446],{"className":5445,"style":730},[464],[419,5447],{},[419,5449,603],{"className":5450},[602],[419,5452,580],{"className":5453},[579],[419,5455,5457,5460],{"className":5456},[440],[419,5458,5242],{"className":5459},[440,553],[419,5461,5463],{"className":5462},[452],[419,5464,5466,5486],{"className":5465},[456,652],[419,5467,5469,5483],{"className":5468},[460],[419,5470,5472],{"className":5471,"style":659},[464],[419,5473,5474,5477],{"style":662},[419,5475],{"className":5476,"style":472},[471],[419,5478,5480],{"className":5479},[476,477,478,479],[419,5481,584],{"className":5482},[440,553,479],[419,5484,676],{"className":5485},[675],[419,5487,5489],{"className":5488},[460],[419,5490,5492],{"className":5491,"style":683},[464],[419,5493],{},[419,5495],{"className":5496,"style":903},[559],[419,5498,486],{"className":5499},[907],[419,5501],{"className":5502,"style":903},[559],[419,5504,5506,5509,5549,5552,5558],{"className":5505},[431],[419,5507],{"className":5508,"style":5002},[435],[419,5510,5512,5515],{"className":5511},[440],[419,5513,390],{"className":5514},[440,553],[419,5516,5518],{"className":5517},[452],[419,5519,5521,5541],{"className":5520},[456,652],[419,5522,5524,5538],{"className":5523},[460],[419,5525,5527],{"className":5526,"style":659},[464],[419,5528,5529,5532],{"style":662},[419,5530],{"className":5531,"style":472},[471],[419,5533,5535],{"className":5534},[476,477,478,479],[419,5536,584],{"className":5537},[440,553,479],[419,5539,676],{"className":5540},[675],[419,5542,5544],{"className":5543},[460],[419,5545,5547],{"className":5546,"style":683},[464],[419,5548],{},[419,5550,603],{"className":5551},[602],[419,5553,5555],{"className":5554},[602],[419,5556,603],{"className":5557},[5019,5020],[419,5559,1533],{"className":5560},[440],[381,5562,5563,5564,879],{},"It reports the sense of the turn made by the directed path ",[419,5565,5567],{"className":5566},[422],[419,5568,5570,5589,5607],{"className":5569,"ariaHidden":427},[426],[419,5571,5573,5576,5579,5582,5586],{"className":5572},[431],[419,5574],{"className":5575,"style":549},[435],[419,5577,620],{"className":5578},[440,553],[419,5580],{"className":5581,"style":560},[559],[419,5583,5585],{"className":5584},[564],"→",[419,5587],{"className":5588,"style":560},[559],[419,5590,5592,5595,5598,5601,5604],{"className":5591},[431],[419,5593],{"className":5594,"style":549},[435],[419,5596,753],{"className":5597,"style":752},[440,553],[419,5599],{"className":5600,"style":560},[559],[419,5602,5585],{"className":5603},[564],[419,5605],{"className":5606,"style":560},[559],[419,5608,5610,5613],{"className":5609},[431],[419,5611],{"className":5612,"style":549},[435],[419,5614,4977],{"className":5615,"style":4976},[440,553],[2301,5617,5618],{"type":2303},[381,5619,5620,4356,5623,5690,5691,5694,5695,5761,5762,5765,5766,5829,5830,1533],{},[385,5621,5622],{},"Fact (Left turn test).",[419,5624,5626],{"className":5625},[422],[419,5627,5629,5677],{"className":5628,"ariaHidden":427},[426],[419,5630,5632,5635,5641,5644,5647,5650,5653,5656,5659,5662,5665,5668,5671,5674],{"className":5631},[431],[419,5633],{"className":5634,"style":575},[435],[419,5636,5638],{"className":5637},[526],[419,5639,4924],{"className":5640,"style":4951},[440,2118],[419,5642,580],{"className":5643},[579],[419,5645,620],{"className":5646},[440,553],[419,5648,589],{"className":5649},[588],[419,5651],{"className":5652,"style":593},[559],[419,5654,753],{"className":5655,"style":752},[440,553],[419,5657,589],{"className":5658},[588],[419,5660],{"className":5661,"style":593},[559],[419,5663,4977],{"className":5664,"style":4976},[440,553],[419,5666,603],{"className":5667},[602],[419,5669],{"className":5670,"style":560},[559],[419,5672,565],{"className":5673},[564],[419,5675],{"className":5676,"style":560},[559],[419,5678,5680,5684,5687],{"className":5679},[431],[419,5681],{"className":5682,"style":5683},[435],"height:0.7278em;vertical-align:-0.0833em;",[419,5685,908],{"className":5686},[440],[419,5688,441],{"className":5689},[440],": the points make a ",[385,5692,5693],{},"left turn"," (counterclockwise).\n",[419,5696,5698],{"className":5697},[422],[419,5699,5701,5749],{"className":5700,"ariaHidden":427},[426],[419,5702,5704,5707,5713,5716,5719,5722,5725,5728,5731,5734,5737,5740,5743,5746],{"className":5703},[431],[419,5705],{"className":5706,"style":575},[435],[419,5708,5710],{"className":5709},[526],[419,5711,4924],{"className":5712,"style":4951},[440,2118],[419,5714,580],{"className":5715},[579],[419,5717,620],{"className":5718},[440,553],[419,5720,589],{"className":5721},[588],[419,5723],{"className":5724,"style":593},[559],[419,5726,753],{"className":5727,"style":752},[440,553],[419,5729,589],{"className":5730},[588],[419,5732],{"className":5733,"style":593},[559],[419,5735,4977],{"className":5736,"style":4976},[440,553],[419,5738,603],{"className":5739},[602],[419,5741],{"className":5742,"style":560},[559],[419,5744,565],{"className":5745},[564],[419,5747],{"className":5748,"style":560},[559],[419,5750,5752,5755,5758],{"className":5751},[431],[419,5753],{"className":5754,"style":5683},[435],[419,5756,486],{"className":5757},[440],[419,5759,441],{"className":5760},[440],": a ",[385,5763,5764],{},"right turn"," (clockwise).\n",[419,5767,5769],{"className":5768},[422],[419,5770,5772,5820],{"className":5771,"ariaHidden":427},[426],[419,5773,5775,5778,5784,5787,5790,5793,5796,5799,5802,5805,5808,5811,5814,5817],{"className":5774},[431],[419,5776],{"className":5777,"style":575},[435],[419,5779,5781],{"className":5780},[526],[419,5782,4924],{"className":5783,"style":4951},[440,2118],[419,5785,580],{"className":5786},[579],[419,5788,620],{"className":5789},[440,553],[419,5791,589],{"className":5792},[588],[419,5794],{"className":5795,"style":593},[559],[419,5797,753],{"className":5798,"style":752},[440,553],[419,5800,589],{"className":5801},[588],[419,5803],{"className":5804,"style":593},[559],[419,5806,4977],{"className":5807,"style":4976},[440,553],[419,5809,603],{"className":5810},[602],[419,5812],{"className":5813,"style":560},[559],[419,5815,565],{"className":5816},[564],[419,5818],{"className":5819,"style":560},[559],[419,5821,5823,5826],{"className":5822},[431],[419,5824],{"className":5825,"style":2267},[435],[419,5827,448],{"className":5828},[440],": the three points are ",[385,5831,5832],{},"collinear",[3568,5834,5836,6027],{"className":5835},[3571,3572],[1739,5837,5841],{"xmlns":1741,"width":5838,"height":5839,"viewBox":5840},"244.784","167.093","-75 -75 183.588 125.319",[3579,5842,5843,5847,5850,5857,5860,5867,5870,5877,5905,5933,5941,5965,5968,5983,5992],{"stroke":3581,"style":3582},[1748,5844],{"fill":3624,"stroke":3585,"d":5845,"style":5846},"m-44.434-.31 91.049-11.38 22.762-56.906-91.049 11.38Z","fill-opacity:.12;stroke-opacity:.12",[1748,5848],{"stroke":3585,"d":5849},"M-42.596-.31a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,5851,5853],{"transform":5852},"translate(-11.91 11.124)",[1748,5854],{"d":5855,"fill":3581,"stroke":3581,"className":5856,"style":3595},"M-42.272-0.310L-44.003-0.310Q-44.100-0.310-44.100-0.429Q-44.100-0.486-44.069-0.556Q-44.038-0.626-43.977-0.626Q-43.287-0.626-42.887-1.237Q-42.887-1.237-42.861-1.264L-39.591-6.647Q-39.530-6.752-39.402-6.752L-39.314-6.752Q-39.191-6.752-39.178-6.647L-38.550-0.815Q-38.506-0.697-38.315-0.662Q-38.123-0.626-37.864-0.626Q-37.820-0.626-37.787-0.589Q-37.754-0.552-37.754-0.517Q-37.754-0.310-37.917-0.310L-40.149-0.310Q-40.189-0.310-40.220-0.350Q-40.250-0.389-40.250-0.429Q-40.250-0.490-40.215-0.558Q-40.180-0.626-40.123-0.626Q-39.846-0.626-39.637-0.670Q-39.429-0.714-39.385-0.868L-39.547-2.353L-41.868-2.353L-42.588-1.158Q-42.672-1.035-42.672-0.912Q-42.672-0.754-42.531-0.690Q-42.391-0.626-42.210-0.626Q-42.166-0.626-42.140-0.593Q-42.114-0.560-42.114-0.517Q-42.114-0.310-42.272-0.310M-39.899-5.592L-41.670-2.670L-39.582-2.670",[3594],[1748,5858],{"stroke":3585,"d":5859},"M48.453-11.69a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,5861,5863],{"transform":5862},"translate(96.023 -.256)",[1748,5864],{"d":5865,"fill":3581,"stroke":3581,"className":5866,"style":3595},"M-40.457-0.310L-43.929-0.310Q-44.038-0.310-44.038-0.429Q-44.038-0.490-44.006-0.558Q-43.973-0.626-43.911-0.626Q-43.410-0.626-43.182-0.679Q-43.054-0.727-42.984-0.956L-41.762-5.873Q-41.745-5.961-41.745-6.005Q-41.745-6.071-41.771-6.089Q-41.942-6.142-42.474-6.142Q-42.580-6.142-42.580-6.260Q-42.580-6.322-42.547-6.390Q-42.514-6.458-42.452-6.458L-39.178-6.458Q-38.774-6.458-38.381-6.322Q-37.987-6.185-37.732-5.902Q-37.477-5.619-37.477-5.206Q-37.477-4.770-37.772-4.410Q-38.066-4.050-38.504-3.826Q-38.941-3.602-39.376-3.522Q-39.016-3.487-38.688-3.329Q-38.361-3.171-38.156-2.894Q-37.952-2.617-37.952-2.252Q-37.952-1.839-38.183-1.479Q-38.413-1.119-38.800-0.857Q-39.187-0.596-39.622-0.453Q-40.057-0.310-40.457-0.310M-42.272-0.688Q-42.272-0.626-41.986-0.626L-40.637-0.626Q-40.189-0.626-39.769-0.864Q-39.350-1.101-39.097-1.494Q-38.844-1.888-38.844-2.336Q-38.844-2.630-38.965-2.868Q-39.086-3.105-39.303-3.241Q-39.521-3.377-39.815-3.377L-41.617-3.377L-42.237-0.894Q-42.272-0.754-42.272-0.688M-41.015-5.808L-41.556-3.641L-40.141-3.641Q-39.723-3.641-39.299-3.854Q-38.875-4.067-38.609-4.432Q-38.343-4.797-38.343-5.232Q-38.343-5.627-38.600-5.884Q-38.857-6.142-39.257-6.142L-40.545-6.142Q-40.804-6.142-40.879-6.095Q-40.954-6.049-41.015-5.808",[3594],[1748,5868],{"stroke":3585,"d":5869},"M-19.833-57.215a1.839 1.839 0 1 0-3.678 0 1.839 1.839 0 0 0 3.678 0m-1.839 0",[3579,5871,5873],{"transform":5872},"translate(19.14 -62.477)",[1748,5874],{"d":5875,"fill":3581,"stroke":3581,"className":5876,"style":3595},"M-43.102-2.283Q-43.102-1.453-42.615-0.941Q-42.127-0.429-41.292-0.429Q-40.721-0.429-40.187-0.710Q-39.653-0.991-39.268-1.472Q-38.884-1.954-38.739-2.507Q-38.730-2.538-38.706-2.562Q-38.682-2.586-38.646-2.586L-38.541-2.586Q-38.449-2.586-38.449-2.472Q-38.611-1.835-39.064-1.290Q-39.517-0.745-40.143-0.429Q-40.769-0.112-41.437-0.112Q-42.166-0.112-42.742-0.429Q-43.318-0.745-43.647-1.310Q-43.977-1.874-43.977-2.604Q-43.977-3.369-43.628-4.105Q-43.278-4.841-42.696-5.410Q-42.114-5.979-41.362-6.317Q-40.611-6.656-39.855-6.656Q-39.385-6.656-38.987-6.451Q-38.589-6.247-38.343-5.865L-37.631-6.638Q-37.614-6.656-37.574-6.656L-37.521-6.656Q-37.434-6.656-37.434-6.537L-38.036-4.142Q-38.053-4.063-38.123-4.063L-38.260-4.063Q-38.352-4.063-38.352-4.182Q-38.312-4.362-38.312-4.612Q-38.312-5.074-38.477-5.469Q-38.642-5.865-38.972-6.102Q-39.301-6.339-39.771-6.339Q-40.510-6.339-41.127-5.981Q-41.745-5.623-42.186-5.028Q-42.628-4.432-42.865-3.709Q-43.102-2.986-43.102-2.283",[3594],[3579,5878,5879,5882,5885],{"fill":3624,"stroke":3624,"style":3598},[1748,5880],{"fill":3585,"d":5881},"m-42.411-.563 84.423-10.553",[1748,5883],{"stroke":3585,"d":5884},"m44.592-11.438-4.386-1.548 1.806 1.87-1.29 2.258",[3579,5886,5887,5893,5899],{"fill":3624,"stroke":3585,"fontSize":3608},[3579,5888,5890],{"transform":5889},"translate(32.68 4.192)",[1748,5891],{"d":5865,"fill":3624,"stroke":3624,"className":5892,"style":3595},[3594],[3579,5894,5895],{"transform":5889},[1748,5896],{"d":5897,"fill":3624,"stroke":3624,"className":5898,"style":3595},"M-28.695-2.362L-33.977-2.362Q-34.052-2.375-34.105-2.428Q-34.158-2.481-34.158-2.560Q-34.158-2.626-34.103-2.681Q-34.048-2.736-33.977-2.749L-28.695-2.749Q-28.625-2.736-28.574-2.685Q-28.524-2.635-28.524-2.560Q-28.524-2.393-28.695-2.362",[3594],[3579,5900,5901],{"transform":5889},[1748,5902],{"d":5903,"fill":3624,"stroke":3624,"className":5904,"style":3595},"M-23.519-0.310L-25.250-0.310Q-25.347-0.310-25.347-0.429Q-25.347-0.486-25.316-0.556Q-25.285-0.626-25.224-0.626Q-24.534-0.626-24.134-1.237Q-24.134-1.237-24.108-1.264L-20.838-6.647Q-20.777-6.752-20.649-6.752L-20.561-6.752Q-20.438-6.752-20.425-6.647L-19.797-0.815Q-19.753-0.697-19.562-0.662Q-19.370-0.626-19.111-0.626Q-19.067-0.626-19.034-0.589Q-19.001-0.552-19.001-0.517Q-19.001-0.310-19.164-0.310L-21.396-0.310Q-21.436-0.310-21.467-0.350Q-21.497-0.389-21.497-0.429Q-21.497-0.490-21.462-0.558Q-21.427-0.626-21.370-0.626Q-21.093-0.626-20.884-0.670Q-20.676-0.714-20.632-0.868L-20.794-2.353L-23.115-2.353L-23.835-1.158Q-23.919-1.035-23.919-0.912Q-23.919-0.754-23.778-0.690Q-23.638-0.626-23.457-0.626Q-23.413-0.626-23.387-0.593Q-23.361-0.560-23.361-0.517Q-23.361-0.310-23.519-0.310M-21.146-5.592L-22.917-2.670L-20.829-2.670",[3594],[3579,5906,5907,5910,5913],{"fill":3624,"stroke":3624,"style":3598},[1748,5908],{"fill":3585,"d":5909},"m-43.677-2.203 20.283-50.706",[1748,5911],{"stroke":3585,"d":5912},"m-22.429-55.323-3.476 3.09 2.51-.676 1.352 2.22",[3579,5914,5915,5921,5927],{"fill":3624,"stroke":3585,"fontSize":3608},[3579,5916,5918],{"transform":5917},"translate(-17.836 -25.794)",[1748,5919],{"d":5875,"fill":3624,"stroke":3624,"className":5920,"style":3595},[3594],[3579,5922,5923],{"transform":5917},[1748,5924],{"d":5925,"fill":3624,"stroke":3624,"className":5926,"style":3595},"M-28.900-2.362L-34.182-2.362Q-34.257-2.375-34.310-2.428Q-34.363-2.481-34.363-2.560Q-34.363-2.626-34.308-2.681Q-34.253-2.736-34.182-2.749L-28.900-2.749Q-28.830-2.736-28.779-2.685Q-28.729-2.635-28.729-2.560Q-28.729-2.393-28.900-2.362",[3594],[3579,5928,5929],{"transform":5917},[1748,5930],{"d":5931,"fill":3624,"stroke":3624,"className":5932,"style":3595},"M-23.724-0.310L-25.455-0.310Q-25.552-0.310-25.552-0.429Q-25.552-0.486-25.521-0.556Q-25.490-0.626-25.429-0.626Q-24.739-0.626-24.339-1.237Q-24.339-1.237-24.313-1.264L-21.043-6.647Q-20.982-6.752-20.854-6.752L-20.766-6.752Q-20.643-6.752-20.630-6.647L-20.002-0.815Q-19.958-0.697-19.767-0.662Q-19.575-0.626-19.316-0.626Q-19.272-0.626-19.239-0.589Q-19.206-0.552-19.206-0.517Q-19.206-0.310-19.369-0.310L-21.601-0.310Q-21.641-0.310-21.672-0.350Q-21.702-0.389-21.702-0.429Q-21.702-0.490-21.667-0.558Q-21.632-0.626-21.575-0.626Q-21.298-0.626-21.089-0.670Q-20.881-0.714-20.837-0.868L-20.999-2.353L-23.320-2.353L-24.040-1.158Q-24.124-1.035-24.124-0.912Q-24.124-0.754-23.983-0.690Q-23.843-0.626-23.662-0.626Q-23.618-0.626-23.592-0.593Q-23.566-0.560-23.566-0.517Q-23.566-0.310-23.724-0.310M-21.351-5.592L-23.122-2.670L-21.034-2.670",[3594],[3579,5934,5935,5938],{"fill":3624,"stroke":3624,"style":3656},[1748,5936],{"fill":3585,"d":5937},"M44.652-12.242C15.181-20.52-1.432-31.596-18.425-53.105",[1748,5939],{"stroke":3585,"d":5940},"m-20.408-55.616 1.165 5.604.818-3.093 3.2-.08",[3579,5942,5943],{"fill":3624,"stroke":3624},[3579,5944,5946,5953,5959],{"fill":3624,"stroke":3585,"fontFamily":5945,"fontSize":3608},"cmr9",[3579,5947,5949],{"transform":5948},"translate(56.935 -51.81)",[1748,5950],{"d":5951,"fill":3624,"stroke":3624,"className":5952,"style":3595},"M-42.065-0.310L-44.126-0.310L-44.126-0.626Q-43.819-0.626-43.628-0.679Q-43.436-0.732-43.436-0.921L-43.436-5.636Q-43.436-5.878-43.507-5.986Q-43.577-6.093-43.711-6.117Q-43.845-6.142-44.126-6.142L-44.126-6.458L-42.760-6.555L-42.760-0.921Q-42.760-0.732-42.566-0.679Q-42.373-0.626-42.065-0.626L-42.065-0.310M-39.556-0.209Q-40.114-0.209-40.587-0.492Q-41.059-0.776-41.334-1.253Q-41.608-1.729-41.608-2.283Q-41.608-2.679-41.465-3.054Q-41.323-3.430-41.066-3.718Q-40.809-4.006-40.450-4.175Q-40.092-4.344-39.688-4.344Q-39.143-4.344-38.772-4.107Q-38.400-3.870-38.214-3.452Q-38.027-3.035-38.027-2.498Q-38.027-2.446-38.051-2.408Q-38.075-2.371-38.123-2.371L-40.795-2.371L-40.795-2.292Q-40.795-1.545-40.483-1.022Q-40.171-0.499-39.473-0.499Q-39.068-0.499-38.747-0.756Q-38.427-1.013-38.304-1.417Q-38.286-1.497-38.203-1.497L-38.123-1.497Q-38.084-1.497-38.055-1.466Q-38.027-1.435-38.027-1.391L-38.027-1.356Q-38.132-1.013-38.354-0.754Q-38.576-0.495-38.890-0.352Q-39.205-0.209-39.556-0.209M-40.787-2.622L-38.673-2.622Q-38.673-2.890-38.726-3.136Q-38.778-3.382-38.899-3.604Q-39.020-3.826-39.218-3.953Q-39.415-4.081-39.688-4.081Q-40.031-4.081-40.283-3.856Q-40.536-3.632-40.661-3.294Q-40.787-2.956-40.787-2.622M-35.214-0.310L-37.447-0.310L-37.447-0.626Q-37.139-0.626-36.948-0.679Q-36.757-0.732-36.757-0.921L-36.757-3.874L-37.447-3.874L-37.447-4.190L-36.757-4.190L-36.757-5.258Q-36.757-5.641-36.544-5.964Q-36.330-6.287-35.977-6.471Q-35.623-6.656-35.245-6.656Q-34.924-6.656-34.674-6.478Q-34.423-6.300-34.423-5.988Q-34.423-5.812-34.542-5.693Q-34.661-5.575-34.836-5.575Q-35.017-5.575-35.140-5.693Q-35.263-5.812-35.263-5.988Q-35.263-6.229-35.047-6.357Q-35.153-6.392-35.289-6.392Q-35.557-6.392-35.739-6.210Q-35.922-6.027-36.014-5.757Q-36.106-5.487-36.106-5.223L-36.106-4.190L-35.056-4.190L-35.056-3.874L-36.080-3.874L-36.080-0.921Q-36.080-0.732-35.823-0.679Q-35.566-0.626-35.214-0.626L-35.214-0.310M-33.993-1.382L-33.993-3.874L-34.757-3.874L-34.757-4.133Q-34.353-4.133-34.087-4.399Q-33.821-4.665-33.700-5.065Q-33.580-5.465-33.580-5.847L-33.289-5.847L-33.289-4.190L-32.002-4.190L-32.002-3.874L-33.289-3.874L-33.289-1.417Q-33.289-1.048-33.164-0.774Q-33.039-0.499-32.714-0.499Q-32.415-0.499-32.277-0.793Q-32.138-1.088-32.138-1.417L-32.138-1.940L-31.852-1.940L-31.852-1.382Q-31.852-1.105-31.962-0.833Q-32.072-0.560-32.285-0.385Q-32.498-0.209-32.780-0.209Q-33.140-0.209-33.413-0.347Q-33.685-0.486-33.839-0.749Q-33.993-1.013-33.993-1.382",[3594],[3579,5954,5955],{"transform":5948},[1748,5956],{"d":5957,"fill":3624,"stroke":3624,"className":5958,"style":3595},"M-27.307-1.382L-27.307-3.874L-28.072-3.874L-28.072-4.133Q-27.667-4.133-27.401-4.399Q-27.136-4.665-27.015-5.065Q-26.894-5.465-26.894-5.847L-26.604-5.847L-26.604-4.190L-25.316-4.190L-25.316-3.874L-26.604-3.874L-26.604-1.417Q-26.604-1.048-26.479-0.774Q-26.353-0.499-26.028-0.499Q-25.729-0.499-25.591-0.793Q-25.452-1.088-25.452-1.417L-25.452-1.940L-25.167-1.940L-25.167-1.382Q-25.167-1.105-25.277-0.833Q-25.387-0.560-25.600-0.385Q-25.813-0.209-26.094-0.209Q-26.454-0.209-26.727-0.347Q-26.999-0.486-27.153-0.749Q-27.307-1.013-27.307-1.382M-23.664-1.382L-23.664-3.369Q-23.664-3.610-23.734-3.718Q-23.805-3.826-23.939-3.850Q-24.073-3.874-24.354-3.874L-24.354-4.190L-22.961-4.287L-22.961-1.417Q-22.961-1.039-22.915-0.853Q-22.868-0.666-22.697-0.569Q-22.526-0.473-22.170-0.473Q-21.836-0.473-21.596-0.664Q-21.357-0.855-21.232-1.158Q-21.106-1.461-21.106-1.778L-21.106-3.369Q-21.106-3.610-21.177-3.718Q-21.247-3.826-21.381-3.850Q-21.515-3.874-21.801-3.874L-21.801-4.190L-20.403-4.287L-20.403-1.127Q-20.403-0.890-20.333-0.782Q-20.263-0.675-20.128-0.651Q-19.994-0.626-19.713-0.626L-19.713-0.310L-21.080-0.209L-21.080-0.930Q-21.247-0.604-21.552-0.407Q-21.858-0.209-22.214-0.209Q-22.873-0.209-23.268-0.479Q-23.664-0.749-23.664-1.382M-17.033-0.310L-19.265-0.310L-19.265-0.626Q-18.953-0.626-18.762-0.679Q-18.571-0.732-18.571-0.921L-18.571-3.369Q-18.571-3.610-18.641-3.718Q-18.711-3.826-18.845-3.850Q-18.979-3.874-19.265-3.874L-19.265-4.190L-17.951-4.287L-17.951-3.426Q-17.788-3.817-17.520-4.052Q-17.252-4.287-16.861-4.287Q-16.589-4.287-16.373-4.124Q-16.158-3.962-16.158-3.703Q-16.158-3.527-16.277-3.408Q-16.395-3.289-16.571-3.289Q-16.751-3.289-16.870-3.408Q-16.989-3.527-16.989-3.703Q-16.989-3.918-16.835-4.028L-16.852-4.028Q-17.230-4.028-17.463-3.766Q-17.696-3.505-17.795-3.118Q-17.894-2.731-17.894-2.371L-17.894-0.921Q-17.894-0.732-17.637-0.679Q-17.380-0.626-17.033-0.626L-17.033-0.310M-13.513-0.310L-15.600-0.310L-15.600-0.626Q-15.292-0.626-15.101-0.679Q-14.910-0.732-14.910-0.921L-14.910-3.369Q-14.910-3.610-14.980-3.718Q-15.051-3.826-15.185-3.850Q-15.319-3.874-15.600-3.874L-15.600-4.190L-14.260-4.287L-14.260-3.452Q-14.062-3.834-13.708-4.061Q-13.354-4.287-12.928-4.287Q-11.649-4.287-11.649-3.074L-11.649-0.921Q-11.649-0.732-11.458-0.679Q-11.267-0.626-10.959-0.626L-10.959-0.310L-13.047-0.310L-13.047-0.626Q-12.735-0.626-12.544-0.679Q-12.352-0.732-12.352-0.921L-12.352-3.039Q-12.352-3.298-12.396-3.520Q-12.440-3.742-12.585-3.885Q-12.730-4.028-12.990-4.028Q-13.332-4.028-13.614-3.839Q-13.895-3.650-14.051-3.338Q-14.207-3.026-14.207-2.679L-14.207-0.921Q-14.207-0.732-14.014-0.679Q-13.820-0.626-13.513-0.626",[3594],[3579,5960,5961],{"transform":5948},[1748,5962],{"d":5963,"fill":3624,"stroke":3624,"className":5964,"style":3595},"M-4.815 1.931Q-5.320 1.544-5.689 1.039Q-6.059 0.534-6.302-0.066Q-6.546-0.666-6.661-1.283Q-6.775-1.901-6.775-2.560Q-6.775-3.219-6.661-3.834Q-6.546-4.450-6.307-5.043Q-6.067-5.636-5.694-6.146Q-5.320-6.656-4.815-7.042Q-4.780-7.060-4.758-7.060L-4.679-7.060Q-4.591-7.060-4.591-6.959Q-4.591-6.924-4.626-6.889Q-5.188-6.366-5.533-5.660Q-5.878-4.955-6.026-4.173Q-6.173-3.391-6.173-2.560Q-6.173-1.936-6.094-1.352Q-6.015-0.767-5.837-0.200Q-5.659 0.367-5.360 0.868Q-5.061 1.369-4.626 1.777Q-4.591 1.813-4.591 1.852Q-4.591 1.949-4.679 1.949L-4.758 1.949Q-4.780 1.949-4.815 1.931M-0.675 0.367L-0.675-2.362L-3.382-2.362Q-3.563-2.393-3.563-2.560Q-3.563-2.626-3.512-2.681Q-3.461-2.736-3.382-2.749L-0.675-2.749L-0.675-5.478Q-0.662-5.553-0.607-5.599Q-0.552-5.645-0.478-5.645Q-0.407-5.645-0.354-5.597Q-0.302-5.548-0.289-5.478L-0.289-2.749L2.423-2.749Q2.594-2.714 2.594-2.560Q2.594-2.397 2.423-2.362L-0.289-2.362L-0.289 0.367Q-0.324 0.538-0.478 0.538Q-0.548 0.538-0.605 0.490Q-0.662 0.441-0.675 0.367M3.798 1.949L3.715 1.949Q3.627 1.949 3.627 1.852Q3.627 1.813 3.662 1.777Q4.497 1.004 4.857-0.130Q5.218-1.264 5.218-2.560Q5.218-3.180 5.139-3.771Q5.060-4.362 4.879-4.920Q4.699-5.478 4.398-5.986Q4.097-6.493 3.662-6.889Q3.627-6.924 3.627-6.959Q3.627-7.060 3.715-7.060L3.798-7.060Q3.816-7.060 3.851-7.042Q4.356-6.660 4.730-6.146Q5.104-5.632 5.341-5.054Q5.578-4.476 5.695-3.848Q5.811-3.219 5.811-2.560Q5.811-1.901 5.695-1.270Q5.578-0.640 5.339-0.055Q5.099 0.529 4.728 1.039Q4.356 1.549 3.851 1.931Q3.816 1.949 3.798 1.949",[3594],[1748,5966],{"stroke":3585,"d":5967},"M59.835 30.988a1.839 1.839 0 1 0-3.678 0 1.839 1.839 0 0 0 3.678 0m-1.84 0",[3579,5969,5970,5976],{"stroke":3585},[3579,5971,5973],{"transform":5972},"translate(97.461 44.026)",[1748,5974],{"d":5875,"fill":3581,"stroke":3581,"className":5975,"style":3595},[3594],[3579,5977,5978],{"transform":5972},[1748,5979],{"d":5980,"fill":3581,"stroke":3581,"className":5981,"style":5982},"M-36.590-4.367L-36.772-4.438Q-36.825-4.458-36.825-4.517Q-36.825-4.523-36.819-4.546L-35.961-7.241Q-35.925-7.356-35.833-7.422Q-35.741-7.487-35.632-7.487Q-35.483-7.487-35.367-7.386Q-35.252-7.285-35.252-7.139Q-35.252-7.054-35.290-6.978L-36.476-4.408Q-36.505-4.362-36.555-4.362Q-36.561-4.362-36.590-4.367",[3594],"stroke-width:0.180",[3579,5984,5986,5989],{"fill":5985,"stroke":5985,"style":3598},"var(--tk-warn)",[1748,5987],{"fill":3585,"d":5988},"M46.612-9.652c-.019 15.709 2.528 25.26 9.07 36.62",[1748,5990],{"stroke":3585,"d":5991},"m56.979 29.222-.273-4.643-1.024 2.39-2.581-.315",[3579,5993,5994],{"fill":5985,"stroke":5985},[3579,5995,5996,6003,6009,6015,6021],{"fill":5985,"stroke":3585,"fontSize":3608},[3579,5997,5999],{"transform":5998},"translate(109.656 16.476)",[1748,6000],{"d":6001,"fill":5985,"stroke":5985,"className":6002,"style":3595},"M-41.951-0.310L-44.184-0.310L-44.184-0.626Q-43.871-0.626-43.680-0.679Q-43.489-0.732-43.489-0.921L-43.489-3.369Q-43.489-3.610-43.559-3.718Q-43.630-3.826-43.764-3.850Q-43.898-3.874-44.184-3.874L-44.184-4.190L-42.870-4.287L-42.870-3.426Q-42.707-3.817-42.439-4.052Q-42.171-4.287-41.780-4.287Q-41.507-4.287-41.292-4.124Q-41.077-3.962-41.077-3.703Q-41.077-3.527-41.195-3.408Q-41.314-3.289-41.490-3.289Q-41.670-3.289-41.788-3.408Q-41.907-3.527-41.907-3.703Q-41.907-3.918-41.753-4.028L-41.771-4.028Q-42.149-4.028-42.382-3.766Q-42.615-3.505-42.714-3.118Q-42.812-2.731-42.812-2.371L-42.812-0.921Q-42.812-0.732-42.555-0.679Q-42.298-0.626-41.951-0.626L-41.951-0.310M-38.523-0.310L-40.510-0.310L-40.510-0.626Q-40.202-0.626-40.011-0.679Q-39.820-0.732-39.820-0.921L-39.820-3.369Q-39.820-3.615-39.886-3.720Q-39.952-3.826-40.077-3.850Q-40.202-3.874-40.475-3.874L-40.475-4.190L-39.143-4.287L-39.143-0.921Q-39.143-0.727-38.978-0.677Q-38.813-0.626-38.523-0.626L-38.523-0.310M-40.123-5.834Q-40.123-6.040-39.974-6.190Q-39.824-6.339-39.622-6.339Q-39.490-6.339-39.374-6.269Q-39.257-6.199-39.187-6.082Q-39.117-5.966-39.117-5.834Q-39.117-5.632-39.266-5.482Q-39.415-5.333-39.622-5.333Q-39.824-5.333-39.974-5.482Q-40.123-5.632-40.123-5.834M-37.992 0.384Q-37.992 0.072-37.763-0.167Q-37.535-0.407-37.214-0.508Q-37.394-0.648-37.488-0.857Q-37.583-1.066-37.583-1.299Q-37.583-1.712-37.306-2.046Q-37.719-2.450-37.719-2.964Q-37.719-3.355-37.499-3.654Q-37.280-3.953-36.928-4.120Q-36.577-4.287-36.199-4.287Q-35.645-4.287-35.227-3.975Q-35.038-4.168-34.777-4.278Q-34.516-4.388-34.230-4.388Q-34.028-4.388-33.894-4.245Q-33.760-4.102-33.760-3.909Q-33.760-3.782-33.843-3.703Q-33.927-3.623-34.050-3.623Q-34.168-3.623-34.252-3.703Q-34.335-3.782-34.335-3.909Q-34.335-3.984-34.327-4.010Q-34.309-4.045-34.287-4.078Q-34.265-4.111-34.256-4.124Q-34.700-4.124-35.047-3.821Q-34.687-3.439-34.687-2.964Q-34.687-2.670-34.814-2.424Q-34.942-2.178-35.155-2.002Q-35.368-1.826-35.647-1.729Q-35.926-1.633-36.199-1.633Q-36.708-1.633-37.117-1.901Q-37.245-1.729-37.245-1.523Q-37.245-1.281-37.086-1.110Q-36.928-0.938-36.695-0.938L-35.931-0.938Q-35.386-0.938-34.940-0.842Q-34.494-0.745-34.195-0.455Q-33.896-0.165-33.896 0.384Q-33.896 0.964-34.581 1.254Q-35.267 1.544-35.939 1.544Q-36.612 1.544-37.302 1.254Q-37.992 0.964-37.992 0.384M-37.451 0.384Q-37.451 0.679-37.198 0.877Q-36.946 1.074-36.585 1.169Q-36.225 1.263-35.939 1.263Q-35.438 1.263-34.937 1.037Q-34.436 0.811-34.436 0.384Q-34.436-0.073-34.878-0.205Q-35.320-0.336-35.931-0.336L-36.695-0.336Q-36.889-0.336-37.067-0.242Q-37.245-0.147-37.348 0.017Q-37.451 0.182-37.451 0.384M-36.207-1.914L-36.199-1.914Q-35.416-1.914-35.416-2.964Q-35.416-4.010-36.199-4.010Q-36.990-4.010-36.990-2.964Q-36.990-1.914-36.207-1.914M-31.246-0.310L-33.333-0.310L-33.333-0.626Q-33.026-0.626-32.835-0.679Q-32.643-0.732-32.643-0.921L-32.643-5.636Q-32.643-5.878-32.714-5.986Q-32.784-6.093-32.918-6.117Q-33.052-6.142-33.333-6.142L-33.333-6.458L-31.967-6.555L-31.967-3.505Q-31.769-3.861-31.415-4.074Q-31.061-4.287-30.662-4.287Q-29.383-4.287-29.383-3.074L-29.383-0.921Q-29.383-0.732-29.192-0.679Q-29-0.626-28.693-0.626L-28.693-0.310L-30.780-0.310L-30.780-0.626Q-30.468-0.626-30.277-0.679Q-30.086-0.732-30.086-0.921L-30.086-3.039Q-30.086-3.298-30.130-3.520Q-30.174-3.742-30.319-3.885Q-30.464-4.028-30.723-4.028Q-31.066-4.028-31.347-3.839Q-31.628-3.650-31.784-3.338Q-31.940-3.026-31.940-2.679L-31.940-0.921Q-31.940-0.732-31.747-0.679Q-31.554-0.626-31.246-0.626",[3594],[3579,6004,6005],{"transform":5998},[1748,6006],{"d":6007,"fill":5985,"stroke":5985,"className":6008,"style":3595},"M-27.804-1.382L-27.804-3.874L-28.569-3.874L-28.569-4.133Q-28.164-4.133-27.898-4.399Q-27.633-4.665-27.512-5.065Q-27.391-5.465-27.391-5.847L-27.101-5.847L-27.101-4.190L-25.813-4.190L-25.813-3.874L-27.101-3.874L-27.101-1.417Q-27.101-1.048-26.976-0.774Q-26.850-0.499-26.525-0.499Q-26.226-0.499-26.088-0.793Q-25.949-1.088-25.949-1.417L-25.949-1.940L-25.664-1.940L-25.664-1.382Q-25.664-1.105-25.774-0.833Q-25.884-0.560-26.097-0.385Q-26.310-0.209-26.591-0.209Q-26.951-0.209-27.224-0.347Q-27.496-0.486-27.650-0.749Q-27.804-1.013-27.804-1.382",[3594],[3579,6010,6011],{"transform":5998},[1748,6012],{"d":6013,"fill":5985,"stroke":5985,"className":6014,"style":3595},"M-19.207 1.931Q-19.712 1.544-20.081 1.039Q-20.451 0.534-20.694-0.066Q-20.938-0.666-21.053-1.283Q-21.167-1.901-21.167-2.560Q-21.167-3.219-21.053-3.834Q-20.938-4.450-20.699-5.043Q-20.459-5.636-20.086-6.146Q-19.712-6.656-19.207-7.042Q-19.172-7.060-19.150-7.060L-19.071-7.060Q-18.983-7.060-18.983-6.959Q-18.983-6.924-19.018-6.889Q-19.580-6.366-19.925-5.660Q-20.270-4.955-20.418-4.173Q-20.565-3.391-20.565-2.560Q-20.565-1.936-20.486-1.352Q-20.407-0.767-20.229-0.200Q-20.051 0.367-19.752 0.868Q-19.453 1.369-19.018 1.777Q-18.983 1.813-18.983 1.852Q-18.983 1.949-19.071 1.949L-19.150 1.949Q-19.172 1.949-19.207 1.931",[3594],[3579,6016,6017],{"transform":5998},[1748,6018],{"d":6019,"fill":5985,"stroke":5985,"className":6020,"style":3595},"M-12.226-2.362L-17.508-2.362Q-17.583-2.375-17.636-2.428Q-17.689-2.481-17.689-2.560Q-17.689-2.626-17.634-2.681Q-17.579-2.736-17.508-2.749L-12.226-2.749Q-12.156-2.736-12.105-2.685Q-12.055-2.635-12.055-2.560Q-12.055-2.393-12.226-2.362",[3594],[3579,6022,6023],{"transform":5998},[1748,6024],{"d":6025,"fill":5985,"stroke":5985,"className":6026,"style":3595},"M-10.582 1.949L-10.666 1.949Q-10.754 1.949-10.754 1.852Q-10.754 1.813-10.719 1.777Q-9.884 1.004-9.523-0.130Q-9.163-1.264-9.163-2.560Q-9.163-3.180-9.242-3.771Q-9.321-4.362-9.501-4.920Q-9.682-5.478-9.983-5.986Q-10.284-6.493-10.719-6.889Q-10.754-6.924-10.754-6.959Q-10.754-7.060-10.666-7.060L-10.582-7.060Q-10.565-7.060-10.530-7.042Q-10.024-6.660-9.651-6.146Q-9.277-5.632-9.040-5.054Q-8.803-4.476-8.686-3.848Q-8.570-3.219-8.570-2.560Q-8.570-1.901-8.686-1.270Q-8.803-0.640-9.042-0.055Q-9.282 0.529-9.653 1.039Q-10.024 1.549-10.530 1.931Q-10.565 1.949-10.582 1.949",[3594],[3761,6028,6030,6119,6120],{"className":6029},[3764],[419,6031,6033],{"className":6032},[422],[419,6034,6036,6064,6085,6106],{"className":6035,"ariaHidden":427},[426],[419,6037,6039,6042,6048,6052,6055,6058,6061],{"className":6038},[431],[419,6040],{"className":6041,"style":575},[435],[419,6043,6045],{"className":6044},[526],[419,6046,4558],{"className":6047},[440,2118],[419,6049,6051],{"className":6050},[579],"((",[419,6053,753],{"className":6054,"style":752},[440,553],[419,6056],{"className":6057,"style":903},[559],[419,6059,486],{"className":6060},[907],[419,6062],{"className":6063,"style":903},[559],[419,6065,6067,6070,6073,6076,6079,6082],{"className":6066},[431],[419,6068],{"className":6069,"style":575},[435],[419,6071,620],{"className":6072},[440,553],[419,6074,603],{"className":6075},[602],[419,6077],{"className":6078,"style":903},[559],[419,6080,3984],{"className":6081},[907],[419,6083],{"className":6084,"style":903},[559],[419,6086,6088,6091,6094,6097,6100,6103],{"className":6087},[431],[419,6089],{"className":6090,"style":575},[435],[419,6092,580],{"className":6093},[579],[419,6095,4977],{"className":6096,"style":4976},[440,553],[419,6098],{"className":6099,"style":903},[559],[419,6101,486],{"className":6102},[907],[419,6104],{"className":6105,"style":903},[559],[419,6107,6109,6112,6115],{"className":6108},[431],[419,6110],{"className":6111,"style":575},[435],[419,6113,620],{"className":6114},[440,553],[419,6116,6118],{"className":6117},[602],"))"," is the turn direction at ",[419,6121,6123],{"className":6122},[422],[419,6124,6126,6144,6162],{"className":6125,"ariaHidden":427},[426],[419,6127,6129,6132,6135,6138,6141],{"className":6128},[431],[419,6130],{"className":6131,"style":549},[435],[419,6133,620],{"className":6134},[440,553],[419,6136],{"className":6137,"style":560},[559],[419,6139,5585],{"className":6140},[564],[419,6142],{"className":6143,"style":560},[559],[419,6145,6147,6150,6153,6156,6159],{"className":6146},[431],[419,6148],{"className":6149,"style":549},[435],[419,6151,753],{"className":6152,"style":752},[440,553],[419,6154],{"className":6155,"style":560},[559],[419,6157,5585],{"className":6158},[564],[419,6160],{"className":6161,"style":560},[559],[419,6163,6165,6168],{"className":6164},[431],[419,6166],{"className":6167,"style":549},[435],[419,6169,4977],{"className":6170,"style":4976},[440,553],[381,6172,6173,6174,6177,6178,6180,6181,2357,6196,6211,6212,6237,6238,6276,6277,6326,6327,6390],{},"Three properties make this primitive so powerful. It uses ",[385,6175,6176],{},"only additions and\nmultiplications"," of the input coordinates, so for integer inputs it is exact. It\nis ",[385,6179,4687],{}," in a way that respects the geometry: swapping ",[419,6182,6184],{"className":6183},[422],[419,6185,6187],{"className":6186,"ariaHidden":427},[426],[419,6188,6190,6193],{"className":6189},[431],[419,6191],{"className":6192,"style":549},[435],[419,6194,753],{"className":6195,"style":752},[440,553],[419,6197,6199],{"className":6198},[422],[419,6200,6202],{"className":6201,"ariaHidden":427},[426],[419,6203,6205,6208],{"className":6204},[431],[419,6206],{"className":6207,"style":549},[435],[419,6209,4977],{"className":6210,"style":4976},[440,553],"\nflips the sign, matching the reversal of the turn. And it answers, in ",[419,6213,6215],{"className":6214},[422],[419,6216,6218],{"className":6217,"ariaHidden":427},[426],[419,6219,6221,6224,6228,6231,6234],{"className":6220},[431],[419,6222],{"className":6223,"style":575},[435],[419,6225,6227],{"className":6226,"style":2126},[440,553],"O",[419,6229,580],{"className":6230},[579],[419,6232,441],{"className":6233},[440],[419,6235,603],{"className":6236},[602],", the\nquestion every higher geometric algorithm reduces to — ",[403,6239,6240,6241,6259,6260,6275],{},"which side of the line\n",[419,6242,6244],{"className":6243},[422],[419,6245,6247],{"className":6246,"ariaHidden":427},[426],[419,6248,6250,6253,6256],{"className":6249},[431],[419,6251],{"className":6252,"style":549},[435],[419,6254,620],{"className":6255},[440,553],[419,6257,753],{"className":6258,"style":752},[440,553]," does ",[419,6261,6263],{"className":6262},[422],[419,6264,6266],{"className":6265,"ariaHidden":427},[426],[419,6267,6269,6272],{"className":6268},[431],[419,6270],{"className":6271,"style":549},[435],[419,6273,4977],{"className":6274,"style":4976},[440,553]," lie on?"," The collinearity test ",[4922,6278,6279,6280,1622,6295,1622,6310,6325],{},"are ",[419,6281,6283],{"className":6282},[422],[419,6284,6286],{"className":6285,"ariaHidden":427},[426],[419,6287,6289,6292],{"className":6288},[431],[419,6290],{"className":6291,"style":549},[435],[419,6293,620],{"className":6294},[440,553],[419,6296,6298],{"className":6297},[422],[419,6299,6301],{"className":6300,"ariaHidden":427},[426],[419,6302,6304,6307],{"className":6303},[431],[419,6305],{"className":6306,"style":549},[435],[419,6308,753],{"className":6309,"style":752},[440,553],[419,6311,6313],{"className":6312},[422],[419,6314,6316],{"className":6315,"ariaHidden":427},[426],[419,6317,6319,6322],{"className":6318},[431],[419,6320],{"className":6321,"style":549},[435],[419,6323,4977],{"className":6324,"style":4976},[440,553]," on one line?"," is\njust ",[419,6328,6330],{"className":6329},[422],[419,6331,6333,6381],{"className":6332,"ariaHidden":427},[426],[419,6334,6336,6339,6345,6348,6351,6354,6357,6360,6363,6366,6369,6372,6375,6378],{"className":6335},[431],[419,6337],{"className":6338,"style":575},[435],[419,6340,6342],{"className":6341},[526],[419,6343,4924],{"className":6344,"style":4951},[440,2118],[419,6346,580],{"className":6347},[579],[419,6349,620],{"className":6350},[440,553],[419,6352,589],{"className":6353},[588],[419,6355],{"className":6356,"style":593},[559],[419,6358,753],{"className":6359,"style":752},[440,553],[419,6361,589],{"className":6362},[588],[419,6364],{"className":6365,"style":593},[559],[419,6367,4977],{"className":6368,"style":4976},[440,553],[419,6370,603],{"className":6371},[602],[419,6373],{"className":6374,"style":560},[559],[419,6376,565],{"className":6377},[564],[419,6379],{"className":6380,"style":560},[559],[419,6382,6384,6387],{"className":6383},[431],[419,6385],{"className":6386,"style":2267},[435],[419,6388,448],{"className":6389},[440],", with no division by a slope and hence no\nvertical-line special case.",[6392,6393,6397],"pre",{"className":6394,"code":6395,"language":6396,"meta":376,"style":376},"language-algorithm shiki shiki-themes Vesper Light - Orange Boost (Quick Open Adjusted) vesper","caption: $\\textsc{Orientation}(A, B, C)$ — sign of the turn, exact integer arithmetic\n$d \\gets (b_x - a_x)(c_y - a_y) - (b_y - a_y)(c_x - a_x)$\nif $d > 0$ then\n  return $+1$   \u002F\u002F left turn\nelse if $d \u003C 0$ then\n  return $-1$   \u002F\u002F right turn\nelse\n  return $0$    \u002F\u002F collinear\n","algorithm",[6398,6399,6400,6406,6411,6416,6421,6426,6431,6436],"code",{"__ignoreMap":376},[419,6401,6403],{"class":6402,"line":6},"line",[419,6404,6405],{},"caption: $\\textsc{Orientation}(A, B, C)$ — sign of the turn, exact integer arithmetic\n",[419,6407,6408],{"class":6402,"line":18},[419,6409,6410],{},"$d \\gets (b_x - a_x)(c_y - a_y) - (b_y - a_y)(c_x - a_x)$\n",[419,6412,6413],{"class":6402,"line":24},[419,6414,6415],{},"if $d > 0$ then\n",[419,6417,6418],{"class":6402,"line":73},[419,6419,6420],{},"  return $+1$   \u002F\u002F left turn\n",[419,6422,6423],{"class":6402,"line":102},[419,6424,6425],{},"else if $d \u003C 0$ then\n",[419,6427,6428],{"class":6402,"line":108},[419,6429,6430],{},"  return $-1$   \u002F\u002F right turn\n",[419,6432,6433],{"class":6402,"line":116},[419,6434,6435],{},"else\n",[419,6437,6438],{"class":6402,"line":196},[419,6439,6440],{},"  return $0$    \u002F\u002F collinear\n",[530,6442,6444],{"id":6443},"segment-intersection","Segment intersection",[381,6446,6447,6448,2357,6499,6546,6547,6550,6551,4356,6597,6600,6601,2357,6616,6631,6632,2357,6677,6722,6723,1533],{},"When do two segments ",[419,6449,6451],{"className":6450},[422],[419,6452,6454],{"className":6453,"ariaHidden":427},[426],[419,6455,6457,6461],{"className":6456},[431],[419,6458],{"className":6459,"style":6460},[435],"height:0.8833em;",[419,6462,6465],{"className":6463},[440,6464],"overline",[419,6466,6468],{"className":6467},[456],[419,6469,6471],{"className":6470},[460],[419,6472,6474,6488],{"className":6473,"style":6460},[464],[419,6475,6476,6479],{"style":1715},[419,6477],{"className":6478,"style":1719},[471],[419,6480,6482,6485],{"className":6481},[440],[419,6483,620],{"className":6484},[440,553],[419,6486,753],{"className":6487,"style":752},[440,553],[419,6489,6491,6494],{"style":6490},"top:-3.8033em;",[419,6492],{"className":6493,"style":1719},[471],[419,6495],{"className":6496,"style":6498},[6497],"overline-line","border-bottom-width:0.04em;",[419,6500,6502],{"className":6501},[422],[419,6503,6505],{"className":6504,"ariaHidden":427},[426],[419,6506,6508,6511],{"className":6507},[431],[419,6509],{"className":6510,"style":6460},[435],[419,6512,6514],{"className":6513},[440,6464],[419,6515,6517],{"className":6516},[456],[419,6518,6520],{"className":6519},[460],[419,6521,6523,6538],{"className":6522,"style":6460},[464],[419,6524,6525,6528],{"style":1715},[419,6526],{"className":6527,"style":1719},[471],[419,6529,6531,6534],{"className":6530},[440],[419,6532,4977],{"className":6533,"style":4976},[440,553],[419,6535,6537],{"className":6536,"style":2126},[440,553],"D",[419,6539,6540,6543],{"style":6490},[419,6541],{"className":6542,"style":1719},[471],[419,6544],{"className":6545,"style":6498},[6497]," cross? The slope-and-solve\napproach drags in division and degenerate cases; orientation makes it a handful of\nsign comparisons. The key idea is ",[385,6548,6549],{},"straddling",": segment ",[419,6552,6554],{"className":6553},[422],[419,6555,6557],{"className":6556,"ariaHidden":427},[426],[419,6558,6560,6563],{"className":6559},[431],[419,6561],{"className":6562,"style":6460},[435],[419,6564,6566],{"className":6565},[440,6464],[419,6567,6569],{"className":6568},[456],[419,6570,6572],{"className":6571},[460],[419,6573,6575,6589],{"className":6574,"style":6460},[464],[419,6576,6577,6580],{"style":1715},[419,6578],{"className":6579,"style":1719},[471],[419,6581,6583,6586],{"className":6582},[440],[419,6584,620],{"className":6585},[440,553],[419,6587,753],{"className":6588,"style":752},[440,553],[419,6590,6591,6594],{"style":6490},[419,6592],{"className":6593,"style":1719},[471],[419,6595],{"className":6596,"style":6498},[6497],[403,6598,6599],{},"straddles","\nthe line through ",[419,6602,6604],{"className":6603},[422],[419,6605,6607],{"className":6606,"ariaHidden":427},[426],[419,6608,6610,6613],{"className":6609},[431],[419,6611],{"className":6612,"style":549},[435],[419,6614,4977],{"className":6615,"style":4976},[440,553],[419,6617,6619],{"className":6618},[422],[419,6620,6622],{"className":6621,"ariaHidden":427},[426],[419,6623,6625,6628],{"className":6624},[431],[419,6626],{"className":6627,"style":549},[435],[419,6629,6537],{"className":6630,"style":2126},[440,553]," when its endpoints fall on opposite sides of that\nline, that is, when ",[419,6633,6635],{"className":6634},[422],[419,6636,6638],{"className":6637,"ariaHidden":427},[426],[419,6639,6641,6644,6650,6653,6656,6659,6662,6665,6668,6671,6674],{"className":6640},[431],[419,6642],{"className":6643,"style":575},[435],[419,6645,6647],{"className":6646},[526],[419,6648,4924],{"className":6649,"style":4951},[440,2118],[419,6651,580],{"className":6652},[579],[419,6654,4977],{"className":6655,"style":4976},[440,553],[419,6657,589],{"className":6658},[588],[419,6660],{"className":6661,"style":593},[559],[419,6663,6537],{"className":6664,"style":2126},[440,553],[419,6666,589],{"className":6667},[588],[419,6669],{"className":6670,"style":593},[559],[419,6672,620],{"className":6673},[440,553],[419,6675,603],{"className":6676},[602],[419,6678,6680],{"className":6679},[422],[419,6681,6683],{"className":6682,"ariaHidden":427},[426],[419,6684,6686,6689,6695,6698,6701,6704,6707,6710,6713,6716,6719],{"className":6685},[431],[419,6687],{"className":6688,"style":575},[435],[419,6690,6692],{"className":6691},[526],[419,6693,4924],{"className":6694,"style":4951},[440,2118],[419,6696,580],{"className":6697},[579],[419,6699,4977],{"className":6700,"style":4976},[440,553],[419,6702,589],{"className":6703},[588],[419,6705],{"className":6706,"style":593},[559],[419,6708,6537],{"className":6709,"style":2126},[440,553],[419,6711,589],{"className":6712},[588],[419,6714],{"className":6715,"style":593},[559],[419,6717,753],{"className":6718,"style":752},[440,553],[419,6720,603],{"className":6721},[602],"\nhave ",[403,6724,6725],{},"opposite signs",[2301,6727,6728],{"type":2303},[381,6729,6730,6733,6734,2357,6780,6826,6827],{},[385,6731,6732],{},"Claim (proper intersection)."," Segments ",[419,6735,6737],{"className":6736},[422],[419,6738,6740],{"className":6739,"ariaHidden":427},[426],[419,6741,6743,6746],{"className":6742},[431],[419,6744],{"className":6745,"style":6460},[435],[419,6747,6749],{"className":6748},[440,6464],[419,6750,6752],{"className":6751},[456],[419,6753,6755],{"className":6754},[460],[419,6756,6758,6772],{"className":6757,"style":6460},[464],[419,6759,6760,6763],{"style":1715},[419,6761],{"className":6762,"style":1719},[471],[419,6764,6766,6769],{"className":6765},[440],[419,6767,620],{"className":6768},[440,553],[419,6770,753],{"className":6771,"style":752},[440,553],[419,6773,6774,6777],{"style":6490},[419,6775],{"className":6776,"style":1719},[471],[419,6778],{"className":6779,"style":6498},[6497],[419,6781,6783],{"className":6782},[422],[419,6784,6786],{"className":6785,"ariaHidden":427},[426],[419,6787,6789,6792],{"className":6788},[431],[419,6790],{"className":6791,"style":6460},[435],[419,6793,6795],{"className":6794},[440,6464],[419,6796,6798],{"className":6797},[456],[419,6799,6801],{"className":6800},[460],[419,6802,6804,6818],{"className":6803,"style":6460},[464],[419,6805,6806,6809],{"style":1715},[419,6807],{"className":6808,"style":1719},[471],[419,6810,6812,6815],{"className":6811},[440],[419,6813,4977],{"className":6814,"style":4976},[440,553],[419,6816,6537],{"className":6817,"style":2126},[440,553],[419,6819,6820,6823],{"style":6490},[419,6821],{"className":6822,"style":1719},[471],[419,6824],{"className":6825,"style":6498},[6497],"\nintersect at an interior point iff each straddles the other's supporting line:\n",[419,6828,6830],{"className":6829},[422],[419,6831,6833,6881,6929,6998,7046],{"className":6832,"ariaHidden":427},[426],[419,6834,6836,6839,6845,6848,6851,6854,6857,6860,6863,6866,6869,6872,6875,6878],{"className":6835},[431],[419,6837],{"className":6838,"style":575},[435],[419,6840,6842],{"className":6841},[526],[419,6843,4924],{"className":6844,"style":4951},[440,2118],[419,6846,580],{"className":6847},[579],[419,6849,620],{"className":6850},[440,553],[419,6852,589],{"className":6853},[588],[419,6855],{"className":6856,"style":593},[559],[419,6858,753],{"className":6859,"style":752},[440,553],[419,6861,589],{"className":6862},[588],[419,6864],{"className":6865,"style":593},[559],[419,6867,4977],{"className":6868,"style":4976},[440,553],[419,6870,603],{"className":6871},[602],[419,6873],{"className":6874,"style":903},[559],[419,6876,1757],{"className":6877},[907],[419,6879],{"className":6880,"style":903},[559],[419,6882,6884,6887,6893,6896,6899,6902,6905,6908,6911,6914,6917,6920,6923,6926],{"className":6883},[431],[419,6885],{"className":6886,"style":575},[435],[419,6888,6890],{"className":6889},[526],[419,6891,4924],{"className":6892,"style":4951},[440,2118],[419,6894,580],{"className":6895},[579],[419,6897,620],{"className":6898},[440,553],[419,6900,589],{"className":6901},[588],[419,6903],{"className":6904,"style":593},[559],[419,6906,753],{"className":6907,"style":752},[440,553],[419,6909,589],{"className":6910},[588],[419,6912],{"className":6913,"style":593},[559],[419,6915,6537],{"className":6916,"style":2126},[440,553],[419,6918,603],{"className":6919},[602],[419,6921],{"className":6922,"style":560},[559],[419,6924,2753],{"className":6925},[564],[419,6927],{"className":6928,"style":560},[559],[419,6930,6932,6935,6938,6942,6950,6953,6956,6962,6965,6968,6971,6974,6977,6980,6983,6986,6989,6992,6995],{"className":6931},[431],[419,6933],{"className":6934,"style":575},[435],[419,6936,448],{"className":6937},[440],[419,6939],{"className":6940,"style":6941},[559],"margin-right:1em;",[419,6943,6946],{"className":6944},[440,6945],"text",[419,6947,6949],{"className":6948},[440],"and",[419,6951],{"className":6952,"style":6941},[559],[419,6954],{"className":6955,"style":593},[559],[419,6957,6959],{"className":6958},[526],[419,6960,4924],{"className":6961,"style":4951},[440,2118],[419,6963,580],{"className":6964},[579],[419,6966,4977],{"className":6967,"style":4976},[440,553],[419,6969,589],{"className":6970},[588],[419,6972],{"className":6973,"style":593},[559],[419,6975,6537],{"className":6976,"style":2126},[440,553],[419,6978,589],{"className":6979},[588],[419,6981],{"className":6982,"style":593},[559],[419,6984,620],{"className":6985},[440,553],[419,6987,603],{"className":6988},[602],[419,6990],{"className":6991,"style":903},[559],[419,6993,1757],{"className":6994},[907],[419,6996],{"className":6997,"style":903},[559],[419,6999,7001,7004,7010,7013,7016,7019,7022,7025,7028,7031,7034,7037,7040,7043],{"className":7000},[431],[419,7002],{"className":7003,"style":575},[435],[419,7005,7007],{"className":7006},[526],[419,7008,4924],{"className":7009,"style":4951},[440,2118],[419,7011,580],{"className":7012},[579],[419,7014,4977],{"className":7015,"style":4976},[440,553],[419,7017,589],{"className":7018},[588],[419,7020],{"className":7021,"style":593},[559],[419,7023,6537],{"className":7024,"style":2126},[440,553],[419,7026,589],{"className":7027},[588],[419,7029],{"className":7030,"style":593},[559],[419,7032,753],{"className":7033,"style":752},[440,553],[419,7035,603],{"className":7036},[602],[419,7038],{"className":7039,"style":560},[559],[419,7041,2753],{"className":7042},[564],[419,7044],{"className":7045,"style":560},[559],[419,7047,7049,7052],{"className":7048},[431],[419,7050],{"className":7051,"style":2267},[435],[419,7053,7055],{"className":7054},[440],"0.",[381,7057,7058,7061,7062,2357,7077,7092,7093,7111,7112,7158,7159,7174,7175,7190,7191,2357,7206,7221,7222,7225,7226,7228,7229,7232],{},[403,7059,7060],{},"Why."," If ",[419,7063,7065],{"className":7064},[422],[419,7066,7068],{"className":7067,"ariaHidden":427},[426],[419,7069,7071,7074],{"className":7070},[431],[419,7072],{"className":7073,"style":549},[435],[419,7075,4977],{"className":7076,"style":4976},[440,553],[419,7078,7080],{"className":7079},[422],[419,7081,7083],{"className":7082,"ariaHidden":427},[426],[419,7084,7086,7089],{"className":7085},[431],[419,7087],{"className":7088,"style":549},[435],[419,7090,6537],{"className":7091,"style":2126},[440,553]," are strictly on opposite sides of line ",[419,7094,7096],{"className":7095},[422],[419,7097,7099],{"className":7098,"ariaHidden":427},[426],[419,7100,7102,7105,7108],{"className":7101},[431],[419,7103],{"className":7104,"style":549},[435],[419,7106,620],{"className":7107},[440,553],[419,7109,753],{"className":7110,"style":752},[440,553],", the open\nsegment ",[419,7113,7115],{"className":7114},[422],[419,7116,7118],{"className":7117,"ariaHidden":427},[426],[419,7119,7121,7124],{"className":7120},[431],[419,7122],{"className":7123,"style":6460},[435],[419,7125,7127],{"className":7126},[440,6464],[419,7128,7130],{"className":7129},[456],[419,7131,7133],{"className":7132},[460],[419,7134,7136,7150],{"className":7135,"style":6460},[464],[419,7137,7138,7141],{"style":1715},[419,7139],{"className":7140,"style":1719},[471],[419,7142,7144,7147],{"className":7143},[440],[419,7145,4977],{"className":7146,"style":4976},[440,553],[419,7148,6537],{"className":7149,"style":2126},[440,553],[419,7151,7152,7155],{"style":6490},[419,7153],{"className":7154,"style":1719},[471],[419,7156],{"className":7157,"style":6498},[6497]," crosses that line exactly once, at some point ",[419,7160,7162],{"className":7161},[422],[419,7163,7165],{"className":7164,"ariaHidden":427},[426],[419,7166,7168,7171],{"className":7167},[431],[419,7169],{"className":7170,"style":549},[435],[419,7172,555],{"className":7173,"style":554},[440,553],"; the\nsymmetric condition forces ",[419,7176,7178],{"className":7177},[422],[419,7179,7181],{"className":7180,"ariaHidden":427},[426],[419,7182,7184,7187],{"className":7183},[431],[419,7185],{"className":7186,"style":549},[435],[419,7188,555],{"className":7189,"style":554},[440,553]," to also lie strictly between ",[419,7192,7194],{"className":7193},[422],[419,7195,7197],{"className":7196,"ariaHidden":427},[426],[419,7198,7200,7203],{"className":7199},[431],[419,7201],{"className":7202,"style":549},[435],[419,7204,620],{"className":7205},[440,553],[419,7207,7209],{"className":7208},[422],[419,7210,7212],{"className":7211,"ariaHidden":427},[426],[419,7213,7215,7218],{"className":7214},[431],[419,7216],{"className":7217,"style":549},[435],[419,7219,753],{"className":7220,"style":752},[440,553],". Both\nproducts being negative pins the crossing to the interior of ",[403,7223,7224],{},"both"," segments. The\ntwo ",[6398,7227,4924],{}," evaluations are exact integers, so this test has ",[385,7230,7231],{},"no rounding error","\nand never computes the intersection point itself.",[381,7234,7235,7236,2405,7238,7253],{},"The boundary, when some ",[6398,7237,4924],{},[419,7239,7241],{"className":7240},[422],[419,7242,7244],{"className":7243,"ariaHidden":427},[426],[419,7245,7247,7250],{"className":7246},[431],[419,7248],{"className":7249,"style":2267},[435],[419,7251,448],{"className":7252},[440]," and three points are collinear, needs\ncare, and is where naive implementations break. The case logic:",[7255,7256,7257,7264,7822],"ul",{},[7258,7259,7260,7263],"li",{},[385,7261,7262],{},"All four products nonzero"," (the generic case): intersect iff both products\nare strictly negative, as above.",[7258,7265,7266,7303,7304,7367,7368,7383,7384,4356,7387,7405,7406,7383,7421,7424,7470,7471,7486,7487,736,7502,7517,7518,7521,7522,7804,7805,7821],{},[385,7267,7268,7269,2405,7288],{},"Exactly one ",[419,7270,7272],{"className":7271},[422],[419,7273,7275],{"className":7274,"ariaHidden":427},[426],[419,7276,7278,7282],{"className":7277},[431],[419,7279],{"className":7280,"style":7281},[435],"height:0.4306em;",[419,7283,7285],{"className":7284},[526],[419,7286,4924],{"className":7287,"style":4951},[440,2118],[419,7289,7291],{"className":7290},[422],[419,7292,7294],{"className":7293,"ariaHidden":427},[426],[419,7295,7297,7300],{"className":7296},[431],[419,7298],{"className":7299,"style":2267},[435],[419,7301,448],{"className":7302},[440],", say ",[419,7305,7307],{"className":7306},[422],[419,7308,7310,7358],{"className":7309,"ariaHidden":427},[426],[419,7311,7313,7316,7322,7325,7328,7331,7334,7337,7340,7343,7346,7349,7352,7355],{"className":7312},[431],[419,7314],{"className":7315,"style":575},[435],[419,7317,7319],{"className":7318},[526],[419,7320,4924],{"className":7321,"style":4951},[440,2118],[419,7323,580],{"className":7324},[579],[419,7326,620],{"className":7327},[440,553],[419,7329,589],{"className":7330},[588],[419,7332],{"className":7333,"style":593},[559],[419,7335,753],{"className":7336,"style":752},[440,553],[419,7338,589],{"className":7339},[588],[419,7341],{"className":7342,"style":593},[559],[419,7344,4977],{"className":7345,"style":4976},[440,553],[419,7347,603],{"className":7348},[602],[419,7350],{"className":7351,"style":560},[559],[419,7353,565],{"className":7354},[564],[419,7356],{"className":7357,"style":560},[559],[419,7359,7361,7364],{"className":7360},[431],[419,7362],{"className":7363,"style":2267},[435],[419,7365,448],{"className":7366},[440],":\nthen ",[419,7369,7371],{"className":7370},[422],[419,7372,7374],{"className":7373,"ariaHidden":427},[426],[419,7375,7377,7380],{"className":7376},[431],[419,7378],{"className":7379,"style":549},[435],[419,7381,4977],{"className":7382,"style":4976},[440,553]," lies ",[403,7385,7386],{},"on the line",[419,7388,7390],{"className":7389},[422],[419,7391,7393],{"className":7392,"ariaHidden":427},[426],[419,7394,7396,7399,7402],{"className":7395},[431],[419,7397],{"className":7398,"style":549},[435],[419,7400,620],{"className":7401},[440,553],[419,7403,753],{"className":7404,"style":752},[440,553],"; the segments touch iff ",[419,7407,7409],{"className":7408},[422],[419,7410,7412],{"className":7411,"ariaHidden":427},[426],[419,7413,7415,7418],{"className":7414},[431],[419,7416],{"className":7417,"style":549},[435],[419,7419,4977],{"className":7420,"style":4976},[440,553],[403,7422,7423],{},"on the segment",[419,7425,7427],{"className":7426},[422],[419,7428,7430],{"className":7429,"ariaHidden":427},[426],[419,7431,7433,7436],{"className":7432},[431],[419,7434],{"className":7435,"style":6460},[435],[419,7437,7439],{"className":7438},[440,6464],[419,7440,7442],{"className":7441},[456],[419,7443,7445],{"className":7444},[460],[419,7446,7448,7462],{"className":7447,"style":6460},[464],[419,7449,7450,7453],{"style":1715},[419,7451],{"className":7452,"style":1719},[471],[419,7454,7456,7459],{"className":7455},[440],[419,7457,620],{"className":7458},[440,553],[419,7460,753],{"className":7461,"style":752},[440,553],[419,7463,7464,7467],{"style":6490},[419,7465],{"className":7466,"style":1719},[471],[419,7468],{"className":7469,"style":6498},[6497],", i.e. ",[419,7472,7474],{"className":7473},[422],[419,7475,7477],{"className":7476,"ariaHidden":427},[426],[419,7478,7480,7483],{"className":7479},[431],[419,7481],{"className":7482,"style":549},[435],[419,7484,4977],{"className":7485,"style":4976},[440,553],"'s coordinates are within the bounding box of ",[419,7488,7490],{"className":7489},[422],[419,7491,7493],{"className":7492,"ariaHidden":427},[426],[419,7494,7496,7499],{"className":7495},[431],[419,7497],{"className":7498,"style":549},[435],[419,7500,620],{"className":7501},[440,553],[419,7503,7505],{"className":7504},[422],[419,7506,7508],{"className":7507,"ariaHidden":427},[426],[419,7509,7511,7514],{"className":7510},[431],[419,7512],{"className":7513,"style":549},[435],[419,7515,753],{"className":7516,"style":752},[440,553]," (an ",[6398,7519,7520],{},"on-segment"," check: ",[419,7523,7525],{"className":7524},[422],[419,7526,7528,7643,7699],{"className":7527,"ariaHidden":427},[426],[419,7529,7531,7534,7541,7544,7584,7587,7590,7630,7633,7636,7640],{"className":7530},[431],[419,7532],{"className":7533,"style":575},[435],[419,7535,7537],{"className":7536},[526],[419,7538,7540],{"className":7539},[440,2118],"min",[419,7542,580],{"className":7543},[579],[419,7545,7547,7550],{"className":7546},[440],[419,7548,390],{"className":7549},[440,553],[419,7551,7553],{"className":7552},[452],[419,7554,7556,7576],{"className":7555},[456,652],[419,7557,7559,7573],{"className":7558},[460],[419,7560,7562],{"className":7561,"style":659},[464],[419,7563,7564,7567],{"style":662},[419,7565],{"className":7566,"style":472},[471],[419,7568,7570],{"className":7569},[476,477,478,479],[419,7571,584],{"className":7572},[440,553,479],[419,7574,676],{"className":7575},[675],[419,7577,7579],{"className":7578},[460],[419,7580,7582],{"className":7581,"style":683},[464],[419,7583],{},[419,7585,589],{"className":7586},[588],[419,7588],{"className":7589,"style":593},[559],[419,7591,7593,7596],{"className":7592},[440],[419,7594,778],{"className":7595},[440,553],[419,7597,7599],{"className":7598},[452],[419,7600,7602,7622],{"className":7601},[456,652],[419,7603,7605,7619],{"className":7604},[460],[419,7606,7608],{"className":7607,"style":659},[464],[419,7609,7610,7613],{"style":662},[419,7611],{"className":7612,"style":472},[471],[419,7614,7616],{"className":7615},[476,477,478,479],[419,7617,584],{"className":7618},[440,553,479],[419,7620,676],{"className":7621},[675],[419,7623,7625],{"className":7624},[460],[419,7626,7628],{"className":7627,"style":683},[464],[419,7629],{},[419,7631,603],{"className":7632},[602],[419,7634],{"className":7635,"style":560},[559],[419,7637,7639],{"className":7638},[564],"≤",[419,7641],{"className":7642,"style":560},[559],[419,7644,7646,7650,7690,7693,7696],{"className":7645},[431],[419,7647],{"className":7648,"style":7649},[435],"height:0.786em;vertical-align:-0.15em;",[419,7651,7653,7656],{"className":7652},[440],[419,7654,5242],{"className":7655},[440,553],[419,7657,7659],{"className":7658},[452],[419,7660,7662,7682],{"className":7661},[456,652],[419,7663,7665,7679],{"className":7664},[460],[419,7666,7668],{"className":7667,"style":659},[464],[419,7669,7670,7673],{"style":662},[419,7671],{"className":7672,"style":472},[471],[419,7674,7676],{"className":7675},[476,477,478,479],[419,7677,584],{"className":7678},[440,553,479],[419,7680,676],{"className":7681},[675],[419,7683,7685],{"className":7684},[460],[419,7686,7688],{"className":7687,"style":683},[464],[419,7689],{},[419,7691],{"className":7692,"style":560},[559],[419,7694,7639],{"className":7695},[564],[419,7697],{"className":7698,"style":560},[559],[419,7700,7702,7705,7712,7715,7755,7758,7761,7801],{"className":7701},[431],[419,7703],{"className":7704,"style":575},[435],[419,7706,7708],{"className":7707},[526],[419,7709,7711],{"className":7710},[440,2118],"max",[419,7713,580],{"className":7714},[579],[419,7716,7718,7721],{"className":7717},[440],[419,7719,390],{"className":7720},[440,553],[419,7722,7724],{"className":7723},[452],[419,7725,7727,7747],{"className":7726},[456,652],[419,7728,7730,7744],{"className":7729},[460],[419,7731,7733],{"className":7732,"style":659},[464],[419,7734,7735,7738],{"style":662},[419,7736],{"className":7737,"style":472},[471],[419,7739,7741],{"className":7740},[476,477,478,479],[419,7742,584],{"className":7743},[440,553,479],[419,7745,676],{"className":7746},[675],[419,7748,7750],{"className":7749},[460],[419,7751,7753],{"className":7752,"style":683},[464],[419,7754],{},[419,7756,589],{"className":7757},[588],[419,7759],{"className":7760,"style":593},[559],[419,7762,7764,7767],{"className":7763},[440],[419,7765,778],{"className":7766},[440,553],[419,7768,7770],{"className":7769},[452],[419,7771,7773,7793],{"className":7772},[456,652],[419,7774,7776,7790],{"className":7775},[460],[419,7777,7779],{"className":7778,"style":659},[464],[419,7780,7781,7784],{"style":662},[419,7782],{"className":7783,"style":472},[471],[419,7785,7787],{"className":7786},[476,477,478,479],[419,7788,584],{"className":7789},[440,553,479],[419,7791,676],{"className":7792},[675],[419,7794,7796],{"className":7795},[460],[419,7797,7799],{"className":7798,"style":683},[464],[419,7800],{},[419,7802,603],{"className":7803},[602]," and likewise\nfor ",[419,7806,7808],{"className":7807},[422],[419,7809,7811],{"className":7810,"ariaHidden":427},[426],[419,7812,7814,7818],{"className":7813},[431],[419,7815],{"className":7816,"style":7817},[435],"height:0.625em;vertical-align:-0.1944em;",[419,7819,598],{"className":7820,"style":597},[440,553],").",[7258,7823,7824,7827,7828,7830,7831,7846,7847,7862,7863,7878],{},[385,7825,7826],{},"The segments are collinear"," (all four ",[6398,7829,4924],{}," vanish): they overlap iff their\n",[419,7832,7834],{"className":7833},[422],[419,7835,7837],{"className":7836,"ariaHidden":427},[426],[419,7838,7840,7843],{"className":7839},[431],[419,7841],{"className":7842,"style":2267},[435],[419,7844,441],{"className":7845},[440],"-D projections onto the ",[419,7848,7850],{"className":7849},[422],[419,7851,7853],{"className":7852,"ariaHidden":427},[426],[419,7854,7856,7859],{"className":7855},[431],[419,7857],{"className":7858,"style":7281},[435],[419,7860,584],{"className":7861},[440,553],"-axis (or ",[419,7864,7866],{"className":7865},[422],[419,7867,7869],{"className":7868,"ariaHidden":427},[426],[419,7870,7872,7875],{"className":7871},[431],[419,7873],{"className":7874,"style":7817},[435],[419,7876,598],{"className":7877,"style":597},[440,553],", if vertical) overlap, again a\nbounding-box \u002F interval-overlap test, no geometry beyond comparisons.",[6392,7880,7882],{"className":6394,"code":7881,"language":6396,"meta":376,"style":376},"caption: $\\textsc{SegmentsIntersect}(A,B,C,D)$ — proper crossings plus collinear\u002Ftouching\n$d_1 \\gets \\textsc{Orientation}(C,D,A);\\ \\ d_2 \\gets \\textsc{Orientation}(C,D,B)$\n$d_3 \\gets \\textsc{Orientation}(A,B,C);\\ \\ d_4 \\gets \\textsc{Orientation}(A,B,D)$\nif $d_1 d_2 \u003C 0$ and $d_3 d_4 \u003C 0$ then\n  return true   \u002F\u002F proper crossing\nif $d_1 = 0$ and $\\textsc{OnSegment}(C,D,A)$ then return true\nif $d_2 = 0$ and $\\textsc{OnSegment}(C,D,B)$ then return true\nif $d_3 = 0$ and $\\textsc{OnSegment}(A,B,C)$ then return true\nif $d_4 = 0$ and $\\textsc{OnSegment}(A,B,D)$ then return true\nreturn false\n",[6398,7883,7884,7889,7894,7899,7904,7909,7914,7919,7924,7929],{"__ignoreMap":376},[419,7885,7886],{"class":6402,"line":6},[419,7887,7888],{},"caption: $\\textsc{SegmentsIntersect}(A,B,C,D)$ — proper crossings plus collinear\u002Ftouching\n",[419,7890,7891],{"class":6402,"line":18},[419,7892,7893],{},"$d_1 \\gets \\textsc{Orientation}(C,D,A);\\ \\ d_2 \\gets \\textsc{Orientation}(C,D,B)$\n",[419,7895,7896],{"class":6402,"line":24},[419,7897,7898],{},"$d_3 \\gets \\textsc{Orientation}(A,B,C);\\ \\ d_4 \\gets \\textsc{Orientation}(A,B,D)$\n",[419,7900,7901],{"class":6402,"line":73},[419,7902,7903],{},"if $d_1 d_2 \u003C 0$ and $d_3 d_4 \u003C 0$ then\n",[419,7905,7906],{"class":6402,"line":102},[419,7907,7908],{},"  return true   \u002F\u002F proper crossing\n",[419,7910,7911],{"class":6402,"line":108},[419,7912,7913],{},"if $d_1 = 0$ and $\\textsc{OnSegment}(C,D,A)$ then return true\n",[419,7915,7916],{"class":6402,"line":116},[419,7917,7918],{},"if $d_2 = 0$ and $\\textsc{OnSegment}(C,D,B)$ then return true\n",[419,7920,7921],{"class":6402,"line":196},[419,7922,7923],{},"if $d_3 = 0$ and $\\textsc{OnSegment}(A,B,C)$ then return true\n",[419,7925,7926],{"class":6402,"line":202},[419,7927,7928],{},"if $d_4 = 0$ and $\\textsc{OnSegment}(A,B,D)$ then return true\n",[419,7930,7931],{"class":6402,"line":283},[419,7932,7933],{},"return false\n",[3568,7935,7937,8318],{"className":7936},[3571,3572],[1739,7938,7942],{"xmlns":1741,"width":7939,"height":7940,"viewBox":7941},"475.136","153.558","-75 -75 356.352 115.168",[3579,7943,7944,7947,7954,7957,7964,7967,7974,7977,7984,7987,7992,8001,8119,8246,8249,8255,8258,8264,8267,8273,8276,8282,8285],{"stroke":3581,"style":3582},[1748,7945],{"stroke":3585,"d":7946},"M13.184-6a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,7948,7950],{"transform":7949},"translate(-12.508 3.075)",[1748,7951],{"d":7952,"fill":3581,"stroke":3581,"className":7953,"style":3595},"M13.508-6L11.777-6Q11.680-6 11.680-6.119Q11.680-6.176 11.711-6.246Q11.742-6.316 11.803-6.316Q12.493-6.316 12.893-6.927Q12.893-6.927 12.919-6.954L16.189-12.337Q16.250-12.442 16.378-12.442L16.466-12.442Q16.589-12.442 16.602-12.337L17.230-6.505Q17.274-6.387 17.465-6.352Q17.657-6.316 17.916-6.316Q17.960-6.316 17.993-6.279Q18.026-6.242 18.026-6.207Q18.026-6 17.863-6L15.631-6Q15.591-6 15.560-6.040Q15.530-6.079 15.530-6.119Q15.530-6.180 15.565-6.248Q15.600-6.316 15.657-6.316Q15.934-6.316 16.143-6.360Q16.351-6.404 16.395-6.558L16.233-8.043L13.912-8.043L13.192-6.848Q13.108-6.725 13.108-6.602Q13.108-6.444 13.249-6.380Q13.389-6.316 13.570-6.316Q13.614-6.316 13.640-6.283Q13.666-6.250 13.666-6.207Q13.666-6 13.508-6M15.881-11.282L14.110-8.360L16.198-8.360",[3594],[1748,7955],{"stroke":3585,"d":7956},"M98.543-51.525a1.839 1.839 0 1 0-3.678 0 1.839 1.839 0 0 0 3.678 0m-1.839 0",[3579,7958,7960],{"transform":7959},"translate(90.93 -42.45)",[1748,7961],{"d":7962,"fill":3581,"stroke":3581,"className":7963,"style":3595},"M15.323-6L11.851-6Q11.742-6 11.742-6.119Q11.742-6.180 11.774-6.248Q11.807-6.316 11.869-6.316Q12.370-6.316 12.598-6.369Q12.726-6.417 12.796-6.646L14.018-11.563Q14.035-11.651 14.035-11.695Q14.035-11.761 14.009-11.779Q13.838-11.832 13.306-11.832Q13.200-11.832 13.200-11.950Q13.200-12.012 13.233-12.080Q13.266-12.148 13.328-12.148L16.602-12.148Q17.006-12.148 17.399-12.012Q17.793-11.875 18.048-11.592Q18.303-11.309 18.303-10.896Q18.303-10.460 18.008-10.100Q17.714-9.740 17.276-9.516Q16.839-9.292 16.404-9.212Q16.764-9.177 17.092-9.019Q17.419-8.861 17.624-8.584Q17.828-8.307 17.828-7.942Q17.828-7.529 17.597-7.169Q17.367-6.809 16.980-6.547Q16.593-6.286 16.158-6.143Q15.723-6 15.323-6M13.508-6.378Q13.508-6.316 13.794-6.316L15.143-6.316Q15.591-6.316 16.011-6.554Q16.430-6.791 16.683-7.184Q16.936-7.578 16.936-8.026Q16.936-8.320 16.815-8.558Q16.694-8.795 16.477-8.931Q16.259-9.067 15.965-9.067L14.163-9.067L13.543-6.584Q13.508-6.444 13.508-6.378M14.765-11.498L14.224-9.331L15.639-9.331Q16.057-9.331 16.481-9.544Q16.905-9.757 17.171-10.122Q17.437-10.487 17.437-10.922Q17.437-11.317 17.180-11.574Q16.923-11.832 16.523-11.832L15.235-11.832Q14.976-11.832 14.901-11.785Q14.826-11.739 14.765-11.498",[3594],[1748,7965],{"stroke":3585,"d":7966},"M24.565-57.215a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,7968,7970],{"transform":7969},"translate(7.76 -56.787)",[1748,7971],{"d":7972,"fill":3581,"stroke":3581,"className":7973,"style":3595},"M12.678-7.973Q12.678-7.143 13.165-6.631Q13.653-6.119 14.488-6.119Q15.059-6.119 15.593-6.400Q16.127-6.681 16.512-7.162Q16.896-7.644 17.041-8.197Q17.050-8.228 17.074-8.252Q17.098-8.276 17.134-8.276L17.239-8.276Q17.331-8.276 17.331-8.162Q17.169-7.525 16.716-6.980Q16.263-6.435 15.637-6.119Q15.011-5.802 14.343-5.802Q13.614-5.802 13.038-6.119Q12.462-6.435 12.133-7Q11.803-7.564 11.803-8.294Q11.803-9.059 12.152-9.795Q12.502-10.531 13.084-11.100Q13.666-11.669 14.418-12.007Q15.169-12.346 15.925-12.346Q16.395-12.346 16.793-12.141Q17.191-11.937 17.437-11.555L18.149-12.328Q18.166-12.346 18.206-12.346L18.259-12.346Q18.346-12.346 18.346-12.227L17.744-9.832Q17.727-9.753 17.657-9.753L17.520-9.753Q17.428-9.753 17.428-9.872Q17.468-10.052 17.468-10.302Q17.468-10.764 17.303-11.159Q17.138-11.555 16.808-11.792Q16.479-12.029 16.009-12.029Q15.270-12.029 14.653-11.671Q14.035-11.313 13.594-10.718Q13.152-10.122 12.915-9.399Q12.678-8.676 12.678-7.973",[3594],[1748,7975],{"stroke":3585,"d":7976},"M92.852-.31a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,7978,7980],{"transform":7979},"translate(75.725 17.412)",[1748,7981],{"d":7982,"fill":3581,"stroke":3581,"className":7983,"style":3595},"M15.064-6L11.843-6Q11.733-6 11.733-6.119Q11.733-6.180 11.766-6.248Q11.799-6.316 11.860-6.316Q12.361-6.316 12.590-6.369Q12.708-6.413 12.787-6.646L14.009-11.563Q14.027-11.651 14.027-11.695Q14.027-11.761 14-11.779Q13.829-11.832 13.297-11.832Q13.192-11.832 13.192-11.950Q13.192-12.012 13.225-12.080Q13.258-12.148 13.319-12.148L16.602-12.148Q17.239-12.148 17.731-11.847Q18.223-11.546 18.489-11.021Q18.755-10.496 18.755-9.863Q18.755-9.168 18.454-8.468Q18.153-7.767 17.630-7.208Q17.107-6.650 16.439-6.325Q15.771-6 15.064-6M13.526-6.378Q13.526-6.316 13.811-6.316L14.910-6.316Q15.424-6.316 15.914-6.530Q16.404-6.743 16.791-7.116Q17.037-7.362 17.250-7.740Q17.463-8.118 17.613-8.542Q17.762-8.966 17.839-9.393Q17.916-9.819 17.916-10.192Q17.916-10.562 17.806-10.865Q17.696-11.168 17.483-11.383Q17.270-11.599 16.973-11.715Q16.677-11.832 16.294-11.832L15.253-11.832Q14.993-11.832 14.919-11.785Q14.844-11.739 14.783-11.498L13.561-6.584Q13.526-6.444 13.526-6.378",[3594],[1748,7985],{"fill":3585,"d":7986,"style":3598},"m13.145-6.96 81.76-43.606M24.293-55.91 89.448-1.615",[3579,7988,7989],{"fill":3624},[1748,7990],{"stroke":3585,"d":7991},"M59.278-30.47a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,7993,7994],{"fill":3624,"stroke":3624},[3579,7995,7997],{"transform":7996},"translate(50.463 -36.161)",[1748,7998],{"d":7999,"fill":3624,"stroke":3624,"className":8000,"style":3595},"M12.704-6.198Q12.704-6.281 12.761-6.334L14.668-8.250L12.761-10.166Q12.704-10.206 12.704-10.302Q12.704-10.377 12.765-10.434Q12.827-10.491 12.902-10.491Q12.985-10.491 13.038-10.438L14.936-8.518L16.835-10.438Q16.888-10.491 16.980-10.491Q17.054-10.491 17.112-10.434Q17.169-10.377 17.169-10.302Q17.169-10.206 17.116-10.166L15.209-8.250L17.116-6.334Q17.169-6.281 17.169-6.198Q17.169-6.114 17.112-6.057Q17.054-6 16.980-6Q16.883-6 16.844-6.053L14.936-7.973L13.038-6.062Q12.990-6 12.902-6Q12.827-6 12.765-6.057Q12.704-6.114 12.704-6.198",[3594],[3579,8002,8004,8011,8017,8023,8029,8035,8041,8047,8053,8059,8065,8071,8077,8083,8089,8095,8101,8107,8113],{"stroke":3585,"fontSize":8003},"8",[3579,8005,8007],{"transform":8006},"translate(-73.616 24.762)",[1748,8008],{"d":8009,"fill":3581,"stroke":3581,"className":8010,"style":3668},"M11.627-7.727Q11.627-8.223 11.877-8.648Q12.127-9.074 12.547-9.320Q12.967-9.566 13.467-9.566Q14.006-9.566 14.397-9.441Q14.787-9.316 14.787-8.902Q14.787-8.797 14.737-8.705Q14.686-8.613 14.594-8.562Q14.502-8.512 14.393-8.512Q14.287-8.512 14.196-8.562Q14.104-8.613 14.053-8.705Q14.002-8.797 14.002-8.902Q14.002-9.125 14.170-9.230Q13.948-9.289 13.475-9.289Q13.178-9.289 12.963-9.150Q12.748-9.012 12.617-8.781Q12.487-8.551 12.428-8.281Q12.369-8.012 12.369-7.727Q12.369-7.332 12.502-6.982Q12.635-6.633 12.907-6.416Q13.178-6.199 13.576-6.199Q13.951-6.199 14.227-6.416Q14.502-6.633 14.604-6.992Q14.619-7.055 14.682-7.055L14.787-7.055Q14.823-7.055 14.848-7.027Q14.873-7 14.873-6.961L14.873-6.937Q14.741-6.457 14.356-6.189Q13.971-5.922 13.467-5.922Q13.104-5.922 12.770-6.059Q12.436-6.195 12.176-6.445Q11.916-6.695 11.772-7.031Q11.627-7.367 11.627-7.727M15.405-7.727Q15.405-8.223 15.655-8.648Q15.905-9.074 16.325-9.320Q16.744-9.566 17.244-9.566Q17.784-9.566 18.174-9.441Q18.565-9.316 18.565-8.902Q18.565-8.797 18.514-8.705Q18.463-8.613 18.371-8.562Q18.280-8.512 18.170-8.512Q18.065-8.512 17.973-8.562Q17.881-8.613 17.830-8.705Q17.780-8.797 17.780-8.902Q17.780-9.125 17.948-9.230Q17.725-9.289 17.252-9.289Q16.955-9.289 16.741-9.150Q16.526-9.012 16.395-8.781Q16.264-8.551 16.205-8.281Q16.147-8.012 16.147-7.727Q16.147-7.332 16.280-6.982Q16.412-6.633 16.684-6.416Q16.955-6.199 17.354-6.199Q17.729-6.199 18.004-6.416Q18.280-6.633 18.381-6.992Q18.397-7.055 18.459-7.055L18.565-7.055Q18.600-7.055 18.625-7.027Q18.651-7 18.651-6.961L18.651-6.937Q18.518-6.457 18.133-6.189Q17.748-5.922 17.244-5.922Q16.881-5.922 16.547-6.059Q16.213-6.195 15.953-6.445Q15.694-6.695 15.549-7.031Q15.405-7.367 15.405-7.727M20.725-6.031L19.655-8.887Q19.588-9.066 19.457-9.109Q19.326-9.152 19.069-9.152L19.069-9.449L20.748-9.449L20.748-9.152Q20.299-9.152 20.299-8.953Q20.303-8.937 20.305-8.920Q20.307-8.902 20.307-8.887L21.100-6.793L21.811-8.703Q21.776-8.797 21.776-8.842Q21.776-8.887 21.741-8.887Q21.674-9.066 21.543-9.109Q21.412-9.152 21.159-9.152L21.159-9.449L22.748-9.449L22.748-9.152Q22.299-9.152 22.299-8.953Q22.303-8.934 22.305-8.916Q22.307-8.898 22.307-8.887L23.139-6.672L23.893-8.672Q23.916-8.730 23.916-8.801Q23.916-8.961 23.780-9.057Q23.643-9.152 23.475-9.152L23.475-9.449L24.862-9.449L24.862-9.152Q24.627-9.152 24.450-9.025Q24.272-8.898 24.190-8.672L23.205-6.031Q23.151-5.922 23.037-5.922L22.979-5.922Q22.866-5.922 22.823-6.031L21.963-8.305L21.108-6.031Q21.069-5.922 20.948-5.922L20.893-5.922Q20.780-5.922 20.725-6.031",[3594],[3579,8012,8013],{"transform":8006},[1748,8014],{"d":8015,"fill":3581,"stroke":3581,"className":8016,"style":3668},"M27.776-4.008Q27.163-4.465 26.761-5.100Q26.358-5.734 26.163-6.480Q25.968-7.227 25.968-8Q25.968-8.773 26.163-9.520Q26.358-10.266 26.761-10.900Q27.163-11.535 27.776-11.992Q27.788-11.996 27.796-11.998Q27.804-12 27.815-12L27.893-12Q27.932-12 27.958-11.973Q27.983-11.945 27.983-11.902Q27.983-11.852 27.952-11.832Q27.444-11.379 27.122-10.756Q26.800-10.133 26.659-9.437Q26.518-8.742 26.518-8Q26.518-7.266 26.657-6.566Q26.796-5.867 27.120-5.242Q27.444-4.617 27.952-4.168Q27.983-4.148 27.983-4.098Q27.983-4.055 27.958-4.027Q27.932-4 27.893-4L27.815-4Q27.807-4.004 27.798-4.006Q27.788-4.008 27.776-4.008",[3594],[3579,8018,8019],{"transform":8006},[1748,8020],{"d":8021,"fill":3581,"stroke":3581,"className":8022,"style":3668},"M30.433-6L28.870-6Q28.831-6 28.804-6.041Q28.776-6.082 28.776-6.129L28.800-6.230Q28.843-6.289 28.898-6.297Q29.222-6.297 29.464-6.441Q29.609-6.527 29.726-6.680Q29.843-6.832 29.890-6.871L32.839-11.602Q32.905-11.711 33.030-11.711L33.112-11.711Q33.226-11.711 33.249-11.602L33.890-6.457Q33.944-6.297 34.487-6.297Q34.585-6.266 34.585-6.176L34.562-6.070Q34.526-6.012 34.464-6L32.464-6Q32.429-6 32.398-6.041Q32.366-6.082 32.366-6.129L32.394-6.230Q32.425-6.285 32.487-6.297Q33.081-6.297 33.112-6.504L32.952-7.809L30.792-7.809L30.136-6.770Q30.128-6.723 30.097-6.650Q30.066-6.578 30.066-6.535Q30.066-6.402 30.185-6.350Q30.304-6.297 30.448-6.297Q30.542-6.266 30.542-6.176L30.519-6.070Q30.487-6.012 30.433-6M32.593-10.687L30.976-8.105L32.913-8.105L32.593-10.687M35.648-4.594Q35.648-4.617 35.679-4.664Q35.972-4.926 36.138-5.293Q36.304-5.660 36.304-6.047L36.304-6.105Q36.175-6 36.007-6Q35.816-6 35.679-6.133Q35.542-6.266 35.542-6.465Q35.542-6.656 35.679-6.789Q35.816-6.922 36.007-6.922Q36.308-6.922 36.433-6.652Q36.558-6.383 36.558-6.047Q36.558-5.598 36.376-5.184Q36.194-4.770 35.855-4.473Q35.831-4.449 35.792-4.449Q35.745-4.449 35.696-4.494Q35.648-4.539 35.648-4.594",[3594],[3579,8024,8025],{"transform":8006},[1748,8026],{"d":8027,"fill":3581,"stroke":3581,"className":8028,"style":3668},"M42.257-6L39.113-6Q39.015-6.031 39.015-6.129L39.043-6.230Q39.074-6.285 39.136-6.297Q39.578-6.297 39.736-6.336Q39.894-6.375 39.937-6.602L41.015-10.922Q41.043-10.988 41.043-11.055Q41.043-11.113 40.976-11.137Q40.832-11.168 40.410-11.168Q40.304-11.195 40.304-11.297L40.336-11.398Q40.371-11.457 40.425-11.465L43.386-11.465Q43.750-11.465 44.113-11.348Q44.476-11.230 44.718-10.977Q44.961-10.723 44.961-10.344Q44.961-9.945 44.691-9.633Q44.422-9.320 44.025-9.123Q43.629-8.926 43.242-8.855Q43.765-8.801 44.156-8.506Q44.547-8.211 44.547-7.719Q44.547-7.340 44.328-7.020Q44.109-6.699 43.765-6.477Q43.422-6.254 43.017-6.127Q42.613-6 42.257-6M40.586-6.344Q40.586-6.297 40.832-6.297L42.097-6.297Q42.500-6.297 42.880-6.496Q43.261-6.695 43.500-7.041Q43.738-7.387 43.738-7.785Q43.738-8.187 43.480-8.449Q43.222-8.711 42.816-8.711L41.160-8.711L40.617-6.543Q40.586-6.418 40.586-6.344M41.699-10.863L41.226-8.969L42.531-8.969Q42.906-8.969 43.289-9.148Q43.672-9.328 43.923-9.648Q44.175-9.969 44.175-10.352Q44.175-10.719 43.929-10.943Q43.683-11.168 43.312-11.168L42.105-11.168Q41.933-11.168 41.871-11.154Q41.808-11.141 41.775-11.082Q41.742-11.023 41.699-10.863",[3594],[3579,8030,8031],{"transform":8006},[1748,8032],{"d":8033,"fill":3581,"stroke":3581,"className":8034,"style":3668},"M46.238-4.594Q46.238-4.617 46.269-4.664Q46.562-4.926 46.728-5.293Q46.894-5.660 46.894-6.047L46.894-6.105Q46.766-6 46.598-6Q46.406-6 46.269-6.133Q46.133-6.266 46.133-6.465Q46.133-6.656 46.269-6.789Q46.406-6.922 46.598-6.922Q46.898-6.922 47.023-6.652Q47.148-6.383 47.148-6.047Q47.148-5.598 46.967-5.184Q46.785-4.770 46.445-4.473Q46.422-4.449 46.383-4.449Q46.336-4.449 46.287-4.494Q46.238-4.539 46.238-4.594",[3594],[3579,8036,8037],{"transform":8006},[1748,8038],{"d":8039,"fill":3581,"stroke":3581,"className":8040,"style":3668},"M50.407-7.801Q50.407-7.301 50.614-6.922Q50.821-6.543 51.204-6.336Q51.587-6.129 52.087-6.129Q52.606-6.129 53.094-6.377Q53.583-6.625 53.934-7.053Q54.286-7.480 54.407-7.977Q54.422-8.039 54.497-8.039L54.598-8.039Q54.633-8.039 54.661-8.012Q54.688-7.984 54.688-7.945Q54.688-7.937 54.680-7.922Q54.536-7.340 54.120-6.859Q53.704-6.379 53.131-6.105Q52.559-5.832 51.962-5.832Q51.305-5.832 50.766-6.111Q50.227-6.391 49.922-6.898Q49.618-7.406 49.618-8.062Q49.618-8.754 49.936-9.406Q50.255-10.059 50.801-10.562Q51.348-11.066 52.016-11.350Q52.684-11.633 53.360-11.633Q53.790-11.633 54.155-11.451Q54.520-11.270 54.751-10.930L55.391-11.609Q55.415-11.633 55.450-11.633L55.497-11.633Q55.536-11.633 55.559-11.605Q55.583-11.578 55.583-11.535L55.583-11.512L55.047-9.391Q55.032-9.320 54.969-9.320L54.848-9.320Q54.758-9.320 54.758-9.426Q54.786-9.602 54.786-9.793Q54.786-10.215 54.628-10.566Q54.469-10.918 54.165-11.127Q53.860-11.336 53.430-11.336Q52.778-11.336 52.215-11.033Q51.653-10.730 51.251-10.213Q50.848-9.695 50.628-9.064Q50.407-8.434 50.407-7.801",[3594],[3579,8042,8043],{"transform":8006},[1748,8044],{"d":8045,"fill":3581,"stroke":3581,"className":8046,"style":3668},"M56.457-4L56.375-4Q56.339-4 56.314-4.029Q56.289-4.059 56.289-4.098Q56.289-4.148 56.320-4.168Q56.707-4.504 56.990-4.953Q57.273-5.402 57.439-5.902Q57.605-6.402 57.679-6.920Q57.754-7.437 57.754-8Q57.754-8.570 57.679-9.086Q57.605-9.602 57.439-10.098Q57.273-10.594 56.994-11.041Q56.714-11.488 56.320-11.832Q56.289-11.852 56.289-11.902Q56.289-11.941 56.314-11.971Q56.339-12 56.375-12L56.457-12Q56.468-12 56.478-11.998Q56.488-11.996 56.496-11.992Q57.109-11.535 57.511-10.900Q57.914-10.266 58.109-9.520Q58.304-8.773 58.304-8Q58.304-7.227 58.109-6.480Q57.914-5.734 57.511-5.100Q57.109-4.465 56.496-4.008Q56.484-4.008 56.476-4.006Q56.468-4.004 56.457-4",[3594],[3579,8048,8049],{"transform":8006},[1748,8050],{"d":8051,"fill":3581,"stroke":3581,"className":8052,"style":3668},"M59.832-5.672Q59.832-5.777 59.945-5.840L64.402-8L59.937-10.168Q59.832-10.207 59.832-10.328Q59.832-10.406 59.885-10.459Q59.937-10.512 60.016-10.512Q60.035-10.512 60.098-10.496L64.914-8.168Q65.008-8.113 65.008-8Q65.008-7.895 64.906-7.832L60.098-5.504Q60.035-5.488 60.016-5.488Q59.937-5.488 59.885-5.541Q59.832-5.594 59.832-5.672",[3594],[3579,8054,8055],{"transform":8006},[1748,8056],{"d":8057,"fill":3581,"stroke":3581,"className":8058,"style":3668},"M67.853-5.832Q67.150-5.832 66.750-6.232Q66.349-6.633 66.205-7.242Q66.060-7.852 66.060-8.551Q66.060-9.074 66.130-9.537Q66.201-10 66.394-10.412Q66.587-10.824 66.945-11.072Q67.302-11.320 67.853-11.320Q68.404-11.320 68.761-11.072Q69.119-10.824 69.310-10.414Q69.502-10.004 69.572-9.535Q69.642-9.066 69.642-8.551Q69.642-7.852 69.500-7.244Q69.357-6.637 68.957-6.234Q68.556-5.832 67.853-5.832M67.853-6.090Q68.326-6.090 68.558-6.525Q68.791-6.961 68.845-7.500Q68.900-8.039 68.900-8.680Q68.900-9.676 68.716-10.369Q68.533-11.062 67.853-11.062Q67.486-11.062 67.265-10.824Q67.044-10.586 66.949-10.229Q66.853-9.871 66.828-9.500Q66.802-9.129 66.802-8.680Q66.802-8.039 66.857-7.500Q66.912-6.961 67.144-6.525Q67.377-6.090 67.853-6.090",[3594],[3579,8060,8061],{"transform":8006},[1748,8062],{"d":8063,"fill":3581,"stroke":3581,"className":8064,"style":3668},"M70.806-4.594Q70.806-4.617 70.837-4.664Q71.130-4.926 71.296-5.293Q71.462-5.660 71.462-6.047L71.462-6.105Q71.334-6 71.166-6Q70.974-6 70.837-6.133Q70.701-6.266 70.701-6.465Q70.701-6.656 70.837-6.789Q70.974-6.922 71.166-6.922Q71.466-6.922 71.591-6.652Q71.716-6.383 71.716-6.047Q71.716-5.598 71.535-5.184Q71.353-4.770 71.013-4.473Q70.990-4.449 70.951-4.449Q70.904-4.449 70.855-4.494Q70.806-4.539 70.806-4.594",[3594],[3579,8066,8067],{"transform":8006},[1748,8068],{"d":8069,"fill":3581,"stroke":3581,"className":8070,"style":3668},"M76.875-7.727Q76.875-8.223 77.125-8.648Q77.375-9.074 77.795-9.320Q78.215-9.566 78.715-9.566Q79.254-9.566 79.645-9.441Q80.035-9.316 80.035-8.902Q80.035-8.797 79.985-8.705Q79.934-8.613 79.842-8.562Q79.750-8.512 79.641-8.512Q79.535-8.512 79.444-8.562Q79.352-8.613 79.301-8.705Q79.250-8.797 79.250-8.902Q79.250-9.125 79.418-9.230Q79.196-9.289 78.723-9.289Q78.426-9.289 78.211-9.150Q77.996-9.012 77.865-8.781Q77.735-8.551 77.676-8.281Q77.617-8.012 77.617-7.727Q77.617-7.332 77.750-6.982Q77.883-6.633 78.155-6.416Q78.426-6.199 78.824-6.199Q79.199-6.199 79.475-6.416Q79.750-6.633 79.852-6.992Q79.867-7.055 79.930-7.055L80.035-7.055Q80.071-7.055 80.096-7.027Q80.121-7 80.121-6.961L80.121-6.937Q79.989-6.457 79.604-6.189Q79.219-5.922 78.715-5.922Q78.352-5.922 78.018-6.059Q77.684-6.195 77.424-6.445Q77.164-6.695 77.020-7.031Q76.875-7.367 76.875-7.727M80.653-7.727Q80.653-8.223 80.903-8.648Q81.153-9.074 81.573-9.320Q81.992-9.566 82.492-9.566Q83.031-9.566 83.422-9.441Q83.813-9.316 83.813-8.902Q83.813-8.797 83.762-8.705Q83.711-8.613 83.619-8.562Q83.528-8.512 83.418-8.512Q83.313-8.512 83.221-8.562Q83.129-8.613 83.078-8.705Q83.028-8.797 83.028-8.902Q83.028-9.125 83.196-9.230Q82.973-9.289 82.500-9.289Q82.203-9.289 81.989-9.150Q81.774-9.012 81.643-8.781Q81.512-8.551 81.453-8.281Q81.395-8.012 81.395-7.727Q81.395-7.332 81.528-6.982Q81.660-6.633 81.932-6.416Q82.203-6.199 82.602-6.199Q82.977-6.199 83.252-6.416Q83.528-6.633 83.629-6.992Q83.645-7.055 83.707-7.055L83.813-7.055Q83.848-7.055 83.873-7.027Q83.899-7 83.899-6.961L83.899-6.937Q83.766-6.457 83.381-6.189Q82.996-5.922 82.492-5.922Q82.129-5.922 81.795-6.059Q81.461-6.195 81.201-6.445Q80.942-6.695 80.797-7.031Q80.653-7.367 80.653-7.727M85.973-6.031L84.903-8.887Q84.836-9.066 84.705-9.109Q84.574-9.152 84.317-9.152L84.317-9.449L85.996-9.449L85.996-9.152Q85.547-9.152 85.547-8.953Q85.551-8.937 85.553-8.920Q85.555-8.902 85.555-8.887L86.348-6.793L87.059-8.703Q87.024-8.797 87.024-8.842Q87.024-8.887 86.989-8.887Q86.922-9.066 86.791-9.109Q86.660-9.152 86.406-9.152L86.406-9.449L87.996-9.449L87.996-9.152Q87.547-9.152 87.547-8.953Q87.551-8.934 87.553-8.916Q87.555-8.898 87.555-8.887L88.387-6.672L89.141-8.672Q89.164-8.730 89.164-8.801Q89.164-8.961 89.028-9.057Q88.891-9.152 88.723-9.152L88.723-9.449L90.110-9.449L90.110-9.152Q89.875-9.152 89.698-9.025Q89.520-8.898 89.438-8.672L88.453-6.031Q88.399-5.922 88.285-5.922L88.227-5.922Q88.114-5.922 88.071-6.031L87.211-8.305L86.356-6.031Q86.317-5.922 86.196-5.922L86.141-5.922Q86.028-5.922 85.973-6.031",[3594],[3579,8072,8073],{"transform":8006},[1748,8074],{"d":8075,"fill":3581,"stroke":3581,"className":8076,"style":3668},"M93.023-4.008Q92.410-4.465 92.008-5.100Q91.605-5.734 91.410-6.480Q91.215-7.227 91.215-8Q91.215-8.773 91.410-9.520Q91.605-10.266 92.008-10.900Q92.410-11.535 93.023-11.992Q93.035-11.996 93.043-11.998Q93.051-12 93.062-12L93.140-12Q93.179-12 93.205-11.973Q93.230-11.945 93.230-11.902Q93.230-11.852 93.199-11.832Q92.691-11.379 92.369-10.756Q92.047-10.133 91.906-9.437Q91.765-8.742 91.765-8Q91.765-7.266 91.904-6.566Q92.043-5.867 92.367-5.242Q92.691-4.617 93.199-4.168Q93.230-4.148 93.230-4.098Q93.230-4.055 93.205-4.027Q93.179-4 93.140-4L93.062-4Q93.054-4.004 93.045-4.006Q93.035-4.008 93.023-4.008",[3594],[3579,8078,8079],{"transform":8006},[1748,8080],{"d":8081,"fill":3581,"stroke":3581,"className":8082,"style":3668},"M95.681-6L94.118-6Q94.079-6 94.052-6.041Q94.025-6.082 94.025-6.129L94.048-6.230Q94.091-6.289 94.146-6.297Q94.470-6.297 94.712-6.441Q94.857-6.527 94.974-6.680Q95.091-6.832 95.138-6.871L98.087-11.602Q98.153-11.711 98.278-11.711L98.360-11.711Q98.474-11.711 98.497-11.602L99.138-6.457Q99.192-6.297 99.735-6.297Q99.833-6.266 99.833-6.176L99.810-6.070Q99.775-6.012 99.712-6L97.712-6Q97.677-6 97.646-6.041Q97.614-6.082 97.614-6.129L97.642-6.230Q97.673-6.285 97.735-6.297Q98.329-6.297 98.360-6.504L98.200-7.809L96.040-7.809L95.384-6.770Q95.376-6.723 95.345-6.650Q95.314-6.578 95.314-6.535Q95.314-6.402 95.433-6.350Q95.552-6.297 95.696-6.297Q95.790-6.266 95.790-6.176L95.767-6.070Q95.735-6.012 95.681-6M97.841-10.687L96.224-8.105L98.161-8.105L97.841-10.687M100.896-4.594Q100.896-4.617 100.927-4.664Q101.220-4.926 101.386-5.293Q101.552-5.660 101.552-6.047L101.552-6.105Q101.423-6 101.255-6Q101.064-6 100.927-6.133Q100.790-6.266 100.790-6.465Q100.790-6.656 100.927-6.789Q101.064-6.922 101.255-6.922Q101.556-6.922 101.681-6.652Q101.806-6.383 101.806-6.047Q101.806-5.598 101.624-5.184Q101.442-4.770 101.103-4.473Q101.079-4.449 101.040-4.449Q100.993-4.449 100.944-4.494Q100.896-4.539 100.896-4.594",[3594],[3579,8084,8085],{"transform":8006},[1748,8086],{"d":8087,"fill":3581,"stroke":3581,"className":8088,"style":3668},"M107.505-6L104.361-6Q104.263-6.031 104.263-6.129L104.291-6.230Q104.322-6.285 104.384-6.297Q104.826-6.297 104.984-6.336Q105.142-6.375 105.185-6.602L106.263-10.922Q106.291-10.988 106.291-11.055Q106.291-11.113 106.224-11.137Q106.080-11.168 105.658-11.168Q105.552-11.195 105.552-11.297L105.584-11.398Q105.619-11.457 105.673-11.465L108.634-11.465Q108.998-11.465 109.361-11.348Q109.724-11.230 109.966-10.977Q110.209-10.723 110.209-10.344Q110.209-9.945 109.939-9.633Q109.669-9.320 109.273-9.123Q108.877-8.926 108.490-8.855Q109.013-8.801 109.404-8.506Q109.794-8.211 109.794-7.719Q109.794-7.340 109.576-7.020Q109.357-6.699 109.013-6.477Q108.669-6.254 108.265-6.127Q107.861-6 107.505-6M105.834-6.344Q105.834-6.297 106.080-6.297L107.345-6.297Q107.748-6.297 108.128-6.496Q108.509-6.695 108.748-7.041Q108.986-7.387 108.986-7.785Q108.986-8.187 108.728-8.449Q108.470-8.711 108.064-8.711L106.408-8.711L105.865-6.543Q105.834-6.418 105.834-6.344M106.947-10.863L106.474-8.969L107.779-8.969Q108.154-8.969 108.537-9.148Q108.919-9.328 109.171-9.648Q109.423-9.969 109.423-10.352Q109.423-10.719 109.177-10.943Q108.931-11.168 108.560-11.168L107.353-11.168Q107.181-11.168 107.119-11.154Q107.056-11.141 107.023-11.082Q106.990-11.023 106.947-10.863",[3594],[3579,8090,8091],{"transform":8006},[1748,8092],{"d":8093,"fill":3581,"stroke":3581,"className":8094,"style":3668},"M111.486-4.594Q111.486-4.617 111.517-4.664Q111.810-4.926 111.976-5.293Q112.142-5.660 112.142-6.047L112.142-6.105Q112.014-6 111.846-6Q111.654-6 111.517-6.133Q111.381-6.266 111.381-6.465Q111.381-6.656 111.517-6.789Q111.654-6.922 111.846-6.922Q112.146-6.922 112.271-6.652Q112.396-6.383 112.396-6.047Q112.396-5.598 112.215-5.184Q112.033-4.770 111.693-4.473Q111.670-4.449 111.631-4.449Q111.584-4.449 111.535-4.494Q111.486-4.539 111.486-4.594",[3594],[3579,8096,8097],{"transform":8006},[1748,8098],{"d":8099,"fill":3581,"stroke":3581,"className":8100,"style":3668},"M117.854-6L114.928-6Q114.831-6.031 114.831-6.129L114.854-6.230Q114.889-6.285 114.952-6.297Q115.393-6.297 115.551-6.336Q115.710-6.375 115.752-6.602L116.831-10.922Q116.854-10.992 116.854-11.055Q116.854-11.117 116.792-11.137Q116.647-11.168 116.225-11.168Q116.120-11.195 116.120-11.297L116.151-11.398Q116.182-11.453 116.241-11.465L119.225-11.465Q119.807-11.465 120.260-11.195Q120.713-10.926 120.961-10.457Q121.210-9.988 121.210-9.406Q121.210-8.773 120.938-8.162Q120.667-7.551 120.190-7.062Q119.713-6.574 119.102-6.287Q118.491-6 117.854-6M116.432-6.344Q116.432-6.297 116.678-6.297L117.721-6.297Q118.706-6.297 119.471-7.023Q119.690-7.242 119.874-7.570Q120.057-7.898 120.186-8.262Q120.315-8.625 120.385-9.002Q120.456-9.379 120.456-9.687Q120.456-10.141 120.268-10.479Q120.081-10.816 119.733-10.992Q119.385-11.168 118.936-11.168L117.952-11.168Q117.780-11.168 117.717-11.154Q117.655-11.141 117.622-11.082Q117.588-11.023 117.545-10.863L116.463-6.543Q116.432-6.418 116.432-6.344",[3594],[3579,8102,8103],{"transform":8006},[1748,8104],{"d":8105,"fill":3581,"stroke":3581,"className":8106,"style":3668},"M122.291-4L122.209-4Q122.173-4 122.148-4.029Q122.123-4.059 122.123-4.098Q122.123-4.148 122.154-4.168Q122.541-4.504 122.824-4.953Q123.107-5.402 123.273-5.902Q123.439-6.402 123.513-6.920Q123.588-7.437 123.588-8Q123.588-8.570 123.513-9.086Q123.439-9.602 123.273-10.098Q123.107-10.594 122.828-11.041Q122.548-11.488 122.154-11.832Q122.123-11.852 122.123-11.902Q122.123-11.941 122.148-11.971Q122.173-12 122.209-12L122.291-12Q122.302-12 122.312-11.998Q122.322-11.996 122.330-11.992Q122.943-11.535 123.345-10.900Q123.748-10.266 123.943-9.520Q124.138-8.773 124.138-8Q124.138-7.227 123.943-6.480Q123.748-5.734 123.345-5.100Q122.943-4.465 122.330-4.008Q122.318-4.008 122.310-4.006Q122.302-4.004 122.291-4",[3594],[3579,8108,8109],{"transform":8006},[1748,8110],{"d":8111,"fill":3581,"stroke":3581,"className":8112,"style":3668},"M130.588-5.504L125.771-7.840Q125.666-7.879 125.666-8Q125.666-8.105 125.779-8.168L130.588-10.496Q130.635-10.512 130.658-10.512Q130.732-10.512 130.787-10.457Q130.842-10.402 130.842-10.328Q130.842-10.223 130.740-10.160L126.275-8L130.748-5.832Q130.791-5.812 130.816-5.770Q130.842-5.727 130.842-5.672Q130.842-5.598 130.787-5.543Q130.732-5.488 130.658-5.488Q130.635-5.488 130.588-5.504",[3594],[3579,8114,8115],{"transform":8006},[1748,8116],{"d":8117,"fill":3581,"stroke":3581,"className":8118,"style":3668},"M133.687-5.832Q132.984-5.832 132.584-6.232Q132.183-6.633 132.039-7.242Q131.894-7.852 131.894-8.551Q131.894-9.074 131.964-9.537Q132.035-10 132.228-10.412Q132.421-10.824 132.779-11.072Q133.136-11.320 133.687-11.320Q134.238-11.320 134.595-11.072Q134.953-10.824 135.144-10.414Q135.336-10.004 135.406-9.535Q135.476-9.066 135.476-8.551Q135.476-7.852 135.334-7.244Q135.191-6.637 134.791-6.234Q134.390-5.832 133.687-5.832M133.687-6.090Q134.160-6.090 134.392-6.525Q134.625-6.961 134.679-7.500Q134.734-8.039 134.734-8.680Q134.734-9.676 134.550-10.369Q134.367-11.062 133.687-11.062Q133.320-11.062 133.099-10.824Q132.879-10.586 132.783-10.229Q132.687-9.871 132.662-9.500Q132.636-9.129 132.636-8.680Q132.636-8.039 132.691-7.500Q132.746-6.961 132.978-6.525Q133.211-6.090 133.687-6.090",[3594],[3579,8120,8121,8127,8132,8138,8144,8150,8156,8162,8168,8174,8180,8186,8192,8198,8204,8210,8216,8222,8228,8234,8240],{"stroke":3585,"fontSize":8003},[3579,8122,8124],{"transform":8123},"translate(-73.474 37.566)",[1748,8125],{"d":8009,"fill":3581,"stroke":3581,"className":8126,"style":3668},[3594],[3579,8128,8129],{"transform":8123},[1748,8130],{"d":8015,"fill":3581,"stroke":3581,"className":8131,"style":3668},[3594],[3579,8133,8134],{"transform":8123},[1748,8135],{"d":8136,"fill":3581,"stroke":3581,"className":8137,"style":3668},"M29.679-7.801Q29.679-7.301 29.886-6.922Q30.093-6.543 30.476-6.336Q30.859-6.129 31.359-6.129Q31.878-6.129 32.366-6.377Q32.855-6.625 33.206-7.053Q33.558-7.480 33.679-7.977Q33.694-8.039 33.769-8.039L33.870-8.039Q33.905-8.039 33.933-8.012Q33.960-7.984 33.960-7.945Q33.960-7.937 33.952-7.922Q33.808-7.340 33.392-6.859Q32.976-6.379 32.403-6.105Q31.831-5.832 31.234-5.832Q30.577-5.832 30.038-6.111Q29.499-6.391 29.194-6.898Q28.890-7.406 28.890-8.062Q28.890-8.754 29.208-9.406Q29.526-10.059 30.073-10.562Q30.620-11.066 31.288-11.350Q31.956-11.633 32.632-11.633Q33.062-11.633 33.427-11.451Q33.792-11.270 34.023-10.930L34.663-11.609Q34.687-11.633 34.722-11.633L34.769-11.633Q34.808-11.633 34.831-11.605Q34.855-11.578 34.855-11.535L34.855-11.512L34.319-9.391Q34.304-9.320 34.241-9.320L34.120-9.320Q34.030-9.320 34.030-9.426Q34.058-9.602 34.058-9.793Q34.058-10.215 33.900-10.566Q33.741-10.918 33.437-11.127Q33.132-11.336 32.702-11.336Q32.050-11.336 31.487-11.033Q30.925-10.730 30.523-10.213Q30.120-9.695 29.900-9.064Q29.679-8.434 29.679-7.801",[3594],[3579,8139,8140],{"transform":8123},[1748,8141],{"d":8142,"fill":3581,"stroke":3581,"className":8143,"style":3668},"M35.439-4.594Q35.439-4.617 35.470-4.664Q35.763-4.926 35.929-5.293Q36.095-5.660 36.095-6.047L36.095-6.105Q35.967-6 35.799-6Q35.607-6 35.470-6.133Q35.334-6.266 35.334-6.465Q35.334-6.656 35.470-6.789Q35.607-6.922 35.799-6.922Q36.099-6.922 36.224-6.652Q36.349-6.383 36.349-6.047Q36.349-5.598 36.168-5.184Q35.986-4.770 35.646-4.473Q35.623-4.449 35.584-4.449Q35.537-4.449 35.488-4.494Q35.439-4.539 35.439-4.594",[3594],[3579,8145,8146],{"transform":8123},[1748,8147],{"d":8148,"fill":3581,"stroke":3581,"className":8149,"style":3668},"M41.807-6L38.881-6Q38.784-6.031 38.784-6.129L38.807-6.230Q38.842-6.285 38.905-6.297Q39.346-6.297 39.504-6.336Q39.663-6.375 39.706-6.602L40.784-10.922Q40.807-10.992 40.807-11.055Q40.807-11.117 40.745-11.137Q40.600-11.168 40.178-11.168Q40.073-11.195 40.073-11.297L40.104-11.398Q40.135-11.453 40.194-11.465L43.178-11.465Q43.760-11.465 44.213-11.195Q44.666-10.926 44.914-10.457Q45.163-9.988 45.163-9.406Q45.163-8.773 44.891-8.162Q44.620-7.551 44.143-7.062Q43.666-6.574 43.055-6.287Q42.444-6 41.807-6M40.385-6.344Q40.385-6.297 40.631-6.297L41.674-6.297Q42.659-6.297 43.424-7.023Q43.643-7.242 43.827-7.570Q44.010-7.898 44.139-8.262Q44.268-8.625 44.338-9.002Q44.409-9.379 44.409-9.687Q44.409-10.141 44.221-10.479Q44.034-10.816 43.686-10.992Q43.338-11.168 42.889-11.168L41.905-11.168Q41.733-11.168 41.670-11.154Q41.608-11.141 41.575-11.082Q41.541-11.023 41.498-10.863L40.416-6.543Q40.385-6.418 40.385-6.344",[3594],[3579,8151,8152],{"transform":8123},[1748,8153],{"d":8154,"fill":3581,"stroke":3581,"className":8155,"style":3668},"M46.427-4.594Q46.427-4.617 46.458-4.664Q46.751-4.926 46.917-5.293Q47.083-5.660 47.083-6.047L47.083-6.105Q46.955-6 46.787-6Q46.595-6 46.458-6.133Q46.322-6.266 46.322-6.465Q46.322-6.656 46.458-6.789Q46.595-6.922 46.787-6.922Q47.087-6.922 47.212-6.652Q47.337-6.383 47.337-6.047Q47.337-5.598 47.156-5.184Q46.974-4.770 46.634-4.473Q46.611-4.449 46.572-4.449Q46.525-4.449 46.476-4.494Q46.427-4.539 46.427-4.594",[3594],[3579,8157,8158],{"transform":8123},[1748,8159],{"d":8160,"fill":3581,"stroke":3581,"className":8161,"style":3668},"M51.350-6L49.787-6Q49.748-6 49.721-6.041Q49.694-6.082 49.694-6.129L49.717-6.230Q49.760-6.289 49.815-6.297Q50.139-6.297 50.381-6.441Q50.526-6.527 50.643-6.680Q50.760-6.832 50.807-6.871L53.756-11.602Q53.822-11.711 53.947-11.711L54.029-11.711Q54.143-11.711 54.166-11.602L54.807-6.457Q54.861-6.297 55.404-6.297Q55.502-6.266 55.502-6.176L55.479-6.070Q55.444-6.012 55.381-6L53.381-6Q53.346-6 53.315-6.041Q53.283-6.082 53.283-6.129L53.311-6.230Q53.342-6.285 53.404-6.297Q53.998-6.297 54.029-6.504L53.869-7.809L51.709-7.809L51.053-6.770Q51.045-6.723 51.014-6.650Q50.983-6.578 50.983-6.535Q50.983-6.402 51.102-6.350Q51.221-6.297 51.365-6.297Q51.459-6.266 51.459-6.176L51.436-6.070Q51.404-6.012 51.350-6M53.510-10.687L51.893-8.105L53.830-8.105",[3594],[3579,8163,8164],{"transform":8123},[1748,8165],{"d":8166,"fill":3581,"stroke":3581,"className":8167,"style":3668},"M56.388-4L56.306-4Q56.270-4 56.245-4.029Q56.220-4.059 56.220-4.098Q56.220-4.148 56.251-4.168Q56.638-4.504 56.921-4.953Q57.204-5.402 57.370-5.902Q57.536-6.402 57.610-6.920Q57.684-7.437 57.684-8Q57.684-8.570 57.610-9.086Q57.536-9.602 57.370-10.098Q57.204-10.594 56.925-11.041Q56.645-11.488 56.251-11.832Q56.220-11.852 56.220-11.902Q56.220-11.941 56.245-11.971Q56.270-12 56.306-12L56.388-12Q56.399-12 56.409-11.998Q56.419-11.996 56.427-11.992Q57.040-11.535 57.442-10.900Q57.845-10.266 58.040-9.520Q58.235-8.773 58.235-8Q58.235-7.227 58.040-6.480Q57.845-5.734 57.442-5.100Q57.040-4.465 56.427-4.008Q56.415-4.008 56.407-4.006Q56.399-4.004 56.388-4",[3594],[3579,8169,8170],{"transform":8123},[1748,8171],{"d":8172,"fill":3581,"stroke":3581,"className":8173,"style":3668},"M64.686-5.504L59.869-7.840Q59.764-7.879 59.764-8Q59.764-8.105 59.877-8.168L64.686-10.496Q64.733-10.512 64.756-10.512Q64.830-10.512 64.885-10.457Q64.940-10.402 64.940-10.328Q64.940-10.223 64.838-10.160L60.373-8L64.846-5.832Q64.889-5.812 64.914-5.770Q64.940-5.727 64.940-5.672Q64.940-5.598 64.885-5.543Q64.830-5.488 64.756-5.488Q64.733-5.488 64.686-5.504",[3594],[3579,8175,8176],{"transform":8123},[1748,8177],{"d":8178,"fill":3581,"stroke":3581,"className":8179,"style":3668},"M67.785-5.832Q67.082-5.832 66.682-6.232Q66.281-6.633 66.137-7.242Q65.992-7.852 65.992-8.551Q65.992-9.074 66.062-9.537Q66.133-10 66.326-10.412Q66.519-10.824 66.877-11.072Q67.234-11.320 67.785-11.320Q68.336-11.320 68.693-11.072Q69.051-10.824 69.242-10.414Q69.434-10.004 69.504-9.535Q69.574-9.066 69.574-8.551Q69.574-7.852 69.432-7.244Q69.289-6.637 68.889-6.234Q68.488-5.832 67.785-5.832M67.785-6.090Q68.258-6.090 68.490-6.525Q68.723-6.961 68.777-7.500Q68.832-8.039 68.832-8.680Q68.832-9.676 68.648-10.369Q68.465-11.062 67.785-11.062Q67.418-11.062 67.197-10.824Q66.977-10.586 66.881-10.229Q66.785-9.871 66.760-9.500Q66.734-9.129 66.734-8.680Q66.734-8.039 66.789-7.500Q66.844-6.961 67.076-6.525Q67.309-6.090 67.785-6.090",[3594],[3579,8181,8182],{"transform":8123},[1748,8183],{"d":8184,"fill":3581,"stroke":3581,"className":8185,"style":3668},"M70.738-4.594Q70.738-4.617 70.769-4.664Q71.062-4.926 71.228-5.293Q71.394-5.660 71.394-6.047L71.394-6.105Q71.266-6 71.098-6Q70.906-6 70.769-6.133Q70.633-6.266 70.633-6.465Q70.633-6.656 70.769-6.789Q70.906-6.922 71.098-6.922Q71.398-6.922 71.523-6.652Q71.648-6.383 71.648-6.047Q71.648-5.598 71.467-5.184Q71.285-4.770 70.945-4.473Q70.922-4.449 70.883-4.449Q70.836-4.449 70.787-4.494Q70.738-4.539 70.738-4.594",[3594],[3579,8187,8188],{"transform":8123},[1748,8189],{"d":8190,"fill":3581,"stroke":3581,"className":8191,"style":3668},"M76.806-7.727Q76.806-8.223 77.056-8.648Q77.306-9.074 77.726-9.320Q78.146-9.566 78.646-9.566Q79.185-9.566 79.576-9.441Q79.966-9.316 79.966-8.902Q79.966-8.797 79.916-8.705Q79.865-8.613 79.773-8.562Q79.681-8.512 79.572-8.512Q79.466-8.512 79.375-8.562Q79.283-8.613 79.232-8.705Q79.181-8.797 79.181-8.902Q79.181-9.125 79.349-9.230Q79.127-9.289 78.654-9.289Q78.357-9.289 78.142-9.150Q77.927-9.012 77.796-8.781Q77.666-8.551 77.607-8.281Q77.548-8.012 77.548-7.727Q77.548-7.332 77.681-6.982Q77.814-6.633 78.086-6.416Q78.357-6.199 78.755-6.199Q79.130-6.199 79.406-6.416Q79.681-6.633 79.783-6.992Q79.798-7.055 79.861-7.055L79.966-7.055Q80.002-7.055 80.027-7.027Q80.052-7 80.052-6.961L80.052-6.937Q79.920-6.457 79.535-6.189Q79.150-5.922 78.646-5.922Q78.283-5.922 77.949-6.059Q77.615-6.195 77.355-6.445Q77.095-6.695 76.951-7.031Q76.806-7.367 76.806-7.727M80.584-7.727Q80.584-8.223 80.834-8.648Q81.084-9.074 81.504-9.320Q81.923-9.566 82.423-9.566Q82.963-9.566 83.353-9.441Q83.744-9.316 83.744-8.902Q83.744-8.797 83.693-8.705Q83.642-8.613 83.550-8.562Q83.459-8.512 83.349-8.512Q83.244-8.512 83.152-8.562Q83.060-8.613 83.009-8.705Q82.959-8.797 82.959-8.902Q82.959-9.125 83.127-9.230Q82.904-9.289 82.431-9.289Q82.134-9.289 81.920-9.150Q81.705-9.012 81.574-8.781Q81.443-8.551 81.384-8.281Q81.326-8.012 81.326-7.727Q81.326-7.332 81.459-6.982Q81.591-6.633 81.863-6.416Q82.134-6.199 82.533-6.199Q82.908-6.199 83.183-6.416Q83.459-6.633 83.560-6.992Q83.576-7.055 83.638-7.055L83.744-7.055Q83.779-7.055 83.804-7.027Q83.830-7 83.830-6.961L83.830-6.937Q83.697-6.457 83.312-6.189Q82.927-5.922 82.423-5.922Q82.060-5.922 81.726-6.059Q81.392-6.195 81.132-6.445Q80.873-6.695 80.728-7.031Q80.584-7.367 80.584-7.727M85.904-6.031L84.834-8.887Q84.767-9.066 84.636-9.109Q84.505-9.152 84.248-9.152L84.248-9.449L85.927-9.449L85.927-9.152Q85.478-9.152 85.478-8.953Q85.482-8.937 85.484-8.920Q85.486-8.902 85.486-8.887L86.279-6.793L86.990-8.703Q86.955-8.797 86.955-8.842Q86.955-8.887 86.920-8.887Q86.853-9.066 86.722-9.109Q86.591-9.152 86.338-9.152L86.338-9.449L87.927-9.449L87.927-9.152Q87.478-9.152 87.478-8.953Q87.482-8.934 87.484-8.916Q87.486-8.898 87.486-8.887L88.318-6.672L89.072-8.672Q89.095-8.730 89.095-8.801Q89.095-8.961 88.959-9.057Q88.822-9.152 88.654-9.152L88.654-9.449L90.041-9.449L90.041-9.152Q89.806-9.152 89.629-9.025Q89.451-8.898 89.369-8.672L88.384-6.031Q88.330-5.922 88.216-5.922L88.158-5.922Q88.045-5.922 88.002-6.031L87.142-8.305L86.287-6.031Q86.248-5.922 86.127-5.922L86.072-5.922Q85.959-5.922 85.904-6.031",[3594],[3579,8193,8194],{"transform":8123},[1748,8195],{"d":8196,"fill":3581,"stroke":3581,"className":8197,"style":3668},"M92.955-4.008Q92.342-4.465 91.940-5.100Q91.537-5.734 91.342-6.480Q91.147-7.227 91.147-8Q91.147-8.773 91.342-9.520Q91.537-10.266 91.940-10.900Q92.342-11.535 92.955-11.992Q92.967-11.996 92.975-11.998Q92.983-12 92.994-12L93.072-12Q93.111-12 93.137-11.973Q93.162-11.945 93.162-11.902Q93.162-11.852 93.131-11.832Q92.623-11.379 92.301-10.756Q91.979-10.133 91.838-9.437Q91.697-8.742 91.697-8Q91.697-7.266 91.836-6.566Q91.975-5.867 92.299-5.242Q92.623-4.617 93.131-4.168Q93.162-4.148 93.162-4.098Q93.162-4.055 93.137-4.027Q93.111-4 93.072-4L92.994-4Q92.986-4.004 92.977-4.006Q92.967-4.008 92.955-4.008",[3594],[3579,8199,8200],{"transform":8123},[1748,8201],{"d":8202,"fill":3581,"stroke":3581,"className":8203,"style":3668},"M94.859-7.801Q94.859-7.301 95.066-6.922Q95.273-6.543 95.656-6.336Q96.039-6.129 96.539-6.129Q97.058-6.129 97.546-6.377Q98.035-6.625 98.386-7.053Q98.738-7.480 98.859-7.977Q98.874-8.039 98.949-8.039L99.050-8.039Q99.085-8.039 99.113-8.012Q99.140-7.984 99.140-7.945Q99.140-7.937 99.132-7.922Q98.988-7.340 98.572-6.859Q98.156-6.379 97.583-6.105Q97.011-5.832 96.414-5.832Q95.757-5.832 95.218-6.111Q94.679-6.391 94.374-6.898Q94.070-7.406 94.070-8.062Q94.070-8.754 94.388-9.406Q94.707-10.059 95.253-10.562Q95.800-11.066 96.468-11.350Q97.136-11.633 97.812-11.633Q98.242-11.633 98.607-11.451Q98.972-11.270 99.203-10.930L99.843-11.609Q99.867-11.633 99.902-11.633L99.949-11.633Q99.988-11.633 100.011-11.605Q100.035-11.578 100.035-11.535L100.035-11.512L99.499-9.391Q99.484-9.320 99.421-9.320L99.300-9.320Q99.210-9.320 99.210-9.426Q99.238-9.602 99.238-9.793Q99.238-10.215 99.080-10.566Q98.921-10.918 98.617-11.127Q98.312-11.336 97.882-11.336Q97.230-11.336 96.667-11.033Q96.105-10.730 95.703-10.213Q95.300-9.695 95.080-9.064Q94.859-8.434 94.859-7.801",[3594],[3579,8205,8206],{"transform":8123},[1748,8207],{"d":8208,"fill":3581,"stroke":3581,"className":8209,"style":3668},"M100.619-4.594Q100.619-4.617 100.650-4.664Q100.943-4.926 101.109-5.293Q101.275-5.660 101.275-6.047L101.275-6.105Q101.147-6 100.979-6Q100.787-6 100.650-6.133Q100.514-6.266 100.514-6.465Q100.514-6.656 100.650-6.789Q100.787-6.922 100.979-6.922Q101.279-6.922 101.404-6.652Q101.529-6.383 101.529-6.047Q101.529-5.598 101.348-5.184Q101.166-4.770 100.826-4.473Q100.803-4.449 100.764-4.449Q100.717-4.449 100.668-4.494Q100.619-4.539 100.619-4.594",[3594],[3579,8211,8212],{"transform":8123},[1748,8213],{"d":8214,"fill":3581,"stroke":3581,"className":8215,"style":3668},"M106.987-6L104.061-6Q103.964-6.031 103.964-6.129L103.987-6.230Q104.022-6.285 104.085-6.297Q104.526-6.297 104.684-6.336Q104.843-6.375 104.885-6.602L105.964-10.922Q105.987-10.992 105.987-11.055Q105.987-11.117 105.925-11.137Q105.780-11.168 105.358-11.168Q105.253-11.195 105.253-11.297L105.284-11.398Q105.315-11.453 105.374-11.465L108.358-11.465Q108.940-11.465 109.393-11.195Q109.846-10.926 110.094-10.457Q110.343-9.988 110.343-9.406Q110.343-8.773 110.071-8.162Q109.800-7.551 109.323-7.062Q108.846-6.574 108.235-6.287Q107.624-6 106.987-6M105.565-6.344Q105.565-6.297 105.811-6.297L106.854-6.297Q107.839-6.297 108.604-7.023Q108.823-7.242 109.007-7.570Q109.190-7.898 109.319-8.262Q109.448-8.625 109.518-9.002Q109.589-9.379 109.589-9.687Q109.589-10.141 109.401-10.479Q109.214-10.816 108.866-10.992Q108.518-11.168 108.069-11.168L107.085-11.168Q106.913-11.168 106.850-11.154Q106.788-11.141 106.755-11.082Q106.721-11.023 106.678-10.863L105.596-6.543Q105.565-6.418 105.565-6.344",[3594],[3579,8217,8218],{"transform":8123},[1748,8219],{"d":8220,"fill":3581,"stroke":3581,"className":8221,"style":3668},"M111.606-4.594Q111.606-4.617 111.637-4.664Q111.930-4.926 112.096-5.293Q112.262-5.660 112.262-6.047L112.262-6.105Q112.134-6 111.966-6Q111.774-6 111.637-6.133Q111.501-6.266 111.501-6.465Q111.501-6.656 111.637-6.789Q111.774-6.922 111.966-6.922Q112.266-6.922 112.391-6.652Q112.516-6.383 112.516-6.047Q112.516-5.598 112.335-5.184Q112.153-4.770 111.813-4.473Q111.790-4.449 111.751-4.449Q111.704-4.449 111.655-4.494Q111.606-4.539 111.606-4.594",[3594],[3579,8223,8224],{"transform":8123},[1748,8225],{"d":8226,"fill":3581,"stroke":3581,"className":8227,"style":3668},"M118.208-6L115.064-6Q114.966-6.031 114.966-6.129L114.994-6.230Q115.025-6.285 115.087-6.297Q115.529-6.297 115.687-6.336Q115.845-6.375 115.888-6.602L116.966-10.922Q116.994-10.988 116.994-11.055Q116.994-11.113 116.927-11.137Q116.783-11.168 116.361-11.168Q116.255-11.195 116.255-11.297L116.287-11.398Q116.322-11.457 116.376-11.465L119.337-11.465Q119.701-11.465 120.064-11.348Q120.427-11.230 120.669-10.977Q120.912-10.723 120.912-10.344Q120.912-9.945 120.642-9.633Q120.373-9.320 119.976-9.123Q119.580-8.926 119.193-8.855Q119.716-8.801 120.107-8.506Q120.498-8.211 120.498-7.719Q120.498-7.340 120.279-7.020Q120.060-6.699 119.716-6.477Q119.373-6.254 118.968-6.127Q118.564-6 118.208-6M116.537-6.344Q116.537-6.297 116.783-6.297L118.048-6.297Q118.451-6.297 118.831-6.496Q119.212-6.695 119.451-7.041Q119.689-7.387 119.689-7.785Q119.689-8.187 119.431-8.449Q119.173-8.711 118.767-8.711L117.111-8.711L116.568-6.543Q116.537-6.418 116.537-6.344M117.650-10.863L117.177-8.969L118.482-8.969Q118.857-8.969 119.240-9.148Q119.623-9.328 119.874-9.648Q120.126-9.969 120.126-10.352Q120.126-10.719 119.880-10.943Q119.634-11.168 119.263-11.168L118.056-11.168Q117.884-11.168 117.822-11.154Q117.759-11.141 117.726-11.082Q117.693-11.023 117.650-10.863",[3594],[3579,8229,8230],{"transform":8123},[1748,8231],{"d":8232,"fill":3581,"stroke":3581,"className":8233,"style":3668},"M122.007-4L121.925-4Q121.889-4 121.864-4.029Q121.839-4.059 121.839-4.098Q121.839-4.148 121.870-4.168Q122.257-4.504 122.540-4.953Q122.823-5.402 122.989-5.902Q123.155-6.402 123.229-6.920Q123.303-7.437 123.303-8Q123.303-8.570 123.229-9.086Q123.155-9.602 122.989-10.098Q122.823-10.594 122.544-11.041Q122.264-11.488 121.870-11.832Q121.839-11.852 121.839-11.902Q121.839-11.941 121.864-11.971Q121.889-12 121.925-12L122.007-12Q122.018-12 122.028-11.998Q122.038-11.996 122.046-11.992Q122.659-11.535 123.061-10.900Q123.464-10.266 123.659-9.520Q123.854-8.773 123.854-8Q123.854-7.227 123.659-6.480Q123.464-5.734 123.061-5.100Q122.659-4.465 122.046-4.008Q122.034-4.008 122.026-4.006Q122.018-4.004 122.007-4",[3594],[3579,8235,8236],{"transform":8123},[1748,8237],{"d":8238,"fill":3581,"stroke":3581,"className":8239,"style":3668},"M125.382-5.672Q125.382-5.777 125.495-5.840L129.952-8L125.487-10.168Q125.382-10.207 125.382-10.328Q125.382-10.406 125.435-10.459Q125.487-10.512 125.566-10.512Q125.585-10.512 125.648-10.496L130.464-8.168Q130.558-8.113 130.558-8Q130.558-7.895 130.456-7.832L125.648-5.504Q125.585-5.488 125.566-5.488Q125.487-5.488 125.435-5.541Q125.382-5.594 125.382-5.672",[3594],[3579,8241,8242],{"transform":8123},[1748,8243],{"d":8244,"fill":3581,"stroke":3581,"className":8245,"style":3668},"M133.404-5.832Q132.701-5.832 132.301-6.232Q131.900-6.633 131.756-7.242Q131.611-7.852 131.611-8.551Q131.611-9.074 131.681-9.537Q131.752-10 131.945-10.412Q132.138-10.824 132.496-11.072Q132.853-11.320 133.404-11.320Q133.955-11.320 134.312-11.072Q134.670-10.824 134.861-10.414Q135.053-10.004 135.123-9.535Q135.193-9.066 135.193-8.551Q135.193-7.852 135.051-7.244Q134.908-6.637 134.508-6.234Q134.107-5.832 133.404-5.832M133.404-6.090Q133.877-6.090 134.109-6.525Q134.342-6.961 134.396-7.500Q134.451-8.039 134.451-8.680Q134.451-9.676 134.267-10.369Q134.084-11.062 133.404-11.062Q133.037-11.062 132.816-10.824Q132.595-10.586 132.500-10.229Q132.404-9.871 132.379-9.500Q132.353-9.129 132.353-8.680Q132.353-8.039 132.408-7.500Q132.463-6.961 132.695-6.525Q132.928-6.090 133.404-6.090",[3594],[1748,8247],{"stroke":3585,"d":8248},"M189.591-6a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,8250,8252],{"transform":8251},"translate(163.9 3.075)",[1748,8253],{"d":7952,"fill":3581,"stroke":3581,"className":8254,"style":3595},[3594],[1748,8256],{"stroke":3585,"d":8257},"M263.569-6a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,8259,8261],{"transform":8260},"translate(255.956 3.075)",[1748,8262],{"d":7962,"fill":3581,"stroke":3581,"className":8263,"style":3595},[3594],[1748,8265],{"stroke":3585,"d":8266},"M206.663-31.608a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,8268,8270],{"transform":8269},"translate(180.664 -22.532)",[1748,8271],{"d":7972,"fill":3581,"stroke":3581,"className":8272,"style":3595},[3594],[1748,8274],{"stroke":3585,"d":8275},"M257.878-31.608a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,8277,8279],{"transform":8278},"translate(250.265 -22.532)",[1748,8280],{"d":7982,"fill":3581,"stroke":3581,"className":8281,"style":3595},[3594],[1748,8283],{"fill":3585,"d":8284,"style":3598},"M189.791-6h69.9M206.863-31.608h47.138",[3579,8286,8287,8294,8300,8306,8312],{"stroke":3585,"fontSize":8003},[3579,8288,8290],{"transform":8289},"translate(173.63 22.695)",[1748,8291],{"d":8292,"fill":3581,"stroke":3581,"className":8293,"style":3668},"M11.627-6.008L11.627-7.230Q11.627-7.258 11.659-7.289Q11.690-7.320 11.713-7.320L11.819-7.320Q11.889-7.320 11.905-7.258Q11.967-6.937 12.106-6.697Q12.244-6.457 12.477-6.316Q12.709-6.176 13.018-6.176Q13.256-6.176 13.465-6.236Q13.674-6.297 13.811-6.445Q13.948-6.594 13.948-6.840Q13.948-7.094 13.737-7.260Q13.526-7.426 13.256-7.480L12.635-7.594Q12.229-7.672 11.928-7.928Q11.627-8.184 11.627-8.559Q11.627-8.926 11.828-9.148Q12.030-9.371 12.354-9.469Q12.678-9.566 13.018-9.566Q13.483-9.566 13.780-9.359L14.002-9.543Q14.026-9.566 14.057-9.566L14.108-9.566Q14.139-9.566 14.166-9.539Q14.194-9.512 14.194-9.480L14.194-8.496Q14.194-8.465 14.168-8.436Q14.143-8.406 14.108-8.406L14.002-8.406Q13.967-8.406 13.940-8.434Q13.912-8.461 13.912-8.496Q13.912-8.895 13.660-9.115Q13.409-9.336 13.010-9.336Q12.655-9.336 12.371-9.213Q12.088-9.090 12.088-8.785Q12.088-8.566 12.289-8.434Q12.491-8.301 12.737-8.258L13.362-8.145Q13.791-8.055 14.100-7.758Q14.409-7.461 14.409-7.047Q14.409-6.477 14.010-6.199Q13.612-5.922 13.018-5.922Q12.467-5.922 12.116-6.258L11.819-5.945Q11.795-5.922 11.760-5.922L11.713-5.922Q11.690-5.922 11.659-5.953Q11.627-5.984 11.627-6.008M15.034-6.832Q15.034-7.316 15.436-7.611Q15.838-7.906 16.389-8.025Q16.940-8.145 17.432-8.145L17.432-8.434Q17.432-8.660 17.317-8.867Q17.201-9.074 17.004-9.193Q16.807-9.312 16.576-9.312Q16.151-9.312 15.866-9.207Q15.936-9.180 15.983-9.125Q16.030-9.070 16.055-9Q16.080-8.930 16.080-8.855Q16.080-8.750 16.030-8.658Q15.979-8.566 15.887-8.516Q15.795-8.465 15.690-8.465Q15.584-8.465 15.492-8.516Q15.401-8.566 15.350-8.658Q15.299-8.750 15.299-8.855Q15.299-9.273 15.688-9.420Q16.076-9.566 16.576-9.566Q16.909-9.566 17.262-9.436Q17.616-9.305 17.844-9.051Q18.073-8.797 18.073-8.449L18.073-6.648Q18.073-6.516 18.145-6.406Q18.217-6.297 18.346-6.297Q18.471-6.297 18.539-6.402Q18.608-6.508 18.608-6.648L18.608-7.160L18.889-7.160L18.889-6.648Q18.889-6.445 18.772-6.287Q18.655-6.129 18.473-6.045Q18.291-5.961 18.088-5.961Q17.858-5.961 17.705-6.133Q17.553-6.305 17.522-6.535Q17.362-6.254 17.053-6.088Q16.744-5.922 16.393-5.922Q15.881-5.922 15.457-6.145Q15.034-6.367 15.034-6.832M15.721-6.832Q15.721-6.547 15.948-6.361Q16.174-6.176 16.467-6.176Q16.713-6.176 16.938-6.293Q17.162-6.410 17.297-6.613Q17.432-6.816 17.432-7.070L17.432-7.902Q17.166-7.902 16.881-7.848Q16.596-7.793 16.325-7.664Q16.053-7.535 15.887-7.328Q15.721-7.121 15.721-6.832M21.112-6L19.256-6L19.256-6.297Q19.530-6.297 19.698-6.344Q19.866-6.391 19.866-6.559L19.866-8.695Q19.866-8.910 19.803-9.006Q19.741-9.102 19.621-9.123Q19.502-9.145 19.256-9.145L19.256-9.441L20.448-9.527L20.448-8.793Q20.561-9.008 20.754-9.176Q20.948-9.344 21.186-9.436Q21.424-9.527 21.678-9.527Q22.639-9.527 22.815-8.816Q22.998-9.145 23.326-9.336Q23.655-9.527 24.034-9.527Q25.209-9.527 25.209-8.449L25.209-6.559Q25.209-6.391 25.377-6.344Q25.545-6.297 25.815-6.297L25.815-6L23.959-6L23.959-6.297Q24.233-6.297 24.401-6.342Q24.569-6.387 24.569-6.559L24.569-8.434Q24.569-8.820 24.444-9.047Q24.319-9.273 23.967-9.273Q23.662-9.273 23.407-9.111Q23.151-8.949 23.002-8.680Q22.854-8.410 22.854-8.113L22.854-6.559Q22.854-6.391 23.024-6.344Q23.194-6.297 23.463-6.297L23.463-6L21.608-6L21.608-6.297Q21.881-6.297 22.049-6.344Q22.217-6.391 22.217-6.559L22.217-8.434Q22.217-8.820 22.092-9.047Q21.967-9.273 21.616-9.273Q21.311-9.273 21.055-9.111Q20.799-8.949 20.651-8.680Q20.502-8.410 20.502-8.113L20.502-6.559Q20.502-6.391 20.672-6.344Q20.842-6.297 21.112-6.297L21.112-6M26.260-7.754Q26.260-8.234 26.492-8.650Q26.725-9.066 27.135-9.316Q27.545-9.566 28.022-9.566Q28.752-9.566 29.151-9.125Q29.549-8.684 29.549-7.953Q29.549-7.848 29.455-7.824L27.006-7.824L27.006-7.754Q27.006-7.344 27.127-6.988Q27.248-6.633 27.520-6.416Q27.791-6.199 28.221-6.199Q28.584-6.199 28.881-6.428Q29.178-6.656 29.280-7.008Q29.287-7.055 29.373-7.070L29.455-7.070Q29.549-7.043 29.549-6.961Q29.549-6.953 29.541-6.922Q29.479-6.695 29.340-6.512Q29.201-6.328 29.010-6.195Q28.819-6.062 28.600-5.992Q28.381-5.922 28.143-5.922Q27.772-5.922 27.434-6.059Q27.096-6.195 26.828-6.447Q26.561-6.699 26.410-7.039Q26.260-7.379 26.260-7.754M27.014-8.062L28.975-8.062Q28.975-8.367 28.873-8.658Q28.772-8.949 28.555-9.131Q28.338-9.312 28.022-9.312Q27.721-9.312 27.491-9.125Q27.260-8.937 27.137-8.646Q27.014-8.355 27.014-8.062",[3594],[3579,8295,8296],{"transform":8289},[1748,8297],{"d":8298,"fill":3581,"stroke":3581,"className":8299,"style":3668},"M32.924-6.008L32.924-7.230Q32.924-7.258 32.956-7.289Q32.987-7.320 33.010-7.320L33.116-7.320Q33.186-7.320 33.202-7.258Q33.264-6.937 33.403-6.697Q33.541-6.457 33.774-6.316Q34.006-6.176 34.315-6.176Q34.553-6.176 34.762-6.236Q34.971-6.297 35.108-6.445Q35.245-6.594 35.245-6.840Q35.245-7.094 35.034-7.260Q34.823-7.426 34.553-7.480L33.932-7.594Q33.526-7.672 33.225-7.928Q32.924-8.184 32.924-8.559Q32.924-8.926 33.125-9.148Q33.327-9.371 33.651-9.469Q33.975-9.566 34.315-9.566Q34.780-9.566 35.077-9.359L35.299-9.543Q35.323-9.566 35.354-9.566L35.405-9.566Q35.436-9.566 35.463-9.539Q35.491-9.512 35.491-9.480L35.491-8.496Q35.491-8.465 35.465-8.436Q35.440-8.406 35.405-8.406L35.299-8.406Q35.264-8.406 35.237-8.434Q35.209-8.461 35.209-8.496Q35.209-8.895 34.957-9.115Q34.706-9.336 34.307-9.336Q33.952-9.336 33.668-9.213Q33.385-9.090 33.385-8.785Q33.385-8.566 33.586-8.434Q33.788-8.301 34.034-8.258L34.659-8.145Q35.088-8.055 35.397-7.758Q35.706-7.461 35.706-7.047Q35.706-6.477 35.307-6.199Q34.909-5.922 34.315-5.922Q33.764-5.922 33.413-6.258L33.116-5.945Q33.092-5.922 33.057-5.922L33.010-5.922Q32.987-5.922 32.956-5.953Q32.924-5.984 32.924-6.008M38.092-6L36.315-6L36.315-6.297Q36.588-6.297 36.756-6.344Q36.924-6.391 36.924-6.559L36.924-8.695Q36.924-8.910 36.868-9.006Q36.811-9.102 36.698-9.123Q36.584-9.145 36.338-9.145L36.338-9.441L37.538-9.527L37.538-6.559Q37.538-6.391 37.684-6.344Q37.831-6.297 38.092-6.297L38.092-6M36.651-10.922Q36.651-11.113 36.786-11.244Q36.920-11.375 37.116-11.375Q37.237-11.375 37.340-11.312Q37.444-11.250 37.506-11.146Q37.569-11.043 37.569-10.922Q37.569-10.727 37.438-10.592Q37.307-10.457 37.116-10.457Q36.916-10.457 36.784-10.590Q36.651-10.723 36.651-10.922M40.409-5.922Q39.928-5.922 39.520-6.166Q39.112-6.410 38.873-6.824Q38.635-7.238 38.635-7.727Q38.635-8.219 38.893-8.635Q39.151-9.051 39.582-9.289Q40.014-9.527 40.506-9.527Q41.127-9.527 41.577-9.090L41.577-10.719Q41.577-10.934 41.514-11.029Q41.452-11.125 41.334-11.146Q41.217-11.168 40.971-11.168L40.971-11.465L42.194-11.551L42.194-6.742Q42.194-6.531 42.256-6.436Q42.319-6.340 42.436-6.318Q42.553-6.297 42.803-6.297L42.803-6L41.553-5.922L41.553-6.406Q41.088-5.922 40.409-5.922M40.475-6.176Q40.815-6.176 41.108-6.367Q41.401-6.559 41.553-6.855L41.553-8.687Q41.405-8.961 41.143-9.117Q40.881-9.273 40.569-9.273Q39.944-9.273 39.661-8.826Q39.377-8.379 39.377-7.719Q39.377-7.074 39.629-6.625Q39.881-6.176 40.475-6.176M43.311-7.754Q43.311-8.234 43.543-8.650Q43.776-9.066 44.186-9.316Q44.596-9.566 45.073-9.566Q45.803-9.566 46.202-9.125Q46.600-8.684 46.600-7.953Q46.600-7.848 46.506-7.824L44.057-7.824L44.057-7.754Q44.057-7.344 44.178-6.988Q44.299-6.633 44.571-6.416Q44.842-6.199 45.272-6.199Q45.635-6.199 45.932-6.428Q46.229-6.656 46.331-7.008Q46.338-7.055 46.424-7.070L46.506-7.070Q46.600-7.043 46.600-6.961Q46.600-6.953 46.592-6.922Q46.530-6.695 46.391-6.512Q46.252-6.328 46.061-6.195Q45.870-6.062 45.651-5.992Q45.432-5.922 45.194-5.922Q44.823-5.922 44.485-6.059Q44.147-6.195 43.879-6.447Q43.612-6.699 43.461-7.039Q43.311-7.379 43.311-7.754M44.065-8.062L46.026-8.062Q46.026-8.367 45.924-8.658Q45.823-8.949 45.606-9.131Q45.389-9.312 45.073-9.312Q44.772-9.312 44.541-9.125Q44.311-8.937 44.188-8.646Q44.065-8.355 44.065-8.062",[3594],[3579,8301,8302],{"transform":8289},[1748,8303],{"d":8304,"fill":3581,"stroke":3581,"className":8305,"style":3668},"M55.371-6.977L50.339-6.977Q50.261-6.984 50.212-7.033Q50.164-7.082 50.164-7.160Q50.164-7.230 50.211-7.281Q50.257-7.332 50.339-7.344L55.769-7.344Q56.019-7.543 56.300-7.711Q56.582-7.879 56.875-8Q56.273-8.254 55.769-8.664L50.339-8.664Q50.261-8.672 50.212-8.721Q50.164-8.770 50.164-8.848Q50.164-8.918 50.211-8.969Q50.257-9.020 50.339-9.031L55.371-9.031Q54.902-9.512 54.593-10.137Q54.586-10.168 54.586-10.176Q54.586-10.262 54.683-10.289L54.851-10.289Q54.914-10.277 54.949-10.223Q55.211-9.691 55.619-9.262Q56.027-8.832 56.548-8.539Q57.070-8.246 57.652-8.105Q57.714-8.094 57.714-8Q57.714-7.906 57.652-7.895Q57.070-7.754 56.548-7.461Q56.027-7.168 55.619-6.738Q55.211-6.309 54.949-5.777Q54.914-5.723 54.851-5.711L54.683-5.711Q54.586-5.738 54.586-5.824Q54.586-5.832 54.593-5.863Q54.898-6.480 55.371-6.977",[3594],[3579,8307,8308],{"transform":8289},[1748,8309],{"d":8310,"fill":3581,"stroke":3581,"className":8311,"style":3668},"M63.192-6L61.337-6L61.337-6.297Q61.610-6.297 61.778-6.344Q61.946-6.391 61.946-6.559L61.946-8.695Q61.946-8.910 61.883-9.006Q61.821-9.102 61.702-9.123Q61.583-9.145 61.337-9.145L61.337-9.441L62.528-9.527L62.528-8.793Q62.641-9.008 62.835-9.176Q63.028-9.344 63.266-9.436Q63.504-9.527 63.758-9.527Q64.926-9.527 64.926-8.449L64.926-6.559Q64.926-6.391 65.096-6.344Q65.266-6.297 65.536-6.297L65.536-6L63.680-6L63.680-6.297Q63.954-6.297 64.122-6.344Q64.290-6.391 64.290-6.559L64.290-8.434Q64.290-8.816 64.169-9.045Q64.047-9.273 63.696-9.273Q63.383-9.273 63.129-9.111Q62.876-8.949 62.729-8.680Q62.583-8.410 62.583-8.113L62.583-6.559Q62.583-6.391 62.753-6.344Q62.922-6.297 63.192-6.297L63.192-6M65.981-7.695Q65.981-8.199 66.237-8.631Q66.493-9.062 66.928-9.314Q67.364-9.566 67.864-9.566Q68.251-9.566 68.592-9.422Q68.934-9.277 69.196-9.016Q69.458-8.754 69.600-8.418Q69.743-8.082 69.743-7.695Q69.743-7.203 69.479-6.793Q69.215-6.383 68.786-6.152Q68.356-5.922 67.864-5.922Q67.372-5.922 66.938-6.154Q66.504-6.387 66.243-6.795Q65.981-7.203 65.981-7.695M67.864-6.199Q68.321-6.199 68.573-6.422Q68.825-6.645 68.913-6.996Q69.001-7.348 69.001-7.793Q69.001-8.223 68.907-8.561Q68.813-8.898 68.559-9.105Q68.305-9.312 67.864-9.312Q67.215-9.312 66.971-8.896Q66.727-8.480 66.727-7.793Q66.727-7.348 66.815-6.996Q66.903-6.645 67.155-6.422Q67.407-6.199 67.864-6.199",[3594],[3579,8313,8314],{"transform":8289},[1748,8315],{"d":8316,"fill":3581,"stroke":3581,"className":8317,"style":3668},"M73.111-7.727Q73.111-8.223 73.361-8.648Q73.611-9.074 74.031-9.320Q74.451-9.566 74.951-9.566Q75.490-9.566 75.881-9.441Q76.271-9.316 76.271-8.902Q76.271-8.797 76.221-8.705Q76.170-8.613 76.078-8.562Q75.986-8.512 75.877-8.512Q75.771-8.512 75.680-8.562Q75.588-8.613 75.537-8.705Q75.486-8.797 75.486-8.902Q75.486-9.125 75.654-9.230Q75.432-9.289 74.959-9.289Q74.662-9.289 74.447-9.150Q74.232-9.012 74.101-8.781Q73.971-8.551 73.912-8.281Q73.853-8.012 73.853-7.727Q73.853-7.332 73.986-6.982Q74.119-6.633 74.391-6.416Q74.662-6.199 75.060-6.199Q75.435-6.199 75.711-6.416Q75.986-6.633 76.088-6.992Q76.103-7.055 76.166-7.055L76.271-7.055Q76.307-7.055 76.332-7.027Q76.357-7 76.357-6.961L76.357-6.937Q76.225-6.457 75.840-6.189Q75.455-5.922 74.951-5.922Q74.588-5.922 74.254-6.059Q73.920-6.195 73.660-6.445Q73.400-6.695 73.256-7.031Q73.111-7.367 73.111-7.727M78.853-6L76.873-6L76.873-6.297Q77.142-6.297 77.310-6.342Q77.478-6.387 77.478-6.559L77.478-8.695Q77.478-8.910 77.416-9.006Q77.353-9.102 77.236-9.123Q77.119-9.145 76.873-9.145L76.873-9.441L78.041-9.527L78.041-8.742Q78.119-8.953 78.271-9.139Q78.424-9.324 78.623-9.426Q78.822-9.527 79.049-9.527Q79.295-9.527 79.486-9.383Q79.678-9.238 79.678-9.008Q79.678-8.852 79.572-8.742Q79.467-8.633 79.310-8.633Q79.154-8.633 79.045-8.742Q78.935-8.852 78.935-9.008Q78.935-9.168 79.041-9.273Q78.717-9.273 78.502-9.045Q78.287-8.816 78.191-8.477Q78.096-8.137 78.096-7.832L78.096-6.559Q78.096-6.391 78.322-6.344Q78.549-6.297 78.853-6.297L78.853-6M80.158-7.695Q80.158-8.199 80.414-8.631Q80.670-9.062 81.105-9.314Q81.541-9.566 82.041-9.566Q82.428-9.566 82.769-9.422Q83.111-9.277 83.373-9.016Q83.635-8.754 83.777-8.418Q83.920-8.082 83.920-7.695Q83.920-7.203 83.656-6.793Q83.392-6.383 82.963-6.152Q82.533-5.922 82.041-5.922Q81.549-5.922 81.115-6.154Q80.682-6.387 80.420-6.795Q80.158-7.203 80.158-7.695M82.041-6.199Q82.498-6.199 82.750-6.422Q83.002-6.645 83.090-6.996Q83.178-7.348 83.178-7.793Q83.178-8.223 83.084-8.561Q82.990-8.898 82.736-9.105Q82.482-9.312 82.041-9.312Q81.392-9.312 81.148-8.896Q80.904-8.480 80.904-7.793Q80.904-7.348 80.992-6.996Q81.080-6.645 81.332-6.422Q81.584-6.199 82.041-6.199M84.447-6.008L84.447-7.230Q84.447-7.258 84.478-7.289Q84.510-7.320 84.533-7.320L84.639-7.320Q84.709-7.320 84.725-7.258Q84.787-6.937 84.926-6.697Q85.064-6.457 85.297-6.316Q85.529-6.176 85.838-6.176Q86.076-6.176 86.285-6.236Q86.494-6.297 86.631-6.445Q86.767-6.594 86.767-6.840Q86.767-7.094 86.557-7.260Q86.346-7.426 86.076-7.480L85.455-7.594Q85.049-7.672 84.748-7.928Q84.447-8.184 84.447-8.559Q84.447-8.926 84.648-9.148Q84.850-9.371 85.174-9.469Q85.498-9.566 85.838-9.566Q86.303-9.566 86.600-9.359L86.822-9.543Q86.846-9.566 86.877-9.566L86.928-9.566Q86.959-9.566 86.986-9.539Q87.014-9.512 87.014-9.480L87.014-8.496Q87.014-8.465 86.988-8.436Q86.963-8.406 86.928-8.406L86.822-8.406Q86.787-8.406 86.760-8.434Q86.732-8.461 86.732-8.496Q86.732-8.895 86.480-9.115Q86.228-9.336 85.830-9.336Q85.475-9.336 85.191-9.213Q84.908-9.090 84.908-8.785Q84.908-8.566 85.109-8.434Q85.310-8.301 85.557-8.258L86.182-8.145Q86.611-8.055 86.920-7.758Q87.228-7.461 87.228-7.047Q87.228-6.477 86.830-6.199Q86.432-5.922 85.838-5.922Q85.287-5.922 84.935-6.258L84.639-5.945Q84.615-5.922 84.580-5.922L84.533-5.922Q84.510-5.922 84.478-5.953Q84.447-5.984 84.447-6.008M87.799-6.008L87.799-7.230Q87.799-7.258 87.830-7.289Q87.861-7.320 87.885-7.320L87.990-7.320Q88.060-7.320 88.076-7.258Q88.139-6.937 88.277-6.697Q88.416-6.457 88.648-6.316Q88.881-6.176 89.189-6.176Q89.428-6.176 89.637-6.236Q89.846-6.297 89.982-6.445Q90.119-6.594 90.119-6.840Q90.119-7.094 89.908-7.260Q89.697-7.426 89.428-7.480L88.807-7.594Q88.400-7.672 88.100-7.928Q87.799-8.184 87.799-8.559Q87.799-8.926 88-9.148Q88.201-9.371 88.525-9.469Q88.850-9.566 89.189-9.566Q89.654-9.566 89.951-9.359L90.174-9.543Q90.197-9.566 90.228-9.566L90.279-9.566Q90.310-9.566 90.338-9.539Q90.365-9.512 90.365-9.480L90.365-8.496Q90.365-8.465 90.340-8.436Q90.314-8.406 90.279-8.406L90.174-8.406Q90.139-8.406 90.111-8.434Q90.084-8.461 90.084-8.496Q90.084-8.895 89.832-9.115Q89.580-9.336 89.182-9.336Q88.826-9.336 88.543-9.213Q88.260-9.090 88.260-8.785Q88.260-8.566 88.461-8.434Q88.662-8.301 88.908-8.258L89.533-8.145Q89.963-8.055 90.271-7.758Q90.580-7.461 90.580-7.047Q90.580-6.477 90.182-6.199Q89.783-5.922 89.189-5.922Q88.639-5.922 88.287-6.258L87.990-5.945Q87.967-5.922 87.932-5.922L87.885-5.922Q87.861-5.922 87.830-5.953Q87.799-5.984 87.799-6.008",[3594],[3761,8319,8321,8408],{"className":8320},[3764],[419,8322,8324],{"className":8323},[422],[419,8325,8327],{"className":8326,"ariaHidden":427},[426],[419,8328,8330,8334,8368,8371,8374],{"className":8329},[431],[419,8331],{"className":8332,"style":8333},[435],"height:1.0778em;vertical-align:-0.1944em;",[419,8335,8337],{"className":8336},[440,6464],[419,8338,8340],{"className":8339},[456],[419,8341,8343],{"className":8342},[460],[419,8344,8346,8360],{"className":8345,"style":6460},[464],[419,8347,8348,8351],{"style":1715},[419,8349],{"className":8350,"style":1719},[471],[419,8352,8354,8357],{"className":8353},[440],[419,8355,620],{"className":8356},[440,553],[419,8358,753],{"className":8359,"style":752},[440,553],[419,8361,8362,8365],{"style":6490},[419,8363],{"className":8364,"style":1719},[471],[419,8366],{"className":8367,"style":6498},[6497],[419,8369,589],{"className":8370},[588],[419,8372],{"className":8373,"style":593},[559],[419,8375,8377],{"className":8376},[440,6464],[419,8378,8380],{"className":8379},[456],[419,8381,8383],{"className":8382},[460],[419,8384,8386,8400],{"className":8385,"style":6460},[464],[419,8387,8388,8391],{"style":1715},[419,8389],{"className":8390,"style":1719},[471],[419,8392,8394,8397],{"className":8393},[440],[419,8395,4977],{"className":8396,"style":4976},[440,553],[419,8398,6537],{"className":8399,"style":2126},[440,553],[419,8401,8402,8405],{"style":6490},[419,8403],{"className":8404,"style":1719},[471],[419,8406],{"className":8407,"style":6498},[6497]," cross iff each straddles the other",[530,8410,8412],{"id":8411},"polygon-area-the-shoelace-formula","Polygon area: the shoelace formula",[381,8414,8415,8416,8588,8589,8604,8605,879],{},"Given a polygon as an ordered list of vertices ",[419,8417,8419],{"className":8418},[422],[419,8420,8422],{"className":8421,"ariaHidden":427},[426],[419,8423,8425,8429,8471,8474,8477,8517,8520,8523,8528,8531,8534,8537],{"className":8424},[431],[419,8426],{"className":8427,"style":8428},[435],"height:0.8917em;vertical-align:-0.2083em;",[419,8430,8432,8435],{"className":8431},[440],[419,8433,555],{"className":8434,"style":554},[440,553],[419,8436,8438],{"className":8437},[452],[419,8439,8441,8463],{"className":8440},[456,652],[419,8442,8444,8460],{"className":8443},[460],[419,8445,8448],{"className":8446,"style":8447},[464],"height:0.3011em;",[419,8449,8451,8454],{"style":8450},"top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;",[419,8452],{"className":8453,"style":472},[471],[419,8455,8457],{"className":8456},[476,477,478,479],[419,8458,448],{"className":8459},[440,479],[419,8461,676],{"className":8462},[675],[419,8464,8466],{"className":8465},[460],[419,8467,8469],{"className":8468,"style":683},[464],[419,8470],{},[419,8472,589],{"className":8473},[588],[419,8475],{"className":8476,"style":593},[559],[419,8478,8480,8483],{"className":8479},[440],[419,8481,555],{"className":8482,"style":554},[440,553],[419,8484,8486],{"className":8485},[452],[419,8487,8489,8509],{"className":8488},[456,652],[419,8490,8492,8506],{"className":8491},[460],[419,8493,8495],{"className":8494,"style":8447},[464],[419,8496,8497,8500],{"style":8450},[419,8498],{"className":8499,"style":472},[471],[419,8501,8503],{"className":8502},[476,477,478,479],[419,8504,441],{"className":8505},[440,479],[419,8507,676],{"className":8508},[675],[419,8510,8512],{"className":8511},[460],[419,8513,8515],{"className":8514,"style":683},[464],[419,8516],{},[419,8518,589],{"className":8519},[588],[419,8521],{"className":8522,"style":593},[559],[419,8524,8527],{"className":8525},[8526],"minner","…",[419,8529],{"className":8530,"style":593},[559],[419,8532,589],{"className":8533},[588],[419,8535],{"className":8536,"style":593},[559],[419,8538,8540,8543],{"className":8539},[440],[419,8541,555],{"className":8542,"style":554},[440,553],[419,8544,8546],{"className":8545},[452],[419,8547,8549,8579],{"className":8548},[456,652],[419,8550,8552,8576],{"className":8551},[460],[419,8553,8555],{"className":8554,"style":8447},[464],[419,8556,8557,8560],{"style":8450},[419,8558],{"className":8559,"style":472},[471],[419,8561,8563],{"className":8562},[476,477,478,479],[419,8564,8566,8570,8573],{"className":8565},[440,479],[419,8567,8569],{"className":8568},[440,553,479],"n",[419,8571,486],{"className":8572},[907,479],[419,8574,441],{"className":8575},[440,479],[419,8577,676],{"className":8578},[675],[419,8580,8582],{"className":8581},[460],[419,8583,8586],{"className":8584,"style":8585},[464],"height:0.2083em;",[419,8587],{}," (indices\nmodulo ",[419,8590,8592],{"className":8591},[422],[419,8593,8595],{"className":8594,"ariaHidden":427},[426],[419,8596,8598,8601],{"className":8597},[431],[419,8599],{"className":8600,"style":7281},[435],[419,8602,8569],{"className":8603},[440,553],"), its area is the ",[385,8606,8607],{},"shoelace formula",[419,8609,8611],{"className":8610},[883],[419,8612,8614],{"className":8613},[422],[419,8615,8617,8645,9119],{"className":8616,"ariaHidden":427},[426],[419,8618,8620,8623,8630,8633,8636,8639,8642],{"className":8619},[431],[419,8621],{"className":8622,"style":549},[435],[419,8624,8626],{"className":8625},[440,6945],[419,8627,8629],{"className":8628},[440],"Area",[419,8631],{"className":8632,"style":560},[559],[419,8634],{"className":8635,"style":560},[559],[419,8637,565],{"className":8638},[564],[419,8640],{"className":8641,"style":560},[559],[419,8643],{"className":8644,"style":560},[559],[419,8646,8648,8652,8723,8726,9104,9107,9110,9113,9116],{"className":8647},[431],[419,8649],{"className":8650,"style":8651},[435],"height:3.0788em;vertical-align:-1.2777em;",[419,8653,8655,8659,8720],{"className":8654},[440],[419,8656],{"className":8657},[579,8658],"nulldelimiter",[419,8660,8663],{"className":8661},[8662],"mfrac",[419,8664,8666,8711],{"className":8665},[456,652],[419,8667,8669,8708],{"className":8668},[460],[419,8670,8673,8686,8696],{"className":8671,"style":8672},[464],"height:1.3214em;",[419,8674,8676,8679],{"style":8675},"top:-2.314em;",[419,8677],{"className":8678,"style":1719},[471],[419,8680,8682],{"className":8681},[440],[419,8683,8685],{"className":8684},[440],"2",[419,8687,8689,8692],{"style":8688},"top:-3.23em;",[419,8690],{"className":8691,"style":1719},[471],[419,8693],{"className":8694,"style":6498},[8695],"frac-line",[419,8697,8699,8702],{"style":8698},"top:-3.677em;",[419,8700],{"className":8701,"style":1719},[471],[419,8703,8705],{"className":8704},[440],[419,8706,441],{"className":8707},[440],[419,8709,676],{"className":8710},[675],[419,8712,8714],{"className":8713},[460],[419,8715,8718],{"className":8716,"style":8717},[464],"height:0.686em;",[419,8719],{},[419,8721],{"className":8722},[602,8658],[419,8724],{"className":8725,"style":593},[559],[419,8727,8729,8776,8860,8866,8907,8910,8960,8963,8966,8969,9018,9021,9061,9067],{"className":8728},[8526],[419,8730,8732],{"className":8731},[579],[419,8733,8736],{"className":8734},[5019,8735],"mult",[419,8737,8739,8767],{"className":8738},[456,652],[419,8740,8742,8764],{"className":8741},[460],[419,8743,8746],{"className":8744,"style":8745},[464],"height:1.75em;",[419,8747,8749,8753],{"style":8748},"top:-3.75em;",[419,8750],{"className":8751,"style":8752},[471],"height:5em;",[419,8754,8756],{"style":8755},"width:0.333em;height:3em;",[1739,8757,8761],{"xmlns":1741,"width":8758,"height":8759,"viewBox":8760},"0.333em","3em","0 0 333 3000",[1748,8762],{"d":8763},"M145 15 v585 v1800 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v-1800 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v1800 v585 h43z",[419,8765,676],{"className":8766},[675],[419,8768,8770],{"className":8769},[460],[419,8771,8774],{"className":8772,"style":8773},[464],"height:1.25em;",[419,8775],{},[419,8777,8780],{"className":8778},[526,8779],"op-limits",[419,8781,8783,8851],{"className":8782},[456,652],[419,8784,8786,8848],{"className":8785},[460],[419,8787,8790,8813,8827],{"className":8788,"style":8789},[464],"height:1.8011em;",[419,8791,8793,8797],{"style":8792},"top:-1.8723em;margin-left:0em;",[419,8794],{"className":8795,"style":8796},[471],"height:3.05em;",[419,8798,8800],{"className":8799},[476,477,478,479],[419,8801,8803,8807,8810],{"className":8802},[440,479],[419,8804,8806],{"className":8805},[440,553,479],"i",[419,8808,565],{"className":8809},[564,479],[419,8811,448],{"className":8812},[440,479],[419,8814,8816,8819],{"style":8815},"top:-3.05em;",[419,8817],{"className":8818,"style":8796},[471],[419,8820,8821],{},[419,8822,8826],{"className":8823},[526,8824,8825],"op-symbol","large-op","∑",[419,8828,8830,8833],{"style":8829},"top:-4.3em;margin-left:0em;",[419,8831],{"className":8832,"style":8796},[471],[419,8834,8836],{"className":8835},[476,477,478,479],[419,8837,8839,8842,8845],{"className":8838},[440,479],[419,8840,8569],{"className":8841},[440,553,479],[419,8843,486],{"className":8844},[907,479],[419,8846,441],{"className":8847},[440,479],[419,8849,676],{"className":8850},[675],[419,8852,8854],{"className":8853},[460],[419,8855,8858],{"className":8856,"style":8857},[464],"height:1.2777em;",[419,8859],{},[419,8861,8863],{"className":8862},[579],[419,8864,580],{"className":8865},[5019,5020],[419,8867,8869,8872],{"className":8868},[440],[419,8870,584],{"className":8871},[440,553],[419,8873,8875],{"className":8874},[452],[419,8876,8878,8899],{"className":8877},[456,652],[419,8879,8881,8896],{"className":8880},[460],[419,8882,8885],{"className":8883,"style":8884},[464],"height:0.3117em;",[419,8886,8887,8890],{"style":662},[419,8888],{"className":8889,"style":472},[471],[419,8891,8893],{"className":8892},[476,477,478,479],[419,8894,8806],{"className":8895},[440,553,479],[419,8897,676],{"className":8898},[675],[419,8900,8902],{"className":8901},[460],[419,8903,8905],{"className":8904,"style":683},[464],[419,8906],{},[419,8908],{"className":8909,"style":593},[559],[419,8911,8913,8916],{"className":8912},[440],[419,8914,598],{"className":8915,"style":597},[440,553],[419,8917,8919],{"className":8918},[452],[419,8920,8922,8952],{"className":8921},[456,652],[419,8923,8925,8949],{"className":8924},[460],[419,8926,8928],{"className":8927,"style":8884},[464],[419,8929,8931,8934],{"style":8930},"top:-2.55em;margin-left:-0.0359em;margin-right:0.05em;",[419,8932],{"className":8933,"style":472},[471],[419,8935,8937],{"className":8936},[476,477,478,479],[419,8938,8940,8943,8946],{"className":8939},[440,479],[419,8941,8806],{"className":8942},[440,553,479],[419,8944,908],{"className":8945},[907,479],[419,8947,441],{"className":8948},[440,479],[419,8950,676],{"className":8951},[675],[419,8953,8955],{"className":8954},[460],[419,8956,8958],{"className":8957,"style":8585},[464],[419,8959],{},[419,8961],{"className":8962,"style":903},[559],[419,8964,486],{"className":8965},[907],[419,8967],{"className":8968,"style":903},[559],[419,8970,8972,8975],{"className":8971},[440],[419,8973,584],{"className":8974},[440,553],[419,8976,8978],{"className":8977},[452],[419,8979,8981,9010],{"className":8980},[456,652],[419,8982,8984,9007],{"className":8983},[460],[419,8985,8987],{"className":8986,"style":8884},[464],[419,8988,8989,8992],{"style":662},[419,8990],{"className":8991,"style":472},[471],[419,8993,8995],{"className":8994},[476,477,478,479],[419,8996,8998,9001,9004],{"className":8997},[440,479],[419,8999,8806],{"className":9000},[440,553,479],[419,9002,908],{"className":9003},[907,479],[419,9005,441],{"className":9006},[440,479],[419,9008,676],{"className":9009},[675],[419,9011,9013],{"className":9012},[460],[419,9014,9016],{"className":9015,"style":8585},[464],[419,9017],{},[419,9019],{"className":9020,"style":593},[559],[419,9022,9024,9027],{"className":9023},[440],[419,9025,598],{"className":9026,"style":597},[440,553],[419,9028,9030],{"className":9029},[452],[419,9031,9033,9053],{"className":9032},[456,652],[419,9034,9036,9050],{"className":9035},[460],[419,9037,9039],{"className":9038,"style":8884},[464],[419,9040,9041,9044],{"style":8930},[419,9042],{"className":9043,"style":472},[471],[419,9045,9047],{"className":9046},[476,477,478,479],[419,9048,8806],{"className":9049},[440,553,479],[419,9051,676],{"className":9052},[675],[419,9054,9056],{"className":9055},[460],[419,9057,9059],{"className":9058,"style":683},[464],[419,9060],{},[419,9062,9064],{"className":9063},[602],[419,9065,603],{"className":9066},[5019,5020],[419,9068,9070],{"className":9069},[602],[419,9071,9073],{"className":9072},[5019,8735],[419,9074,9076,9096],{"className":9075},[456,652],[419,9077,9079,9093],{"className":9078},[460],[419,9080,9082],{"className":9081,"style":8745},[464],[419,9083,9084,9087],{"style":8748},[419,9085],{"className":9086,"style":8752},[471],[419,9088,9089],{"style":8755},[1739,9090,9091],{"xmlns":1741,"width":8758,"height":8759,"viewBox":8760},[1748,9092],{"d":8763},[419,9094,676],{"className":9095},[675],[419,9097,9099],{"className":9098},[460],[419,9100,9102],{"className":9101,"style":8773},[464],[419,9103],{},[419,9105],{"className":9106,"style":560},[559],[419,9108],{"className":9109,"style":560},[559],[419,9111,565],{"className":9112},[564],[419,9114],{"className":9115,"style":560},[559],[419,9117],{"className":9118,"style":560},[559],[419,9120,9122,9125,9187,9190,9441,9444],{"className":9121},[431],[419,9123],{"className":9124,"style":8651},[435],[419,9126,9128,9131,9184],{"className":9127},[440],[419,9129],{"className":9130},[579,8658],[419,9132,9134],{"className":9133},[8662],[419,9135,9137,9176],{"className":9136},[456,652],[419,9138,9140,9173],{"className":9139},[460],[419,9141,9143,9154,9162],{"className":9142,"style":8672},[464],[419,9144,9145,9148],{"style":8675},[419,9146],{"className":9147,"style":1719},[471],[419,9149,9151],{"className":9150},[440],[419,9152,8685],{"className":9153},[440],[419,9155,9156,9159],{"style":8688},[419,9157],{"className":9158,"style":1719},[471],[419,9160],{"className":9161,"style":6498},[8695],[419,9163,9164,9167],{"style":8698},[419,9165],{"className":9166,"style":1719},[471],[419,9168,9170],{"className":9169},[440],[419,9171,441],{"className":9172},[440],[419,9174,676],{"className":9175},[675],[419,9177,9179],{"className":9178},[460],[419,9180,9182],{"className":9181,"style":8717},[464],[419,9183],{},[419,9185],{"className":9186},[602,8658],[419,9188],{"className":9189,"style":593},[559],[419,9191,9193,9230,9303,9306,9346,9349,9352,9355,9404],{"className":9192},[8526],[419,9194,9196],{"className":9195},[579],[419,9197,9199],{"className":9198},[5019,8735],[419,9200,9202,9222],{"className":9201},[456,652],[419,9203,9205,9219],{"className":9204},[460],[419,9206,9208],{"className":9207,"style":8745},[464],[419,9209,9210,9213],{"style":8748},[419,9211],{"className":9212,"style":8752},[471],[419,9214,9215],{"style":8755},[1739,9216,9217],{"xmlns":1741,"width":8758,"height":8759,"viewBox":8760},[1748,9218],{"d":8763},[419,9220,676],{"className":9221},[675],[419,9223,9225],{"className":9224},[460],[419,9226,9228],{"className":9227,"style":8773},[464],[419,9229],{},[419,9231,9233],{"className":9232},[526,8779],[419,9234,9236,9295],{"className":9235},[456,652],[419,9237,9239,9292],{"className":9238},[460],[419,9240,9242,9262,9272],{"className":9241,"style":8789},[464],[419,9243,9244,9247],{"style":8792},[419,9245],{"className":9246,"style":8796},[471],[419,9248,9250],{"className":9249},[476,477,478,479],[419,9251,9253,9256,9259],{"className":9252},[440,479],[419,9254,8806],{"className":9255},[440,553,479],[419,9257,565],{"className":9258},[564,479],[419,9260,448],{"className":9261},[440,479],[419,9263,9264,9267],{"style":8815},[419,9265],{"className":9266,"style":8796},[471],[419,9268,9269],{},[419,9270,8826],{"className":9271},[526,8824,8825],[419,9273,9274,9277],{"style":8829},[419,9275],{"className":9276,"style":8796},[471],[419,9278,9280],{"className":9279},[476,477,478,479],[419,9281,9283,9286,9289],{"className":9282},[440,479],[419,9284,8569],{"className":9285},[440,553,479],[419,9287,486],{"className":9288},[907,479],[419,9290,441],{"className":9291},[440,479],[419,9293,676],{"className":9294},[675],[419,9296,9298],{"className":9297},[460],[419,9299,9301],{"className":9300,"style":8857},[464],[419,9302],{},[419,9304],{"className":9305,"style":593},[559],[419,9307,9309,9312],{"className":9308},[440],[419,9310,555],{"className":9311,"style":554},[440,553],[419,9313,9315],{"className":9314},[452],[419,9316,9318,9338],{"className":9317},[456,652],[419,9319,9321,9335],{"className":9320},[460],[419,9322,9324],{"className":9323,"style":8884},[464],[419,9325,9326,9329],{"style":8450},[419,9327],{"className":9328,"style":472},[471],[419,9330,9332],{"className":9331},[476,477,478,479],[419,9333,8806],{"className":9334},[440,553,479],[419,9336,676],{"className":9337},[675],[419,9339,9341],{"className":9340},[460],[419,9342,9344],{"className":9343,"style":683},[464],[419,9345],{},[419,9347],{"className":9348,"style":903},[559],[419,9350,3984],{"className":9351},[907],[419,9353],{"className":9354,"style":903},[559],[419,9356,9358,9361],{"className":9357},[440],[419,9359,555],{"className":9360,"style":554},[440,553],[419,9362,9364],{"className":9363},[452],[419,9365,9367,9396],{"className":9366},[456,652],[419,9368,9370,9393],{"className":9369},[460],[419,9371,9373],{"className":9372,"style":8884},[464],[419,9374,9375,9378],{"style":8450},[419,9376],{"className":9377,"style":472},[471],[419,9379,9381],{"className":9380},[476,477,478,479],[419,9382,9384,9387,9390],{"className":9383},[440,479],[419,9385,8806],{"className":9386},[440,553,479],[419,9388,908],{"className":9389},[907,479],[419,9391,441],{"className":9392},[440,479],[419,9394,676],{"className":9395},[675],[419,9397,9399],{"className":9398},[460],[419,9400,9402],{"className":9401,"style":8585},[464],[419,9403],{},[419,9405,9407],{"className":9406},[602],[419,9408,9410],{"className":9409},[5019,8735],[419,9411,9413,9433],{"className":9412},[456,652],[419,9414,9416,9430],{"className":9415},[460],[419,9417,9419],{"className":9418,"style":8745},[464],[419,9420,9421,9424],{"style":8748},[419,9422],{"className":9423,"style":8752},[471],[419,9425,9426],{"style":8755},[1739,9427,9428],{"xmlns":1741,"width":8758,"height":8759,"viewBox":8760},[1748,9429],{"d":8763},[419,9431,676],{"className":9432},[675],[419,9434,9436],{"className":9435},[460],[419,9437,9439],{"className":9438,"style":8773},[464],[419,9440],{},[419,9442],{"className":9443,"style":593},[559],[419,9445,1533],{"className":9446},[440],[381,9448,9449,9450,9657,9658,9775,9776,1533],{},"Each term ",[419,9451,9453],{"className":9452},[422],[419,9454,9456,9561],{"className":9455,"ariaHidden":427},[426],[419,9457,9459,9463,9503,9552,9555,9558],{"className":9458},[431],[419,9460],{"className":9461,"style":9462},[435],"height:0.7917em;vertical-align:-0.2083em;",[419,9464,9466,9469],{"className":9465},[440],[419,9467,584],{"className":9468},[440,553],[419,9470,9472],{"className":9471},[452],[419,9473,9475,9495],{"className":9474},[456,652],[419,9476,9478,9492],{"className":9477},[460],[419,9479,9481],{"className":9480,"style":8884},[464],[419,9482,9483,9486],{"style":662},[419,9484],{"className":9485,"style":472},[471],[419,9487,9489],{"className":9488},[476,477,478,479],[419,9490,8806],{"className":9491},[440,553,479],[419,9493,676],{"className":9494},[675],[419,9496,9498],{"className":9497},[460],[419,9499,9501],{"className":9500,"style":683},[464],[419,9502],{},[419,9504,9506,9509],{"className":9505},[440],[419,9507,598],{"className":9508,"style":597},[440,553],[419,9510,9512],{"className":9511},[452],[419,9513,9515,9544],{"className":9514},[456,652],[419,9516,9518,9541],{"className":9517},[460],[419,9519,9521],{"className":9520,"style":8884},[464],[419,9522,9523,9526],{"style":8930},[419,9524],{"className":9525,"style":472},[471],[419,9527,9529],{"className":9528},[476,477,478,479],[419,9530,9532,9535,9538],{"className":9531},[440,479],[419,9533,8806],{"className":9534},[440,553,479],[419,9536,908],{"className":9537},[907,479],[419,9539,441],{"className":9540},[440,479],[419,9542,676],{"className":9543},[675],[419,9545,9547],{"className":9546},[460],[419,9548,9550],{"className":9549,"style":8585},[464],[419,9551],{},[419,9553],{"className":9554,"style":903},[559],[419,9556,486],{"className":9557},[907],[419,9559],{"className":9560,"style":903},[559],[419,9562,9564,9568,9617],{"className":9563},[431],[419,9565],{"className":9566,"style":9567},[435],"height:0.6389em;vertical-align:-0.2083em;",[419,9569,9571,9574],{"className":9570},[440],[419,9572,584],{"className":9573},[440,553],[419,9575,9577],{"className":9576},[452],[419,9578,9580,9609],{"className":9579},[456,652],[419,9581,9583,9606],{"className":9582},[460],[419,9584,9586],{"className":9585,"style":8884},[464],[419,9587,9588,9591],{"style":662},[419,9589],{"className":9590,"style":472},[471],[419,9592,9594],{"className":9593},[476,477,478,479],[419,9595,9597,9600,9603],{"className":9596},[440,479],[419,9598,8806],{"className":9599},[440,553,479],[419,9601,908],{"className":9602},[907,479],[419,9604,441],{"className":9605},[440,479],[419,9607,676],{"className":9608},[675],[419,9610,9612],{"className":9611},[460],[419,9613,9615],{"className":9614,"style":8585},[464],[419,9616],{},[419,9618,9620,9623],{"className":9619},[440],[419,9621,598],{"className":9622,"style":597},[440,553],[419,9624,9626],{"className":9625},[452],[419,9627,9629,9649],{"className":9628},[456,652],[419,9630,9632,9646],{"className":9631},[460],[419,9633,9635],{"className":9634,"style":8884},[464],[419,9636,9637,9640],{"style":8930},[419,9638],{"className":9639,"style":472},[471],[419,9641,9643],{"className":9642},[476,477,478,479],[419,9644,8806],{"className":9645},[440,553,479],[419,9647,676],{"className":9648},[675],[419,9650,9652],{"className":9651},[460],[419,9653,9655],{"className":9654,"style":683},[464],[419,9656],{}," is exactly the cross product ",[419,9659,9661],{"className":9660},[422],[419,9662,9664,9720],{"className":9663,"ariaHidden":427},[426],[419,9665,9667,9671,9711,9714,9717],{"className":9666},[431],[419,9668],{"className":9669,"style":9670},[435],"height:0.8333em;vertical-align:-0.15em;",[419,9672,9674,9677],{"className":9673},[440],[419,9675,555],{"className":9676,"style":554},[440,553],[419,9678,9680],{"className":9679},[452],[419,9681,9683,9703],{"className":9682},[456,652],[419,9684,9686,9700],{"className":9685},[460],[419,9687,9689],{"className":9688,"style":8884},[464],[419,9690,9691,9694],{"style":8450},[419,9692],{"className":9693,"style":472},[471],[419,9695,9697],{"className":9696},[476,477,478,479],[419,9698,8806],{"className":9699},[440,553,479],[419,9701,676],{"className":9702},[675],[419,9704,9706],{"className":9705},[460],[419,9707,9709],{"className":9708,"style":683},[464],[419,9710],{},[419,9712],{"className":9713,"style":903},[559],[419,9715,3984],{"className":9716},[907],[419,9718],{"className":9719,"style":903},[559],[419,9721,9723,9726],{"className":9722},[431],[419,9724],{"className":9725,"style":8428},[435],[419,9727,9729,9732],{"className":9728},[440],[419,9730,555],{"className":9731,"style":554},[440,553],[419,9733,9735],{"className":9734},[452],[419,9736,9738,9767],{"className":9737},[456,652],[419,9739,9741,9764],{"className":9740},[460],[419,9742,9744],{"className":9743,"style":8884},[464],[419,9745,9746,9749],{"style":8450},[419,9747],{"className":9748,"style":472},[471],[419,9750,9752],{"className":9751},[476,477,478,479],[419,9753,9755,9758,9761],{"className":9754},[440,479],[419,9756,8806],{"className":9757},[440,553,479],[419,9759,908],{"className":9760},[907,479],[419,9762,441],{"className":9763},[440,479],[419,9765,676],{"className":9766},[675],[419,9768,9770],{"className":9769},[460],[419,9771,9773],{"className":9772,"style":8585},[464],[419,9774],{},",\nso the area is ",[403,9777,9778],{},"a sum of cross products, halved",[2301,9780,9782],{"type":9781},"note",[381,9783,9784,4356,9787,9982,9983,10087,10088,10104],{},[385,9785,9786],{},"Intuition.",[419,9788,9790],{"className":9789},[422],[419,9791,9793,9924],{"className":9792,"ariaHidden":427},[426],[419,9794,9796,9800,9872,9875,9915,9918,9921],{"className":9795},[431],[419,9797],{"className":9798,"style":9799},[435],"height:1.1901em;vertical-align:-0.345em;",[419,9801,9803,9806,9869],{"className":9802},[440],[419,9804],{"className":9805},[579,8658],[419,9807,9809],{"className":9808},[8662],[419,9810,9812,9860],{"className":9811},[456,652],[419,9813,9815,9857],{"className":9814},[460],[419,9816,9819,9834,9842],{"className":9817,"style":9818},[464],"height:0.8451em;",[419,9820,9822,9825],{"style":9821},"top:-2.655em;",[419,9823],{"className":9824,"style":1719},[471],[419,9826,9828],{"className":9827},[476,477,478,479],[419,9829,9831],{"className":9830},[440,479],[419,9832,8685],{"className":9833},[440,479],[419,9835,9836,9839],{"style":8688},[419,9837],{"className":9838,"style":1719},[471],[419,9840],{"className":9841,"style":6498},[8695],[419,9843,9845,9848],{"style":9844},"top:-3.394em;",[419,9846],{"className":9847,"style":1719},[471],[419,9849,9851],{"className":9850},[476,477,478,479],[419,9852,9854],{"className":9853},[440,479],[419,9855,441],{"className":9856},[440,479],[419,9858,676],{"className":9859},[675],[419,9861,9863],{"className":9862},[460],[419,9864,9867],{"className":9865,"style":9866},[464],"height:0.345em;",[419,9868],{},[419,9870],{"className":9871},[602,8658],[419,9873,580],{"className":9874},[579],[419,9876,9878,9881],{"className":9877},[440],[419,9879,555],{"className":9880,"style":554},[440,553],[419,9882,9884],{"className":9883},[452],[419,9885,9887,9907],{"className":9886},[456,652],[419,9888,9890,9904],{"className":9889},[460],[419,9891,9893],{"className":9892,"style":8884},[464],[419,9894,9895,9898],{"style":8450},[419,9896],{"className":9897,"style":472},[471],[419,9899,9901],{"className":9900},[476,477,478,479],[419,9902,8806],{"className":9903},[440,553,479],[419,9905,676],{"className":9906},[675],[419,9908,9910],{"className":9909},[460],[419,9911,9913],{"className":9912,"style":683},[464],[419,9914],{},[419,9916],{"className":9917,"style":903},[559],[419,9919,3984],{"className":9920},[907],[419,9922],{"className":9923,"style":903},[559],[419,9925,9927,9930,9979],{"className":9926},[431],[419,9928],{"className":9929,"style":575},[435],[419,9931,9933,9936],{"className":9932},[440],[419,9934,555],{"className":9935,"style":554},[440,553],[419,9937,9939],{"className":9938},[452],[419,9940,9942,9971],{"className":9941},[456,652],[419,9943,9945,9968],{"className":9944},[460],[419,9946,9948],{"className":9947,"style":8884},[464],[419,9949,9950,9953],{"style":8450},[419,9951],{"className":9952,"style":472},[471],[419,9954,9956],{"className":9955},[476,477,478,479],[419,9957,9959,9962,9965],{"className":9958},[440,479],[419,9960,8806],{"className":9961},[440,553,479],[419,9963,908],{"className":9964},[907,479],[419,9966,441],{"className":9967},[440,479],[419,9969,676],{"className":9970},[675],[419,9972,9974],{"className":9973},[460],[419,9975,9977],{"className":9976,"style":8585},[464],[419,9978],{},[419,9980,603],{"className":9981},[602]," is the signed area of the triangle\n",[419,9984,9986],{"className":9985},[422],[419,9987,9989],{"className":9988,"ariaHidden":427},[426],[419,9990,9992,9995,9998,10038],{"className":9991},[431],[419,9993],{"className":9994,"style":8428},[435],[419,9996,6227],{"className":9997,"style":2126},[440,553],[419,9999,10001,10004],{"className":10000},[440],[419,10002,555],{"className":10003,"style":554},[440,553],[419,10005,10007],{"className":10006},[452],[419,10008,10010,10030],{"className":10009},[456,652],[419,10011,10013,10027],{"className":10012},[460],[419,10014,10016],{"className":10015,"style":8884},[464],[419,10017,10018,10021],{"style":8450},[419,10019],{"className":10020,"style":472},[471],[419,10022,10024],{"className":10023},[476,477,478,479],[419,10025,8806],{"className":10026},[440,553,479],[419,10028,676],{"className":10029},[675],[419,10031,10033],{"className":10032},[460],[419,10034,10036],{"className":10035,"style":683},[464],[419,10037],{},[419,10039,10041,10044],{"className":10040},[440],[419,10042,555],{"className":10043,"style":554},[440,553],[419,10045,10047],{"className":10046},[452],[419,10048,10050,10079],{"className":10049},[456,652],[419,10051,10053,10076],{"className":10052},[460],[419,10054,10056],{"className":10055,"style":8884},[464],[419,10057,10058,10061],{"style":8450},[419,10059],{"className":10060,"style":472},[471],[419,10062,10064],{"className":10063},[476,477,478,479],[419,10065,10067,10070,10073],{"className":10066},[440,479],[419,10068,8806],{"className":10069},[440,553,479],[419,10071,908],{"className":10072},[907,479],[419,10074,441],{"className":10075},[440,479],[419,10077,676],{"className":10078},[675],[419,10080,10082],{"className":10081},[460],[419,10083,10085],{"className":10084,"style":8585},[464],[419,10086],{}," from the origin. As ",[419,10089,10091],{"className":10090},[422],[419,10092,10094],{"className":10093,"ariaHidden":427},[426],[419,10095,10097,10101],{"className":10096},[431],[419,10098],{"className":10099,"style":10100},[435],"height:0.6595em;",[419,10102,8806],{"className":10103},[440,553]," sweeps the boundary, the triangles\noutside the polygon are swept once forward and once backward and cancel, leaving\nexactly the enclosed area. The origin need not be inside the polygon — the signs\nhandle it.",[381,10106,10107,10108,10111,10112,10115,10116,10119,10120],{},"Drop the absolute value and the ",[385,10109,10110],{},"sign of the sum carries orientation",": positive\nmeans the vertices are listed ",[385,10113,10114],{},"counterclockwise",", negative means ",[385,10117,10118],{},"clockwise",".\nThis is the cheapest way to detect the winding direction of a polygon, and because\nthe sum is an integer for integer vertices, the area comes out as an exact\nhalf-integer.",[501,10121,10122],{},[390,10123,8685],{"href":10124,"ariaDescribedBy":10125,"dataFootnoteRef":376,"id":10126},"#user-content-fn-skiena-area",[507],"user-content-fnref-skiena-area",[3568,10128,10130,10243],{"className":10129},[3571,3572],[1739,10131,10135],{"xmlns":1741,"width":10132,"height":10133,"viewBox":10134},"214.744","162.494","-75 -75 161.058 121.870",[3579,10136,10137,10140,10146,10149,10164,10167,10181,10184,10198,10202,10206,10210,10213,10216,10225,10234],{"stroke":3581,"style":3582},[1748,10138],{"stroke":3585,"d":10139},"M-48.162 29.143a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,10141,10142],{"transform":3589},[1748,10143],{"d":10144,"fill":3581,"stroke":3581,"className":10145,"style":3595},"M-47.174 29.341Q-47.684 29.341-48.124 29.165Q-48.563 28.989-48.886 28.660Q-49.209 28.330-49.380 27.882Q-49.552 27.434-49.552 26.928Q-49.552 26.181-49.220 25.436Q-48.888 24.691-48.317 24.094Q-47.746 23.496-47.018 23.147Q-46.291 22.797-45.544 22.797Q-45.025 22.797-44.586 22.977Q-44.146 23.158-43.832 23.489Q-43.518 23.821-43.349 24.263Q-43.180 24.705-43.180 25.236Q-43.180 25.992-43.507 26.730Q-43.834 27.469-44.401 28.058Q-44.968 28.646-45.691 28.994Q-46.414 29.341-47.174 29.341M-47.104 29.033Q-46.436 29.033-45.863 28.635Q-45.289 28.238-44.878 27.594Q-44.467 26.950-44.250 26.236Q-44.032 25.522-44.032 24.902Q-44.032 24.397-44.212 23.988Q-44.393 23.580-44.753 23.333Q-45.113 23.087-45.619 23.087Q-45.944 23.087-46.260 23.193Q-46.577 23.298-46.867 23.485Q-47.157 23.672-47.398 23.914Q-47.781 24.296-48.066 24.843Q-48.352 25.390-48.501 25.997Q-48.651 26.603-48.651 27.152Q-48.651 27.644-48.482 28.075Q-48.312 28.506-47.963 28.769Q-47.614 29.033-47.104 29.033",[3594],[1748,10147],{"stroke":3585,"d":10148},"M-19.709 14.916a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,10150,10151,10158],{"stroke":3585},[3579,10152,10154],{"transform":10153},"translate(23.416 -2.505)",[1748,10155],{"d":10156,"fill":3581,"stroke":3581,"className":10157,"style":3595},"M-47.113 29.143L-49.512 29.143Q-49.552 29.143-49.583 29.103Q-49.613 29.064-49.613 29.024Q-49.613 28.963-49.580 28.895Q-49.547 28.827-49.486 28.827Q-48.985 28.827-48.756 28.774Q-48.638 28.730-48.559 28.497L-47.337 23.580Q-47.319 23.492-47.319 23.448Q-47.319 23.382-47.346 23.364Q-47.517 23.311-48.049 23.311Q-48.154 23.311-48.154 23.193Q-48.154 23.131-48.121 23.063Q-48.088 22.995-48.027 22.995L-44.872 22.995Q-44.441 22.995-44.026 23.147Q-43.610 23.298-43.344 23.610Q-43.079 23.922-43.079 24.375Q-43.079 24.951-43.494 25.403Q-43.909 25.856-44.531 26.104Q-45.153 26.352-45.715 26.352L-47.209 26.352L-47.759 28.559Q-47.776 28.602-47.776 28.695Q-47.776 28.756-47.750 28.774Q-47.579 28.827-47.047 28.827Q-47.003 28.827-46.977 28.860Q-46.950 28.893-46.950 28.936Q-46.950 29.143-47.113 29.143M-46.563 23.645L-47.166 26.067L-45.869 26.067Q-45.469 26.067-45.100 25.953Q-44.731 25.838-44.494 25.588Q-44.256 25.359-44.109 24.937Q-43.962 24.516-43.962 24.146Q-43.962 23.685-44.318 23.498Q-44.674 23.311-45.184 23.311L-46.093 23.311Q-46.353 23.311-46.427 23.358Q-46.502 23.404-46.563 23.645",[3594],[3579,10159,10160],{"transform":10153},[1748,10161],{"d":10162,"fill":3581,"stroke":3581,"className":10163,"style":5982},"M-42.264 30.269Q-42.826 30.269-43.156 29.982Q-43.486 29.695-43.613 29.245Q-43.741 28.795-43.741 28.230Q-43.741 27.826-43.675 27.461Q-43.609 27.096-43.446 26.800Q-43.283 26.504-42.992 26.329Q-42.700 26.153-42.264 26.153Q-41.827 26.153-41.537 26.329Q-41.247 26.504-41.083 26.799Q-40.919 27.093-40.855 27.451Q-40.790 27.808-40.790 28.230Q-40.790 28.795-40.918 29.245Q-41.045 29.695-41.372 29.982Q-41.699 30.269-42.264 30.269M-42.264 30.052Q-41.860 30.052-41.665 29.742Q-41.470 29.431-41.426 29.039Q-41.382 28.646-41.382 28.133Q-41.382 27.638-41.426 27.279Q-41.470 26.920-41.665 26.645Q-41.860 26.370-42.264 26.370Q-42.668 26.370-42.863 26.645Q-43.058 26.920-43.102 27.279Q-43.146 27.638-43.146 28.133Q-43.146 28.646-43.102 29.039Q-43.058 29.431-42.863 29.742Q-42.668 30.052-42.264 30.052",[3594],[1748,10165],{"stroke":3585,"d":10166},"M65.65.69a1.839 1.839 0 1 0-3.678 0 1.839 1.839 0 0 0 3.677 0m-1.84 0",[3579,10168,10169,10175],{"stroke":3585},[3579,10170,10172],{"transform":10171},"translate(119.383 -25.878)",[1748,10173],{"d":10156,"fill":3581,"stroke":3581,"className":10174,"style":3595},[3594],[3579,10176,10177],{"transform":10171},[1748,10178],{"d":10179,"fill":3581,"stroke":3581,"className":10180,"style":5982},"M-41.054 30.143L-43.345 30.143L-43.345 29.885Q-42.469 29.885-42.469 29.712L-42.469 26.633Q-42.662 26.721-42.894 26.758Q-43.125 26.794-43.380 26.794L-43.380 26.537Q-43.002 26.537-42.681 26.452Q-42.361 26.367-42.132 26.153L-42.012 26.153Q-41.980 26.153-41.955 26.176Q-41.930 26.200-41.930 26.238L-41.930 29.712Q-41.930 29.885-41.054 29.885",[3594],[1748,10182],{"stroke":3585,"d":10183},"M22.97-56.215a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,10185,10186,10192],{"stroke":3585},[3579,10187,10189],{"transform":10188},"translate(66.096 -91.93)",[1748,10190],{"d":10156,"fill":3581,"stroke":3581,"className":10191,"style":3595},[3594],[3579,10193,10194],{"transform":10188},[1748,10195],{"d":10196,"fill":3581,"stroke":3581,"className":10197,"style":5982},"M-41.054 30.143L-43.664 30.143L-43.664 29.958Q-43.658 29.935-43.638 29.909L-42.487 28.854Q-42.147 28.543-41.967 28.357Q-41.786 28.171-41.641 27.911Q-41.496 27.650-41.496 27.354Q-41.496 27.081-41.622 26.866Q-41.748 26.651-41.968 26.531Q-42.188 26.411-42.463 26.411Q-42.639 26.411-42.809 26.468Q-42.979 26.525-43.111 26.632Q-43.242 26.739-43.322 26.897Q-43.234 26.897-43.156 26.941Q-43.078 26.985-43.034 27.061Q-42.991 27.137-42.991 27.234Q-42.991 27.374-43.087 27.471Q-43.184 27.568-43.327 27.568Q-43.465 27.568-43.565 27.468Q-43.664 27.369-43.664 27.234Q-43.664 26.909-43.474 26.661Q-43.283 26.414-42.980 26.283Q-42.677 26.153-42.361 26.153Q-41.980 26.153-41.637 26.288Q-41.294 26.422-41.080 26.695Q-40.866 26.967-40.866 27.354Q-40.866 27.629-40.991 27.856Q-41.116 28.083-41.296 28.255Q-41.476 28.426-41.801 28.666Q-42.126 28.907-42.211 28.974L-42.967 29.578L-42.434 29.578Q-41.945 29.578-41.614 29.570Q-41.282 29.563-41.268 29.548Q-41.209 29.478-41.177 29.343Q-41.145 29.208-41.113 28.997L-40.866 28.997",[3594],[1748,10199],{"fill":10200,"stroke":3585,"d":10201},"var(--tk-soft-accent)","m-50 29.143 28.452-14.227L63.811.69Z",[1748,10203],{"fill":10204,"stroke":3585,"d":10205},"var(--tk-soft-good)","M-50 29.143 63.81.69 21.132-56.215Z",[1748,10207],{"fill":10208,"stroke":3585,"d":10209},"var(--tk-soft-warn)","M-50 29.143 21.13-56.215l-42.679 71.131Z",[1748,10211],{"fill":3585,"stroke":3624,"d":10212,"style":3656},"M-19.537 14.581 61.8 1.025m.787-1.966L22.355-54.585m-1.224-1.63Z",[1748,10214],{"fill":3585,"d":10215,"style":3652},"m-48.177 28.231 24.806-12.403M-48.023 28.648 61.833 1.184M-48.695 27.577 19.826-54.65",[3579,10217,10218],{"fill":3624,"stroke":3624},[3579,10219,10221],{"transform":10220},"translate(66.404 -12.226)",[1748,10222],{"d":10223,"fill":3624,"stroke":3624,"className":10224,"style":3668},"M-46.879 27.327L-49.352 27.327Q-49.430 27.315-49.479 27.266Q-49.527 27.217-49.527 27.143Q-49.527 27.069-49.479 27.020Q-49.430 26.971-49.352 26.959L-46.879 26.959L-46.879 24.479Q-46.852 24.311-46.695 24.311Q-46.621 24.311-46.572 24.360Q-46.523 24.409-46.512 24.479L-46.512 26.959L-44.039 26.959Q-43.871 26.991-43.871 27.143Q-43.871 27.295-44.039 27.327L-46.512 27.327L-46.512 29.807Q-46.523 29.877-46.572 29.926Q-46.621 29.975-46.695 29.975Q-46.852 29.975-46.879 29.807",[3594],[3579,10226,10228],{"fill":10227,"stroke":10227},"var(--tk-good)",[3579,10229,10231],{"transform":10230},"translate(83.475 -46.37)",[1748,10232],{"d":10223,"fill":10227,"stroke":10227,"className":10233,"style":3668},[3594],[3579,10235,10236],{"fill":5985,"stroke":5985},[3579,10237,10239],{"transform":10238},"translate(30.838 -40.68)",[1748,10240],{"d":10241,"fill":5985,"stroke":5985,"className":10242,"style":3668},"M-44.281 27.327L-49.113 27.327Q-49.187 27.315-49.238 27.266Q-49.289 27.217-49.289 27.143Q-49.289 26.991-49.113 26.959L-44.281 26.959Q-44.113 26.987-44.113 27.143Q-44.113 27.299-44.281 27.327",[3594],[3761,10244,10246,10247,10437,10438,10453],{"className":10245},[3764],"Shoelace sums signed triangles ",[419,10248,10250],{"className":10249},[422],[419,10251,10253,10379],{"className":10252,"ariaHidden":427},[426],[419,10254,10256,10259,10327,10330,10370,10373,10376],{"className":10255},[431],[419,10257],{"className":10258,"style":9799},[435],[419,10260,10262,10265,10324],{"className":10261},[440],[419,10263],{"className":10264},[579,8658],[419,10266,10268],{"className":10267},[8662],[419,10269,10271,10316],{"className":10270},[456,652],[419,10272,10274,10313],{"className":10273},[460],[419,10275,10277,10291,10299],{"className":10276,"style":9818},[464],[419,10278,10279,10282],{"style":9821},[419,10280],{"className":10281,"style":1719},[471],[419,10283,10285],{"className":10284},[476,477,478,479],[419,10286,10288],{"className":10287},[440,479],[419,10289,8685],{"className":10290},[440,479],[419,10292,10293,10296],{"style":8688},[419,10294],{"className":10295,"style":1719},[471],[419,10297],{"className":10298,"style":6498},[8695],[419,10300,10301,10304],{"style":9844},[419,10302],{"className":10303,"style":1719},[471],[419,10305,10307],{"className":10306},[476,477,478,479],[419,10308,10310],{"className":10309},[440,479],[419,10311,441],{"className":10312},[440,479],[419,10314,676],{"className":10315},[675],[419,10317,10319],{"className":10318},[460],[419,10320,10322],{"className":10321,"style":9866},[464],[419,10323],{},[419,10325],{"className":10326},[602,8658],[419,10328,580],{"className":10329},[579],[419,10331,10333,10336],{"className":10332},[440],[419,10334,555],{"className":10335,"style":554},[440,553],[419,10337,10339],{"className":10338},[452],[419,10340,10342,10362],{"className":10341},[456,652],[419,10343,10345,10359],{"className":10344},[460],[419,10346,10348],{"className":10347,"style":8884},[464],[419,10349,10350,10353],{"style":8450},[419,10351],{"className":10352,"style":472},[471],[419,10354,10356],{"className":10355},[476,477,478,479],[419,10357,8806],{"className":10358},[440,553,479],[419,10360,676],{"className":10361},[675],[419,10363,10365],{"className":10364},[460],[419,10366,10368],{"className":10367,"style":683},[464],[419,10369],{},[419,10371],{"className":10372,"style":903},[559],[419,10374,3984],{"className":10375},[907],[419,10377],{"className":10378,"style":903},[559],[419,10380,10382,10385,10434],{"className":10381},[431],[419,10383],{"className":10384,"style":575},[435],[419,10386,10388,10391],{"className":10387},[440],[419,10389,555],{"className":10390,"style":554},[440,553],[419,10392,10394],{"className":10393},[452],[419,10395,10397,10426],{"className":10396},[456,652],[419,10398,10400,10423],{"className":10399},[460],[419,10401,10403],{"className":10402,"style":8884},[464],[419,10404,10405,10408],{"style":8450},[419,10406],{"className":10407,"style":472},[471],[419,10409,10411],{"className":10410},[476,477,478,479],[419,10412,10414,10417,10420],{"className":10413},[440,479],[419,10415,8806],{"className":10416},[440,553,479],[419,10418,908],{"className":10419},[907,479],[419,10421,441],{"className":10422},[440,479],[419,10424,676],{"className":10425},[675],[419,10427,10429],{"className":10428},[460],[419,10430,10432],{"className":10431,"style":8585},[464],[419,10433],{},[419,10435,603],{"className":10436},[602]," from ",[419,10439,10441],{"className":10440},[422],[419,10442,10444],{"className":10443,"ariaHidden":427},[426],[419,10445,10447,10450],{"className":10446},[431],[419,10448],{"className":10449,"style":549},[435],[419,10451,6227],{"className":10452,"style":2126},[440,553],"; exterior sweeps cancel",[530,10455,10457],{"id":10456},"point-in-polygon","Point in polygon",[381,10459,10460,10461,10476,10477,10480,10481,10496,10497,10516,10517,10520,10521,10536,10537,10540,10541,10544,10545,10560,10561,10576,10577,10596,10597,10600,10601,10635,10636,10688,10689,10704,10705,10707,10708],{},"Is a query point ",[419,10462,10464],{"className":10463},[422],[419,10465,10467],{"className":10466,"ariaHidden":427},[426],[419,10468,10470,10473],{"className":10469},[431],[419,10471],{"className":10472,"style":7817},[435],[419,10474,4922],{"className":10475,"style":597},[440,553]," inside a polygon? Two exact strategies, both built from the\nprimitives above. ",[385,10478,10479],{},"Ray casting"," shoots a ray from ",[419,10482,10484],{"className":10483},[422],[419,10485,10487],{"className":10486,"ariaHidden":427},[426],[419,10488,10490,10493],{"className":10489},[431],[419,10491],{"className":10492,"style":7817},[435],[419,10494,4922],{"className":10495,"style":597},[440,553]," in a fixed direction (say\n",[419,10498,10500],{"className":10499},[422],[419,10501,10503],{"className":10502,"ariaHidden":427},[426],[419,10504,10506,10510,10513],{"className":10505},[431],[419,10507],{"className":10508,"style":10509},[435],"height:0.6667em;vertical-align:-0.0833em;",[419,10511,908],{"className":10512},[440],[419,10514,584],{"className":10515},[440,553],") and counts how many polygon edges it crosses: an ",[385,10518,10519],{},"odd"," count means ",[419,10522,10524],{"className":10523},[422],[419,10525,10527],{"className":10526,"ariaHidden":427},[426],[419,10528,10530,10533],{"className":10529},[431],[419,10531],{"className":10532,"style":7817},[435],[419,10534,4922],{"className":10535,"style":597},[440,553]," is\ninside, ",[385,10538,10539],{},"even"," means outside — the Jordan-curve parity argument. Each\nray-vs-edge crossing is decided with the same straddle\u002Forientation tests, with\ncareful tie-breaking when the ray grazes a vertex (count an edge only if exactly\none endpoint is strictly above the ray). The ",[385,10542,10543],{},"winding number"," alternative sums\nthe signed angles the polygon's edges subtend at ",[419,10546,10548],{"className":10547},[422],[419,10549,10551],{"className":10550,"ariaHidden":427},[426],[419,10552,10554,10557],{"className":10553},[431],[419,10555],{"className":10556,"style":7817},[435],[419,10558,4922],{"className":10559,"style":597},[440,553]," (computed from cross- and\ndot-product signs, not actual angles); a total winding of ",[419,10562,10564],{"className":10563},[422],[419,10565,10567],{"className":10566,"ariaHidden":427},[426],[419,10568,10570,10573],{"className":10569},[431],[419,10571],{"className":10572,"style":2267},[435],[419,10574,448],{"className":10575},[440]," means outside,\n",[419,10578,10580],{"className":10579},[422],[419,10581,10583],{"className":10582,"ariaHidden":427},[426],[419,10584,10586,10589,10593],{"className":10585},[431],[419,10587],{"className":10588,"style":5683},[435],[419,10590,10592],{"className":10591},[440],"±",[419,10594,441],{"className":10595},[440]," means inside, and unlike parity it stays correct for self-intersecting\npolygons. For a ",[385,10598,10599],{},"convex"," polygon both can be sped up to ",[419,10602,10604],{"className":10603},[422],[419,10605,10607],{"className":10606,"ariaHidden":427},[426],[419,10608,10610,10613,10616,10619,10626,10629,10632],{"className":10609},[431],[419,10611],{"className":10612,"style":575},[435],[419,10614,6227],{"className":10615,"style":2126},[440,553],[419,10617,580],{"className":10618},[579],[419,10620,10622],{"className":10621},[526],[419,10623,10625],{"className":10624,"style":4951},[440,2118],"log",[419,10627],{"className":10628,"style":593},[559],[419,10630,8569],{"className":10631},[440,553],[419,10633,603],{"className":10634},[602],": binary-search\nthe vertex fan around ",[419,10637,10639],{"className":10638},[422],[419,10640,10642],{"className":10641,"ariaHidden":427},[426],[419,10643,10645,10648],{"className":10644},[431],[419,10646],{"className":10647,"style":9670},[435],[419,10649,10651,10654],{"className":10650},[440],[419,10652,555],{"className":10653,"style":554},[440,553],[419,10655,10657],{"className":10656},[452],[419,10658,10660,10680],{"className":10659},[456,652],[419,10661,10663,10677],{"className":10662},[460],[419,10664,10666],{"className":10665,"style":8447},[464],[419,10667,10668,10671],{"style":8450},[419,10669],{"className":10670,"style":472},[471],[419,10672,10674],{"className":10673},[476,477,478,479],[419,10675,448],{"className":10676},[440,479],[419,10678,676],{"className":10679},[675],[419,10681,10683],{"className":10682},[460],[419,10684,10686],{"className":10685,"style":683},[464],[419,10687],{}," to find the wedge containing ",[419,10690,10692],{"className":10691},[422],[419,10693,10695],{"className":10694,"ariaHidden":427},[426],[419,10696,10698,10701],{"className":10697},[431],[419,10699],{"className":10700,"style":7817},[435],[419,10702,4922],{"className":10703,"style":597},[440,553]," using orientation\ntests, then one final ",[6398,10706,4924],{}," against the bounding edge decides inside vs. outside.",[501,10709,10710],{},[390,10711,10715],{"href":10712,"ariaDescribedBy":10713,"dataFootnoteRef":376,"id":10714},"#user-content-fn-erickson-pip",[507],"user-content-fnref-erickson-pip","3",[3568,10717,10719,10858],{"className":10718},[3571,3572],[1739,10720,10724],{"xmlns":1741,"width":10721,"height":10722,"viewBox":10723},"331.065","145.639","-75 -75 248.299 109.229",[3579,10725,10726,10729,10734,10747,10755,10758,10793,10796,10810,10814,10822,10825],{"stroke":3581,"style":3582},[1748,10727],{"fill":3585,"d":10728,"style":3598},"M-65.203 30.56H62.833V-71.87L-1.185-20.655-65.203-71.87Z",[3579,10730,10731],{"fill":3624},[1748,10732],{"stroke":3585,"d":10733},"M-48-46.263a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,10735,10737,10740],{"fill":10736},"var(--tk-bg)",[1748,10738],{"stroke":3585,"d":10739},"M-57.936-47.904h6.456v-7.625h-6.456Z",[3579,10741,10743],{"transform":10742},"translate(8.267 -81.213)",[1748,10744],{"d":10745,"fill":3581,"stroke":3581,"className":10746,"style":3595},"M-63.801 32.198Q-63.801 32.128-63.768 32.060Q-63.735 31.992-63.674 31.992Q-63.313 31.992-63.160 31.961Q-63.076 31.943-63.032 31.904Q-62.988 31.864-62.966 31.816Q-62.944 31.767-62.918 31.658L-62.549 30.172Q-63.072 30.660-63.581 30.660Q-63.977 30.660-64.263 30.456Q-64.548 30.251-64.695 29.917Q-64.843 29.583-64.843 29.192Q-64.843 28.757-64.669 28.296Q-64.495 27.834-64.183 27.443Q-63.871 27.052-63.461 26.817Q-63.050 26.582-62.610 26.582Q-62.333 26.582-62.100 26.745Q-61.868 26.907-61.749 27.166Q-61.657 27.021-61.435 26.802Q-61.213 26.582-61.107 26.582Q-61.063 26.582-61.033 26.613Q-61.002 26.643-61.002 26.687L-61.002 26.727L-62.250 31.719Q-62.259 31.772-62.267 31.814Q-62.276 31.855-62.276 31.882Q-62.276 31.992-61.701 31.992Q-61.657 31.992-61.630 32.022Q-61.604 32.053-61.604 32.106Q-61.604 32.304-61.766 32.304L-63.700 32.304Q-63.735 32.304-63.768 32.266Q-63.801 32.229-63.801 32.198M-63.564 30.396Q-63.230 30.396-62.924 30.159Q-62.619 29.922-62.404 29.597L-61.898 27.606Q-61.955 27.289-62.147 27.065Q-62.338 26.841-62.628 26.841Q-62.997 26.841-63.296 27.160Q-63.595 27.478-63.762 27.887Q-63.898 28.234-64.023 28.744Q-64.148 29.254-64.148 29.579Q-64.148 29.904-64.010 30.150Q-63.871 30.396-63.564 30.396",[3594],[3579,10748,10749,10752],{"fill":3624,"stroke":3624,"style":3656},[1748,10750],{"fill":3585,"d":10751},"M-47.8-46.262H85.24",[1748,10753],{"stroke":3585,"d":10754},"m88.44-46.263-5.12-2.56 1.92 2.56-1.92 2.56",[1748,10756],{"fill":3624,"stroke":3585,"d":10757},"M-31.934-46.263a1.26 1.26 0 1 0-2.52 0 1.26 1.26 0 0 0 2.52 0M32.084-46.263a1.26 1.26 0 1 0-2.52 0 1.26 1.26 0 0 0 2.52 0M64.093-46.263a1.26 1.26 0 1 0-2.52 0 1.26 1.26 0 0 0 2.52 0m-1.26 0",[3579,10759,10760],{"fill":3624,"stroke":3624},[3579,10761,10762,10769,10775,10781,10787],{"fill":3624,"stroke":3585,"fontSize":8003},[3579,10763,10765],{"transform":10764},"translate(161.018 -79.431)",[1748,10766],{"d":10767,"fill":3624,"stroke":3624,"className":10768,"style":3668},"M-64.965 28.864Q-64.965 28.360-64.709 27.928Q-64.453 27.497-64.017 27.245Q-63.582 26.993-63.082 26.993Q-62.695 26.993-62.353 27.137Q-62.012 27.282-61.750 27.543Q-61.488 27.805-61.346 28.141Q-61.203 28.477-61.203 28.864Q-61.203 29.356-61.467 29.766Q-61.730 30.176-62.160 30.407Q-62.590 30.637-63.082 30.637Q-63.574 30.637-64.008 30.405Q-64.441 30.172-64.703 29.764Q-64.965 29.356-64.965 28.864M-63.082 30.360Q-62.625 30.360-62.373 30.137Q-62.121 29.914-62.033 29.563Q-61.945 29.211-61.945 28.766Q-61.945 28.336-62.039 27.998Q-62.133 27.661-62.387 27.454Q-62.641 27.247-63.082 27.247Q-63.730 27.247-63.974 27.663Q-64.219 28.079-64.219 28.766Q-64.219 29.211-64.131 29.563Q-64.043 29.914-63.791 30.137Q-63.539 30.360-63.082 30.360",[3594],[3579,10770,10771],{"transform":10764},[1748,10772],{"d":10773,"fill":3624,"stroke":3624,"className":10774,"style":3668},"M-58.662 30.637Q-59.143 30.637-59.551 30.393Q-59.959 30.149-60.197 29.735Q-60.436 29.321-60.436 28.832Q-60.436 28.340-60.178 27.924Q-59.920 27.508-59.488 27.270Q-59.057 27.032-58.565 27.032Q-57.944 27.032-57.494 27.469L-57.494 25.840Q-57.494 25.625-57.557 25.530Q-57.619 25.434-57.737 25.413Q-57.854 25.391-58.100 25.391L-58.100 25.094L-56.877 25.008L-56.877 29.817Q-56.877 30.028-56.815 30.123Q-56.752 30.219-56.635 30.241Q-56.518 30.262-56.268 30.262L-56.268 30.559L-57.518 30.637L-57.518 30.153Q-57.983 30.637-58.662 30.637M-58.596 30.383Q-58.256 30.383-57.963 30.192Q-57.670 30-57.518 29.704L-57.518 27.872Q-57.666 27.598-57.928 27.442Q-58.190 27.286-58.502 27.286Q-59.127 27.286-59.410 27.733Q-59.694 28.180-59.694 28.840Q-59.694 29.485-59.442 29.934Q-59.190 30.383-58.596 30.383M-53.944 30.637Q-54.424 30.637-54.832 30.393Q-55.240 30.149-55.479 29.735Q-55.717 29.321-55.717 28.832Q-55.717 28.340-55.459 27.924Q-55.201 27.508-54.770 27.270Q-54.338 27.032-53.846 27.032Q-53.225 27.032-52.776 27.469L-52.776 25.840Q-52.776 25.625-52.838 25.530Q-52.901 25.434-53.018 25.413Q-53.135 25.391-53.381 25.391L-53.381 25.094L-52.158 25.008L-52.158 29.817Q-52.158 30.028-52.096 30.123Q-52.033 30.219-51.916 30.241Q-51.799 30.262-51.549 30.262L-51.549 30.559L-52.799 30.637L-52.799 30.153Q-53.264 30.637-53.944 30.637M-53.877 30.383Q-53.537 30.383-53.244 30.192Q-52.951 30-52.799 29.704L-52.799 27.872Q-52.947 27.598-53.209 27.442Q-53.471 27.286-53.783 27.286Q-54.408 27.286-54.692 27.733Q-54.975 28.180-54.975 28.840Q-54.975 29.485-54.723 29.934Q-54.471 30.383-53.877 30.383",[3594],[3579,10776,10777],{"transform":10764},[1748,10778],{"d":10779,"fill":3624,"stroke":3624,"className":10780,"style":3668},"M-45.822 32.551Q-46.435 32.094-46.837 31.459Q-47.240 30.825-47.435 30.079Q-47.630 29.332-47.630 28.559Q-47.630 27.786-47.435 27.039Q-47.240 26.293-46.837 25.659Q-46.435 25.024-45.822 24.567Q-45.810 24.563-45.802 24.561Q-45.794 24.559-45.783 24.559L-45.705 24.559Q-45.666 24.559-45.640 24.586Q-45.615 24.614-45.615 24.657Q-45.615 24.707-45.646 24.727Q-46.154 25.180-46.476 25.803Q-46.798 26.426-46.939 27.122Q-47.080 27.817-47.080 28.559Q-47.080 29.293-46.941 29.993Q-46.802 30.692-46.478 31.317Q-46.154 31.942-45.646 32.391Q-45.615 32.411-45.615 32.461Q-45.615 32.504-45.640 32.532Q-45.666 32.559-45.705 32.559L-45.783 32.559Q-45.791 32.555-45.800 32.553Q-45.810 32.551-45.822 32.551M-44.341 29.926Q-44.150 30.200-43.794 30.327Q-43.439 30.454-43.056 30.454Q-42.720 30.454-42.511 30.268Q-42.302 30.082-42.207 29.789Q-42.111 29.497-42.111 29.184Q-42.111 28.860-42.209 28.565Q-42.306 28.270-42.519 28.086Q-42.732 27.903-43.064 27.903L-43.630 27.903Q-43.662 27.903-43.691 27.873Q-43.720 27.844-43.720 27.817L-43.720 27.735Q-43.720 27.700-43.691 27.674Q-43.662 27.649-43.630 27.649L-43.150 27.614Q-42.865 27.614-42.668 27.409Q-42.470 27.204-42.375 26.909Q-42.279 26.614-42.279 26.336Q-42.279 25.957-42.478 25.719Q-42.677 25.481-43.056 25.481Q-43.377 25.481-43.666 25.588Q-43.955 25.696-44.119 25.918Q-43.939 25.918-43.816 26.045Q-43.693 26.172-43.693 26.344Q-43.693 26.516-43.818 26.641Q-43.943 26.766-44.119 26.766Q-44.291 26.766-44.416 26.641Q-44.541 26.516-44.541 26.344Q-44.541 25.977-44.316 25.729Q-44.091 25.481-43.752 25.360Q-43.412 25.239-43.056 25.239Q-42.709 25.239-42.345 25.360Q-41.982 25.481-41.734 25.731Q-41.486 25.981-41.486 26.336Q-41.486 26.821-41.804 27.204Q-42.123 27.586-42.599 27.758Q-42.048 27.868-41.648 28.254Q-41.248 28.641-41.248 29.176Q-41.248 29.633-41.511 29.989Q-41.775 30.344-42.197 30.536Q-42.619 30.727-43.056 30.727Q-43.466 30.727-43.859 30.592Q-44.252 30.457-44.517 30.172Q-44.783 29.887-44.783 29.469Q-44.783 29.274-44.650 29.145Q-44.517 29.016-44.326 29.016Q-44.201 29.016-44.097 29.075Q-43.994 29.133-43.931 29.239Q-43.869 29.344-43.869 29.469Q-43.869 29.664-44.003 29.795Q-44.138 29.926-44.341 29.926M-40.248 32.559L-40.330 32.559Q-40.365 32.559-40.390 32.530Q-40.416 32.500-40.416 32.461Q-40.416 32.411-40.384 32.391Q-39.998 32.055-39.714 31.606Q-39.431 31.157-39.265 30.657Q-39.099 30.157-39.025 29.639Q-38.951 29.122-38.951 28.559Q-38.951 27.989-39.025 27.473Q-39.099 26.957-39.265 26.461Q-39.431 25.965-39.710 25.518Q-39.990 25.071-40.384 24.727Q-40.416 24.707-40.416 24.657Q-40.416 24.618-40.390 24.588Q-40.365 24.559-40.330 24.559L-40.248 24.559Q-40.236 24.559-40.226 24.561Q-40.216 24.563-40.209 24.567Q-39.595 25.024-39.193 25.659Q-38.791 26.293-38.595 27.039Q-38.400 27.786-38.400 28.559Q-38.400 29.332-38.595 30.079Q-38.791 30.825-39.193 31.459Q-39.595 32.094-40.209 32.551Q-40.220 32.551-40.228 32.553Q-40.236 32.555-40.248 32.559",[3594],[3579,10782,10783],{"transform":10764},[1748,10784],{"d":10785,"fill":3624,"stroke":3624,"className":10786,"style":3668},"M-29.065 29.582L-34.097 29.582Q-34.175 29.575-34.224 29.526Q-34.272 29.477-34.272 29.399Q-34.272 29.329-34.225 29.278Q-34.179 29.227-34.097 29.215L-28.667 29.215Q-28.417 29.016-28.136 28.848Q-27.854 28.680-27.561 28.559Q-28.163 28.305-28.667 27.895L-34.097 27.895Q-34.175 27.887-34.224 27.838Q-34.272 27.789-34.272 27.711Q-34.272 27.641-34.225 27.590Q-34.179 27.539-34.097 27.528L-29.065 27.528Q-29.534 27.047-29.843 26.422Q-29.850 26.391-29.850 26.383Q-29.850 26.297-29.753 26.270L-29.585 26.270Q-29.522 26.282-29.487 26.336Q-29.225 26.868-28.817 27.297Q-28.409 27.727-27.888 28.020Q-27.366 28.313-26.784 28.454Q-26.722 28.465-26.722 28.559Q-26.722 28.653-26.784 28.664Q-27.366 28.805-27.888 29.098Q-28.409 29.391-28.817 29.821Q-29.225 30.250-29.487 30.782Q-29.522 30.836-29.585 30.848L-29.753 30.848Q-29.850 30.821-29.850 30.735Q-29.850 30.727-29.843 30.696Q-29.538 30.079-29.065 29.582",[3594],[3579,10788,10789],{"transform":10764},[1748,10790],{"d":10791,"fill":3624,"stroke":3624,"className":10792,"style":3668},"M-21.313 30.559L-23.091 30.559L-23.091 30.262Q-22.817 30.262-22.649 30.215Q-22.481 30.168-22.481 30L-22.481 27.864Q-22.481 27.649-22.538 27.553Q-22.595 27.457-22.708 27.436Q-22.821 27.414-23.067 27.414L-23.067 27.118L-21.868 27.032L-21.868 30Q-21.868 30.168-21.722 30.215Q-21.575 30.262-21.313 30.262L-21.313 30.559M-22.755 25.637Q-22.755 25.446-22.620 25.315Q-22.485 25.184-22.290 25.184Q-22.169 25.184-22.065 25.247Q-21.962 25.309-21.899 25.413Q-21.837 25.516-21.837 25.637Q-21.837 25.832-21.968 25.967Q-22.099 26.102-22.290 26.102Q-22.489 26.102-22.622 25.969Q-22.755 25.836-22.755 25.637M-18.884 30.559L-20.739 30.559L-20.739 30.262Q-20.466 30.262-20.298 30.215Q-20.130 30.168-20.130 30L-20.130 27.864Q-20.130 27.649-20.192 27.553Q-20.255 27.457-20.374 27.436Q-20.493 27.414-20.739 27.414L-20.739 27.118L-19.548 27.032L-19.548 27.766Q-19.434 27.551-19.241 27.383Q-19.048 27.215-18.809 27.123Q-18.571 27.032-18.317 27.032Q-17.149 27.032-17.149 28.110L-17.149 30Q-17.149 30.168-16.979 30.215Q-16.809 30.262-16.540 30.262L-16.540 30.559L-18.395 30.559L-18.395 30.262Q-18.122 30.262-17.954 30.215Q-17.786 30.168-17.786 30L-17.786 28.125Q-17.786 27.743-17.907 27.514Q-18.028 27.286-18.380 27.286Q-18.692 27.286-18.946 27.448Q-19.200 27.610-19.347 27.879Q-19.493 28.149-19.493 28.446L-19.493 30Q-19.493 30.168-19.323 30.215Q-19.153 30.262-18.884 30.262L-18.884 30.559M-16.052 30.551L-16.052 29.329Q-16.052 29.301-16.020 29.270Q-15.989 29.239-15.966 29.239L-15.860 29.239Q-15.790 29.239-15.774 29.301Q-15.712 29.622-15.573 29.862Q-15.434 30.102-15.202 30.243Q-14.970 30.383-14.661 30.383Q-14.423 30.383-14.214 30.323Q-14.005 30.262-13.868 30.114Q-13.731 29.965-13.731 29.719Q-13.731 29.465-13.942 29.299Q-14.153 29.133-14.423 29.079L-15.044 28.965Q-15.450 28.887-15.751 28.631Q-16.052 28.375-16.052 28Q-16.052 27.633-15.850 27.411Q-15.649 27.188-15.325 27.090Q-15.001 26.993-14.661 26.993Q-14.196 26.993-13.899 27.200L-13.677 27.016Q-13.653 26.993-13.622 26.993L-13.571 26.993Q-13.540 26.993-13.513 27.020Q-13.485 27.047-13.485 27.079L-13.485 28.063Q-13.485 28.094-13.511 28.123Q-13.536 28.153-13.571 28.153L-13.677 28.153Q-13.712 28.153-13.739 28.125Q-13.766 28.098-13.766 28.063Q-13.766 27.664-14.018 27.444Q-14.270 27.223-14.669 27.223Q-15.024 27.223-15.307 27.346Q-15.591 27.469-15.591 27.774Q-15.591 27.993-15.390 28.125Q-15.188 28.258-14.942 28.301L-14.317 28.414Q-13.888 28.504-13.579 28.801Q-13.270 29.098-13.270 29.512Q-13.270 30.082-13.669 30.360Q-14.067 30.637-14.661 30.637Q-15.212 30.637-15.563 30.301L-15.860 30.614Q-15.884 30.637-15.919 30.637L-15.966 30.637Q-15.989 30.637-16.020 30.606Q-16.052 30.575-16.052 30.551M-10.884 30.559L-12.661 30.559L-12.661 30.262Q-12.388 30.262-12.220 30.215Q-12.052 30.168-12.052 30L-12.052 27.864Q-12.052 27.649-12.108 27.553Q-12.165 27.457-12.278 27.436Q-12.391 27.414-12.638 27.414L-12.638 27.118L-11.438 27.032L-11.438 30Q-11.438 30.168-11.292 30.215Q-11.145 30.262-10.884 30.262L-10.884 30.559M-12.325 25.637Q-12.325 25.446-12.190 25.315Q-12.056 25.184-11.860 25.184Q-11.739 25.184-11.636 25.247Q-11.532 25.309-11.470 25.413Q-11.407 25.516-11.407 25.637Q-11.407 25.832-11.538 25.967Q-11.669 26.102-11.860 26.102Q-12.059 26.102-12.192 25.969Q-12.325 25.836-12.325 25.637M-8.567 30.637Q-9.048 30.637-9.456 30.393Q-9.864 30.149-10.102 29.735Q-10.341 29.321-10.341 28.832Q-10.341 28.340-10.083 27.924Q-9.825 27.508-9.393 27.270Q-8.962 27.032-8.470 27.032Q-7.849 27.032-7.399 27.469L-7.399 25.840Q-7.399 25.625-7.462 25.530Q-7.524 25.434-7.641 25.413Q-7.759 25.391-8.005 25.391L-8.005 25.094L-6.782 25.008L-6.782 29.817Q-6.782 30.028-6.720 30.123Q-6.657 30.219-6.540 30.241Q-6.423 30.262-6.173 30.262L-6.173 30.559L-7.423 30.637L-7.423 30.153Q-7.888 30.637-8.567 30.637M-8.501 30.383Q-8.161 30.383-7.868 30.192Q-7.575 30-7.423 29.704L-7.423 27.872Q-7.571 27.598-7.833 27.442Q-8.095 27.286-8.407 27.286Q-9.032 27.286-9.315 27.733Q-9.599 28.180-9.599 28.840Q-9.599 29.485-9.347 29.934Q-9.095 30.383-8.501 30.383M-5.665 28.805Q-5.665 28.325-5.432 27.909Q-5.200 27.493-4.790 27.243Q-4.380 26.993-3.903 26.993Q-3.173 26.993-2.774 27.434Q-2.376 27.875-2.376 28.606Q-2.376 28.711-2.470 28.735L-4.919 28.735L-4.919 28.805Q-4.919 29.215-4.798 29.571Q-4.677 29.926-4.405 30.143Q-4.134 30.360-3.704 30.360Q-3.341 30.360-3.044 30.131Q-2.747 29.903-2.645 29.551Q-2.638 29.504-2.552 29.489L-2.470 29.489Q-2.376 29.516-2.376 29.598Q-2.376 29.606-2.384 29.637Q-2.446 29.864-2.585 30.047Q-2.724 30.231-2.915 30.364Q-3.106 30.497-3.325 30.567Q-3.544 30.637-3.782 30.637Q-4.153 30.637-4.491 30.500Q-4.829 30.364-5.097 30.112Q-5.364 29.860-5.515 29.520Q-5.665 29.180-5.665 28.805M-4.911 28.497L-2.950 28.497Q-2.950 28.192-3.052 27.901Q-3.153 27.610-3.370 27.428Q-3.587 27.247-3.903 27.247Q-4.204 27.247-4.434 27.434Q-4.665 27.622-4.788 27.913Q-4.911 28.204-4.911 28.497",[3594],[1748,10794],{"stroke":3585,"d":10795},"M.653-33.46a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,10797,10798,10804],{"stroke":3585},[3579,10799,10801],{"transform":10800},"translate(41.238 -47.23)",[1748,10802],{"d":10745,"fill":3581,"stroke":3581,"className":10803,"style":3595},[3594],[3579,10805,10806],{"transform":10800},[1748,10807],{"d":10808,"fill":3581,"stroke":3581,"className":10809,"style":5982},"M-60.146 26.502L-60.328 26.431Q-60.381 26.411-60.381 26.352Q-60.381 26.346-60.375 26.323L-59.517 23.628Q-59.481 23.513-59.389 23.447Q-59.297 23.382-59.188 23.382Q-59.039 23.382-58.923 23.483Q-58.808 23.584-58.808 23.730Q-58.808 23.815-58.846 23.891L-60.032 26.461Q-60.061 26.507-60.111 26.507Q-60.117 26.507-60.146 26.502",[3594],[1748,10811],{"fill":3585,"stroke":10812,"d":10813},"gray","m-13.283-24.586 10.454-7.667",[3579,10815,10816,10819],{"style":3652},[1748,10817],{"fill":3585,"d":10818},"M.853-33.459H86.44",[1748,10820],{"stroke":3585,"d":10821},"m88.44-33.46-3.2-1.599 1.2 1.6-1.2 1.6",[1748,10823],{"stroke":3585,"d":10824},"M16.080000000000002-33.46a1.26 1.26 0 1 0-2.52.001 1.26 1.26 0 0 0 2.52 0M64.093-33.46a1.26 1.26 0 1 0-2.52.001 1.26 1.26 0 0 0 2.52 0m-1.26 0",[3579,10826,10827,10834,10840,10846,10852],{"stroke":3585,"fontSize":8003},[3579,10828,10830],{"transform":10829},"translate(161.018 -57.41)",[1748,10831],{"d":10832,"fill":3581,"stroke":3581,"className":10833,"style":3668},"M-64.965 28.805Q-64.965 28.325-64.732 27.909Q-64.500 27.493-64.090 27.243Q-63.680 26.993-63.203 26.993Q-62.473 26.993-62.074 27.434Q-61.676 27.875-61.676 28.606Q-61.676 28.711-61.769 28.735L-64.219 28.735L-64.219 28.805Q-64.219 29.215-64.098 29.571Q-63.976 29.926-63.705 30.143Q-63.433 30.360-63.004 30.360Q-62.641 30.360-62.344 30.131Q-62.047 29.903-61.945 29.551Q-61.937 29.504-61.851 29.489L-61.769 29.489Q-61.676 29.516-61.676 29.598Q-61.676 29.606-61.683 29.637Q-61.746 29.864-61.885 30.047Q-62.023 30.231-62.215 30.364Q-62.406 30.497-62.625 30.567Q-62.844 30.637-63.082 30.637Q-63.453 30.637-63.791 30.500Q-64.129 30.364-64.396 30.112Q-64.664 29.860-64.814 29.520Q-64.965 29.180-64.965 28.805M-64.211 28.497L-62.250 28.497Q-62.250 28.192-62.351 27.901Q-62.453 27.610-62.670 27.428Q-62.887 27.247-63.203 27.247Q-63.504 27.247-63.734 27.434Q-63.965 27.622-64.088 27.913Q-64.211 28.204-64.211 28.497M-59.387 30.528L-60.609 27.672Q-60.691 27.497-60.836 27.452Q-60.980 27.407-61.250 27.407L-61.250 27.110L-59.539 27.110L-59.539 27.407Q-59.961 27.407-59.961 27.590Q-59.961 27.625-59.945 27.672L-59 29.864L-58.160 27.887Q-58.121 27.809-58.121 27.719Q-58.121 27.579-58.226 27.493Q-58.332 27.407-58.473 27.407L-58.473 27.110L-57.121 27.110L-57.121 27.407Q-57.644 27.407-57.859 27.887L-58.984 30.528Q-59.047 30.637-59.152 30.637L-59.219 30.637Q-59.332 30.637-59.387 30.528",[3594],[3579,10835,10836],{"transform":10829},[1748,10837],{"d":10838,"fill":3581,"stroke":3581,"className":10839,"style":3668},"M-56.937 28.805Q-56.937 28.325-56.704 27.909Q-56.472 27.493-56.062 27.243Q-55.652 26.993-55.175 26.993Q-54.445 26.993-54.046 27.434Q-53.648 27.875-53.648 28.606Q-53.648 28.711-53.741 28.735L-56.191 28.735L-56.191 28.805Q-56.191 29.215-56.070 29.571Q-55.948 29.926-55.677 30.143Q-55.405 30.360-54.976 30.360Q-54.612 30.360-54.316 30.131Q-54.019 29.903-53.917 29.551Q-53.909 29.504-53.823 29.489L-53.741 29.489Q-53.648 29.516-53.648 29.598Q-53.648 29.606-53.655 29.637Q-53.718 29.864-53.857 30.047Q-53.995 30.231-54.187 30.364Q-54.378 30.497-54.597 30.567Q-54.816 30.637-55.054 30.637Q-55.425 30.637-55.763 30.500Q-56.101 30.364-56.368 30.112Q-56.636 29.860-56.786 29.520Q-56.937 29.180-56.937 28.805M-56.183 28.497L-54.222 28.497Q-54.222 28.192-54.323 27.901Q-54.425 27.610-54.642 27.428Q-54.859 27.247-55.175 27.247Q-55.476 27.247-55.706 27.434Q-55.937 27.622-56.060 27.913Q-56.183 28.204-56.183 28.497M-51.230 30.559L-53.085 30.559L-53.085 30.262Q-52.812 30.262-52.644 30.215Q-52.476 30.168-52.476 30L-52.476 27.864Q-52.476 27.649-52.538 27.553Q-52.601 27.457-52.720 27.436Q-52.839 27.414-53.085 27.414L-53.085 27.118L-51.894 27.032L-51.894 27.766Q-51.780 27.551-51.587 27.383Q-51.394 27.215-51.155 27.123Q-50.917 27.032-50.663 27.032Q-49.495 27.032-49.495 28.110L-49.495 30Q-49.495 30.168-49.325 30.215Q-49.155 30.262-48.886 30.262L-48.886 30.559L-50.741 30.559L-50.741 30.262Q-50.468 30.262-50.300 30.215Q-50.132 30.168-50.132 30L-50.132 28.125Q-50.132 27.743-50.253 27.514Q-50.374 27.286-50.726 27.286Q-51.038 27.286-51.292 27.448Q-51.546 27.610-51.693 27.879Q-51.839 28.149-51.839 28.446L-51.839 30Q-51.839 30.168-51.669 30.215Q-51.499 30.262-51.230 30.262",[3594],[3579,10841,10842],{"transform":10829},[1748,10843],{"d":10844,"fill":3581,"stroke":3581,"className":10845,"style":3668},"M-43.225 32.551Q-43.838 32.094-44.240 31.459Q-44.643 30.825-44.838 30.079Q-45.033 29.332-45.033 28.559Q-45.033 27.786-44.838 27.039Q-44.643 26.293-44.240 25.659Q-43.838 25.024-43.225 24.567Q-43.213 24.563-43.205 24.561Q-43.197 24.559-43.186 24.559L-43.108 24.559Q-43.069 24.559-43.043 24.586Q-43.018 24.614-43.018 24.657Q-43.018 24.707-43.049 24.727Q-43.557 25.180-43.879 25.803Q-44.201 26.426-44.342 27.122Q-44.483 27.817-44.483 28.559Q-44.483 29.293-44.344 29.993Q-44.205 30.692-43.881 31.317Q-43.557 31.942-43.049 32.391Q-43.018 32.411-43.018 32.461Q-43.018 32.504-43.043 32.532Q-43.069 32.559-43.108 32.559L-43.186 32.559Q-43.194 32.555-43.203 32.553Q-43.213 32.551-43.225 32.551M-38.951 30.559L-42.112 30.559L-42.112 30.352Q-42.112 30.325-42.088 30.293L-40.737 28.895Q-40.358 28.508-40.110 28.219Q-39.862 27.930-39.688 27.573Q-39.514 27.215-39.514 26.825Q-39.514 26.477-39.647 26.184Q-39.779 25.891-40.033 25.713Q-40.287 25.536-40.643 25.536Q-41.002 25.536-41.293 25.731Q-41.584 25.926-41.729 26.254L-41.674 26.254Q-41.490 26.254-41.365 26.375Q-41.240 26.497-41.240 26.688Q-41.240 26.868-41.365 26.997Q-41.490 27.125-41.674 27.125Q-41.854 27.125-41.983 26.997Q-42.112 26.868-42.112 26.688Q-42.112 26.286-41.891 25.950Q-41.670 25.614-41.305 25.426Q-40.940 25.239-40.537 25.239Q-40.057 25.239-39.641 25.426Q-39.225 25.614-38.973 25.975Q-38.721 26.336-38.721 26.825Q-38.721 27.184-38.875 27.487Q-39.029 27.789-39.281 28.049Q-39.533 28.309-39.883 28.594Q-40.233 28.879-40.401 29.032L-41.330 29.872L-40.615 29.872Q-39.240 29.872-39.201 29.832Q-39.131 29.754-39.088 29.569Q-39.045 29.383-39.002 29.094L-38.721 29.094L-38.951 30.559M-37.651 32.559L-37.733 32.559Q-37.768 32.559-37.793 32.530Q-37.819 32.500-37.819 32.461Q-37.819 32.411-37.787 32.391Q-37.401 32.055-37.117 31.606Q-36.834 31.157-36.668 30.657Q-36.502 30.157-36.428 29.639Q-36.354 29.122-36.354 28.559Q-36.354 27.989-36.428 27.473Q-36.502 26.957-36.668 26.461Q-36.834 25.965-37.113 25.518Q-37.393 25.071-37.787 24.727Q-37.819 24.707-37.819 24.657Q-37.819 24.618-37.793 24.588Q-37.768 24.559-37.733 24.559L-37.651 24.559Q-37.639 24.559-37.629 24.561Q-37.619 24.563-37.612 24.567Q-36.998 25.024-36.596 25.659Q-36.194 26.293-35.998 27.039Q-35.803 27.786-35.803 28.559Q-35.803 29.332-35.998 30.079Q-36.194 30.825-36.596 31.459Q-36.998 32.094-37.612 32.551Q-37.623 32.551-37.631 32.553Q-37.639 32.555-37.651 32.559",[3594],[3579,10847,10848],{"transform":10829},[1748,10849],{"d":10850,"fill":3581,"stroke":3581,"className":10851,"style":3668},"M-26.467 29.582L-31.499 29.582Q-31.577 29.575-31.626 29.526Q-31.674 29.477-31.674 29.399Q-31.674 29.329-31.627 29.278Q-31.581 29.227-31.499 29.215L-26.069 29.215Q-25.819 29.016-25.538 28.848Q-25.256 28.680-24.963 28.559Q-25.565 28.305-26.069 27.895L-31.499 27.895Q-31.577 27.887-31.626 27.838Q-31.674 27.789-31.674 27.711Q-31.674 27.641-31.627 27.590Q-31.581 27.539-31.499 27.528L-26.467 27.528Q-26.936 27.047-27.245 26.422Q-27.252 26.391-27.252 26.383Q-27.252 26.297-27.155 26.270L-26.987 26.270Q-26.924 26.282-26.889 26.336Q-26.627 26.868-26.219 27.297Q-25.811 27.727-25.290 28.020Q-24.768 28.313-24.186 28.454Q-24.124 28.465-24.124 28.559Q-24.124 28.653-24.186 28.664Q-24.768 28.805-25.290 29.098Q-25.811 29.391-26.219 29.821Q-26.627 30.250-26.889 30.782Q-26.924 30.836-26.987 30.848L-27.155 30.848Q-27.252 30.821-27.252 30.735Q-27.252 30.727-27.245 30.696Q-26.940 30.079-26.467 29.582",[3594],[3579,10853,10854],{"transform":10829},[1748,10855],{"d":10856,"fill":3581,"stroke":3581,"className":10857,"style":3668},"M-20.576 28.864Q-20.576 28.360-20.320 27.928Q-20.064 27.497-19.628 27.245Q-19.193 26.993-18.693 26.993Q-18.306 26.993-17.964 27.137Q-17.623 27.282-17.361 27.543Q-17.099 27.805-16.957 28.141Q-16.814 28.477-16.814 28.864Q-16.814 29.356-17.078 29.766Q-17.341 30.176-17.771 30.407Q-18.201 30.637-18.693 30.637Q-19.185 30.637-19.619 30.405Q-20.052 30.172-20.314 29.764Q-20.576 29.356-20.576 28.864M-18.693 30.360Q-18.236 30.360-17.984 30.137Q-17.732 29.914-17.644 29.563Q-17.556 29.211-17.556 28.766Q-17.556 28.336-17.650 27.998Q-17.744 27.661-17.998 27.454Q-18.252 27.247-18.693 27.247Q-19.341 27.247-19.585 27.663Q-19.830 28.079-19.830 28.766Q-19.830 29.211-19.742 29.563Q-19.654 29.914-19.402 30.137Q-19.150 30.360-18.693 30.360M-15.646 29.606L-15.646 27.864Q-15.646 27.649-15.709 27.553Q-15.771 27.457-15.890 27.436Q-16.009 27.414-16.255 27.414L-16.255 27.118L-15.009 27.032L-15.009 29.582L-15.009 29.606Q-15.009 29.918-14.955 30.080Q-14.900 30.243-14.750 30.313Q-14.599 30.383-14.279 30.383Q-13.849 30.383-13.576 30.045Q-13.302 29.707-13.302 29.262L-13.302 27.864Q-13.302 27.649-13.365 27.553Q-13.427 27.457-13.546 27.436Q-13.666 27.414-13.912 27.414L-13.912 27.118L-12.666 27.032L-12.666 29.817Q-12.666 30.028-12.603 30.123Q-12.541 30.219-12.421 30.241Q-12.302 30.262-12.056 30.262L-12.056 30.559L-13.279 30.637L-13.279 30.016Q-13.447 30.305-13.728 30.471Q-14.009 30.637-14.330 30.637Q-15.646 30.637-15.646 29.606M-10.986 29.598L-10.986 27.407L-11.689 27.407L-11.689 27.153Q-11.334 27.153-11.091 26.920Q-10.849 26.688-10.738 26.340Q-10.627 25.993-10.627 25.637L-10.345 25.637L-10.345 27.110L-9.169 27.110L-9.169 27.407L-10.345 27.407L-10.345 29.582Q-10.345 29.903-10.226 30.131Q-10.107 30.360-9.826 30.360Q-9.646 30.360-9.529 30.237Q-9.412 30.114-9.359 29.934Q-9.306 29.754-9.306 29.582L-9.306 29.110L-9.025 29.110L-9.025 29.598Q-9.025 29.852-9.130 30.092Q-9.236 30.332-9.433 30.485Q-9.630 30.637-9.888 30.637Q-10.205 30.637-10.457 30.514Q-10.709 30.391-10.847 30.157Q-10.986 29.922-10.986 29.598M-8.263 30.551L-8.263 29.329Q-8.263 29.301-8.232 29.270Q-8.201 29.239-8.177 29.239L-8.072 29.239Q-8.002 29.239-7.986 29.301Q-7.923 29.622-7.785 29.862Q-7.646 30.102-7.414 30.243Q-7.181 30.383-6.873 30.383Q-6.634 30.383-6.425 30.323Q-6.216 30.262-6.080 30.114Q-5.943 29.965-5.943 29.719Q-5.943 29.465-6.154 29.299Q-6.365 29.133-6.634 29.079L-7.255 28.965Q-7.662 28.887-7.962 28.631Q-8.263 28.375-8.263 28Q-8.263 27.633-8.062 27.411Q-7.861 27.188-7.537 27.090Q-7.212 26.993-6.873 26.993Q-6.408 26.993-6.111 27.200L-5.888 27.016Q-5.865 26.993-5.834 26.993L-5.783 26.993Q-5.752 26.993-5.724 27.020Q-5.697 27.047-5.697 27.079L-5.697 28.063Q-5.697 28.094-5.722 28.123Q-5.748 28.153-5.783 28.153L-5.888 28.153Q-5.923 28.153-5.951 28.125Q-5.978 28.098-5.978 28.063Q-5.978 27.664-6.230 27.444Q-6.482 27.223-6.880 27.223Q-7.236 27.223-7.519 27.346Q-7.802 27.469-7.802 27.774Q-7.802 27.993-7.601 28.125Q-7.400 28.258-7.154 28.301L-6.529 28.414Q-6.099 28.504-5.791 28.801Q-5.482 29.098-5.482 29.512Q-5.482 30.082-5.880 30.360Q-6.279 30.637-6.873 30.637Q-7.423 30.637-7.775 30.301L-8.072 30.614Q-8.095 30.637-8.130 30.637L-8.177 30.637Q-8.201 30.637-8.232 30.606Q-8.263 30.575-8.263 30.551M-3.095 30.559L-4.873 30.559L-4.873 30.262Q-4.599 30.262-4.431 30.215Q-4.263 30.168-4.263 30L-4.263 27.864Q-4.263 27.649-4.320 27.553Q-4.377 27.457-4.490 27.436Q-4.603 27.414-4.849 27.414L-4.849 27.118L-3.650 27.032L-3.650 30Q-3.650 30.168-3.503 30.215Q-3.357 30.262-3.095 30.262L-3.095 30.559M-4.537 25.637Q-4.537 25.446-4.402 25.315Q-4.267 25.184-4.072 25.184Q-3.951 25.184-3.847 25.247Q-3.744 25.309-3.681 25.413Q-3.619 25.516-3.619 25.637Q-3.619 25.832-3.750 25.967Q-3.880 26.102-4.072 26.102Q-4.271 26.102-4.404 25.969Q-4.537 25.836-4.537 25.637M-0.779 30.637Q-1.259 30.637-1.668 30.393Q-2.076 30.149-2.314 29.735Q-2.552 29.321-2.552 28.832Q-2.552 28.340-2.294 27.924Q-2.037 27.508-1.605 27.270Q-1.173 27.032-0.681 27.032Q-0.060 27.032 0.389 27.469L0.389 25.840Q0.389 25.625 0.327 25.530Q0.264 25.434 0.147 25.413Q0.030 25.391-0.216 25.391L-0.216 25.094L1.006 25.008L1.006 29.817Q1.006 30.028 1.069 30.123Q1.131 30.219 1.248 30.241Q1.366 30.262 1.616 30.262L1.616 30.559L0.366 30.637L0.366 30.153Q-0.099 30.637-0.779 30.637M-0.712 30.383Q-0.373 30.383-0.080 30.192Q0.213 30 0.366 29.704L0.366 27.872Q0.217 27.598-0.044 27.442Q-0.306 27.286-0.619 27.286Q-1.244 27.286-1.527 27.733Q-1.810 28.180-1.810 28.840Q-1.810 29.485-1.558 29.934Q-1.306 30.383-0.712 30.383M2.123 28.805Q2.123 28.325 2.356 27.909Q2.588 27.493 2.998 27.243Q3.409 26.993 3.885 26.993Q4.616 26.993 5.014 27.434Q5.413 27.875 5.413 28.606Q5.413 28.711 5.319 28.735L2.870 28.735L2.870 28.805Q2.870 29.215 2.991 29.571Q3.112 29.926 3.383 30.143Q3.655 30.360 4.084 30.360Q4.448 30.360 4.745 30.131Q5.041 29.903 5.143 29.551Q5.151 29.504 5.237 29.489L5.319 29.489Q5.413 29.516 5.413 29.598Q5.413 29.606 5.405 29.637Q5.342 29.864 5.204 30.047Q5.065 30.231 4.873 30.364Q4.682 30.497 4.463 30.567Q4.245 30.637 4.006 30.637Q3.635 30.637 3.297 30.500Q2.959 30.364 2.692 30.112Q2.424 29.860 2.274 29.520Q2.123 29.180 2.123 28.805M2.877 28.497L4.838 28.497Q4.838 28.192 4.737 27.901Q4.635 27.610 4.418 27.428Q4.202 27.247 3.885 27.247Q3.584 27.247 3.354 27.434Q3.123 27.622 3 27.913Q2.877 28.204 2.877 28.497",[3594],[3761,10859,10861,10862,10880],{"className":10860},[3764],"Ray casting: a ",[419,10863,10865],{"className":10864},[422],[419,10866,10868],{"className":10867,"ariaHidden":427},[426],[419,10869,10871,10874,10877],{"className":10870},[431],[419,10872],{"className":10873,"style":10509},[435],[419,10875,908],{"className":10876},[440],[419,10878,584],{"className":10879},[440,553]," ray crossing an odd count of edges means inside",[381,10882,10883,10884,10936,10937,11056,11057,11175,11176,11191,11192,11333],{},"For a convex polygon the fan of diagonals from ",[419,10885,10887],{"className":10886},[422],[419,10888,10890],{"className":10889,"ariaHidden":427},[426],[419,10891,10893,10896],{"className":10892},[431],[419,10894],{"className":10895,"style":9670},[435],[419,10897,10899,10902],{"className":10898},[440],[419,10900,555],{"className":10901,"style":554},[440,553],[419,10903,10905],{"className":10904},[452],[419,10906,10908,10928],{"className":10907},[456,652],[419,10909,10911,10925],{"className":10910},[460],[419,10912,10914],{"className":10913,"style":8447},[464],[419,10915,10916,10919],{"style":8450},[419,10917],{"className":10918,"style":472},[471],[419,10920,10922],{"className":10921},[476,477,478,479],[419,10923,448],{"className":10924},[440,479],[419,10926,676],{"className":10927},[675],[419,10929,10931],{"className":10930},[460],[419,10932,10934],{"className":10933,"style":683},[464],[419,10935],{}," cuts the interior into\ntriangular wedges in angular order, so a single binary search on\n",[419,10938,10940],{"className":10939},[422],[419,10941,10943],{"className":10942,"ariaHidden":427},[426],[419,10944,10946,10949,10955,10958,10998,11001,11004,11044,11047,11050,11053],{"className":10945},[431],[419,10947],{"className":10948,"style":575},[435],[419,10950,10952],{"className":10951},[526],[419,10953,4924],{"className":10954,"style":4951},[440,2118],[419,10956,580],{"className":10957},[579],[419,10959,10961,10964],{"className":10960},[440],[419,10962,555],{"className":10963,"style":554},[440,553],[419,10965,10967],{"className":10966},[452],[419,10968,10970,10990],{"className":10969},[456,652],[419,10971,10973,10987],{"className":10972},[460],[419,10974,10976],{"className":10975,"style":8447},[464],[419,10977,10978,10981],{"style":8450},[419,10979],{"className":10980,"style":472},[471],[419,10982,10984],{"className":10983},[476,477,478,479],[419,10985,448],{"className":10986},[440,479],[419,10988,676],{"className":10989},[675],[419,10991,10993],{"className":10992},[460],[419,10994,10996],{"className":10995,"style":683},[464],[419,10997],{},[419,10999,589],{"className":11000},[588],[419,11002],{"className":11003,"style":593},[559],[419,11005,11007,11010],{"className":11006},[440],[419,11008,555],{"className":11009,"style":554},[440,553],[419,11011,11013],{"className":11012},[452],[419,11014,11016,11036],{"className":11015},[456,652],[419,11017,11019,11033],{"className":11018},[460],[419,11020,11022],{"className":11021,"style":8884},[464],[419,11023,11024,11027],{"style":8450},[419,11025],{"className":11026,"style":472},[471],[419,11028,11030],{"className":11029},[476,477,478,479],[419,11031,8806],{"className":11032},[440,553,479],[419,11034,676],{"className":11035},[675],[419,11037,11039],{"className":11038},[460],[419,11040,11042],{"className":11041,"style":683},[464],[419,11043],{},[419,11045,589],{"className":11046},[588],[419,11048],{"className":11049,"style":593},[559],[419,11051,4922],{"className":11052,"style":597},[440,553],[419,11054,603],{"className":11055},[602]," locates the wedge ",[419,11058,11060],{"className":11059},[422],[419,11061,11063],{"className":11062,"ariaHidden":427},[426],[419,11064,11066,11069,11073,11116,11119,11122,11171],{"className":11065},[431],[419,11067],{"className":11068,"style":575},[435],[419,11070,11072],{"className":11071},[579],"⟨",[419,11074,11076,11079],{"className":11075},[440],[419,11077,555],{"className":11078,"style":554},[440,553],[419,11080,11082],{"className":11081},[452],[419,11083,11085,11108],{"className":11084},[456,652],[419,11086,11088,11105],{"className":11087},[460],[419,11089,11092],{"className":11090,"style":11091},[464],"height:0.3361em;",[419,11093,11094,11097],{"style":8450},[419,11095],{"className":11096,"style":472},[471],[419,11098,11100],{"className":11099},[476,477,478,479],[419,11101,11104],{"className":11102,"style":11103},[440,553,479],"margin-right:0.0315em;","k",[419,11106,676],{"className":11107},[675],[419,11109,11111],{"className":11110},[460],[419,11112,11114],{"className":11113,"style":683},[464],[419,11115],{},[419,11117,589],{"className":11118},[588],[419,11120],{"className":11121,"style":593},[559],[419,11123,11125,11128],{"className":11124},[440],[419,11126,555],{"className":11127,"style":554},[440,553],[419,11129,11131],{"className":11130},[452],[419,11132,11134,11163],{"className":11133},[456,652],[419,11135,11137,11160],{"className":11136},[460],[419,11138,11140],{"className":11139,"style":11091},[464],[419,11141,11142,11145],{"style":8450},[419,11143],{"className":11144,"style":472},[471],[419,11146,11148],{"className":11147},[476,477,478,479],[419,11149,11151,11154,11157],{"className":11150},[440,479],[419,11152,11104],{"className":11153,"style":11103},[440,553,479],[419,11155,908],{"className":11156},[907,479],[419,11158,441],{"className":11159},[440,479],[419,11161,676],{"className":11162},[675],[419,11164,11166],{"className":11165},[460],[419,11167,11169],{"className":11168,"style":8585},[464],[419,11170],{},[419,11172,11174],{"className":11173},[602],"⟩","\nthat could contain ",[419,11177,11179],{"className":11178},[422],[419,11180,11182],{"className":11181,"ariaHidden":427},[426],[419,11183,11185,11188],{"className":11184},[431],[419,11186],{"className":11187,"style":7817},[435],[419,11189,4922],{"className":11190,"style":597},[440,553],"; one last orientation test against the edge\n",[419,11193,11195],{"className":11194},[422],[419,11196,11198],{"className":11197,"ariaHidden":427},[426],[419,11199,11201,11205],{"className":11200},[431],[419,11202],{"className":11203,"style":11204},[435],"height:1.0917em;vertical-align:-0.2083em;",[419,11206,11208],{"className":11207},[440,6464],[419,11209,11211,11325],{"className":11210},[456,652],[419,11212,11214,11322],{"className":11213},[460],[419,11215,11217,11314],{"className":11216,"style":6460},[464],[419,11218,11219,11222],{"style":1715},[419,11220],{"className":11221,"style":1719},[471],[419,11223,11225,11265],{"className":11224},[440],[419,11226,11228,11231],{"className":11227},[440],[419,11229,555],{"className":11230,"style":554},[440,553],[419,11232,11234],{"className":11233},[452],[419,11235,11237,11257],{"className":11236},[456,652],[419,11238,11240,11254],{"className":11239},[460],[419,11241,11243],{"className":11242,"style":11091},[464],[419,11244,11245,11248],{"style":8450},[419,11246],{"className":11247,"style":472},[471],[419,11249,11251],{"className":11250},[476,477,478,479],[419,11252,11104],{"className":11253,"style":11103},[440,553,479],[419,11255,676],{"className":11256},[675],[419,11258,11260],{"className":11259},[460],[419,11261,11263],{"className":11262,"style":683},[464],[419,11264],{},[419,11266,11268,11271],{"className":11267},[440],[419,11269,555],{"className":11270,"style":554},[440,553],[419,11272,11274],{"className":11273},[452],[419,11275,11277,11306],{"className":11276},[456,652],[419,11278,11280,11303],{"className":11279},[460],[419,11281,11283],{"className":11282,"style":11091},[464],[419,11284,11285,11288],{"style":8450},[419,11286],{"className":11287,"style":472},[471],[419,11289,11291],{"className":11290},[476,477,478,479],[419,11292,11294,11297,11300],{"className":11293},[440,479],[419,11295,11104],{"className":11296,"style":11103},[440,553,479],[419,11298,908],{"className":11299},[907,479],[419,11301,441],{"className":11302},[440,479],[419,11304,676],{"className":11305},[675],[419,11307,11309],{"className":11308},[460],[419,11310,11312],{"className":11311,"style":8585},[464],[419,11313],{},[419,11315,11316,11319],{"style":6490},[419,11317],{"className":11318,"style":1719},[471],[419,11320],{"className":11321,"style":6498},[6497],[419,11323,676],{"className":11324},[675],[419,11326,11328],{"className":11327},[460],[419,11329,11331],{"className":11330,"style":8585},[464],[419,11332],{}," decides inside vs. outside.",[3568,11335,11337,11577],{"className":11336},[3571,3572],[1739,11338,11342],{"xmlns":1741,"width":11339,"height":11340,"viewBox":11341},"257.326","187.385","-75 -75 192.994 140.539",[3579,11343,11344,11347,11362,11365,11379,11382,11396,11399,11413,11416,11430,11434,11437,11440,11445,11457,11460,11510,11518],{"stroke":3581,"style":3582},[1748,11345],{"stroke":3585,"d":11346},"M-45.385 40.524a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,11348,11349,11356],{"stroke":3585},[3579,11350,11352],{"transform":11351},"translate(-15.047 11.124)",[1748,11353],{"d":11354,"fill":3581,"stroke":3581,"className":11355,"style":3595},"M-44.336 40.524L-46.735 40.524Q-46.775 40.524-46.806 40.484Q-46.836 40.445-46.836 40.405Q-46.836 40.344-46.803 40.276Q-46.770 40.208-46.709 40.208Q-46.208 40.208-45.979 40.155Q-45.861 40.111-45.782 39.878L-44.560 34.961Q-44.542 34.873-44.542 34.829Q-44.542 34.763-44.569 34.745Q-44.740 34.692-45.272 34.692Q-45.377 34.692-45.377 34.574Q-45.377 34.512-45.344 34.444Q-45.311 34.376-45.250 34.376L-42.095 34.376Q-41.664 34.376-41.249 34.528Q-40.833 34.679-40.567 34.991Q-40.302 35.303-40.302 35.756Q-40.302 36.332-40.717 36.784Q-41.132 37.237-41.754 37.485Q-42.376 37.733-42.938 37.733L-44.432 37.733L-44.982 39.940Q-44.999 39.983-44.999 40.076Q-44.999 40.137-44.973 40.155Q-44.802 40.208-44.270 40.208Q-44.226 40.208-44.200 40.241Q-44.173 40.274-44.173 40.317Q-44.173 40.524-44.336 40.524M-43.786 35.026L-44.389 37.448L-43.092 37.448Q-42.692 37.448-42.323 37.334Q-41.954 37.219-41.717 36.969Q-41.479 36.740-41.332 36.318Q-41.185 35.897-41.185 35.527Q-41.185 35.066-41.541 34.879Q-41.897 34.692-42.407 34.692L-43.316 34.692Q-43.576 34.692-43.650 34.739Q-43.725 34.785-43.786 35.026",[3594],[3579,11357,11358],{"transform":11351},[1748,11359],{"d":11360,"fill":3581,"stroke":3581,"className":11361,"style":5982},"M-39.487 41.650Q-40.049 41.650-40.379 41.363Q-40.709 41.076-40.836 40.626Q-40.964 40.176-40.964 39.611Q-40.964 39.207-40.898 38.842Q-40.832 38.477-40.669 38.181Q-40.506 37.885-40.215 37.710Q-39.923 37.534-39.487 37.534Q-39.050 37.534-38.760 37.710Q-38.470 37.885-38.306 38.180Q-38.142 38.474-38.078 38.832Q-38.013 39.189-38.013 39.611Q-38.013 40.176-38.141 40.626Q-38.268 41.076-38.595 41.363Q-38.922 41.650-39.487 41.650M-39.487 41.433Q-39.083 41.433-38.888 41.123Q-38.693 40.812-38.649 40.420Q-38.605 40.027-38.605 39.514Q-38.605 39.019-38.649 38.660Q-38.693 38.301-38.888 38.026Q-39.083 37.751-39.487 37.751Q-39.891 37.751-40.086 38.026Q-40.281 38.301-40.325 38.660Q-40.369 39.019-40.369 39.514Q-40.369 40.027-40.325 40.420Q-40.281 40.812-40.086 41.123Q-39.891 41.433-39.487 41.433",[3594],[1748,11363],{"stroke":3585,"d":11364},"M51.354 46.214a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.838 0",[3579,11366,11367,11373],{"stroke":3585},[3579,11368,11370],{"transform":11369},"translate(91.703 17.412)",[1748,11371],{"d":11354,"fill":3581,"stroke":3581,"className":11372,"style":3595},[3594],[3579,11374,11375],{"transform":11369},[1748,11376],{"d":11377,"fill":3581,"stroke":3581,"className":11378,"style":5982},"M-38.277 41.524L-40.568 41.524L-40.568 41.266Q-39.692 41.266-39.692 41.093L-39.692 38.014Q-39.885 38.102-40.117 38.139Q-40.348 38.175-40.603 38.175L-40.603 37.918Q-40.225 37.918-39.904 37.833Q-39.584 37.748-39.355 37.534L-39.235 37.534Q-39.203 37.534-39.178 37.557Q-39.153 37.581-39.153 37.619L-39.153 41.093Q-39.153 41.266-38.277 41.266",[3594],[1748,11380],{"stroke":3585,"d":11381},"M85.498-10.691a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,11383,11384,11390],{"stroke":3585},[3579,11385,11387],{"transform":11386},"translate(136.454 -48.64)",[1748,11388],{"d":11354,"fill":3581,"stroke":3581,"className":11389,"style":3595},[3594],[3579,11391,11392],{"transform":11386},[1748,11393],{"d":11394,"fill":3581,"stroke":3581,"className":11395,"style":5982},"M-38.277 41.524L-40.887 41.524L-40.887 41.339Q-40.881 41.316-40.861 41.290L-39.710 40.235Q-39.370 39.924-39.190 39.738Q-39.009 39.552-38.864 39.292Q-38.719 39.031-38.719 38.735Q-38.719 38.462-38.845 38.247Q-38.971 38.032-39.191 37.912Q-39.411 37.792-39.686 37.792Q-39.862 37.792-40.032 37.849Q-40.202 37.906-40.334 38.013Q-40.465 38.120-40.545 38.278Q-40.457 38.278-40.379 38.322Q-40.301 38.366-40.257 38.442Q-40.214 38.518-40.214 38.615Q-40.214 38.755-40.310 38.852Q-40.407 38.949-40.550 38.949Q-40.688 38.949-40.788 38.849Q-40.887 38.750-40.887 38.615Q-40.887 38.290-40.697 38.042Q-40.506 37.795-40.203 37.664Q-39.900 37.534-39.584 37.534Q-39.203 37.534-38.860 37.669Q-38.517 37.803-38.303 38.076Q-38.089 38.348-38.089 38.735Q-38.089 39.010-38.214 39.237Q-38.339 39.464-38.519 39.636Q-38.699 39.807-39.024 40.047Q-39.349 40.288-39.434 40.355L-40.190 40.959L-39.657 40.959Q-39.168 40.959-38.837 40.951Q-38.505 40.944-38.491 40.929Q-38.432 40.859-38.400 40.724Q-38.368 40.589-38.336 40.378L-38.089 40.378",[3594],[1748,11397],{"stroke":3585,"d":11398},"M34.283-56.215a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,11400,11401,11407],{"stroke":3585},[3579,11402,11404],{"transform":11403},"translate(74.632 -103.31)",[1748,11405],{"d":11354,"fill":3581,"stroke":3581,"className":11406,"style":3595},[3594],[3579,11408,11409],{"transform":11403},[1748,11410],{"d":11411,"fill":3581,"stroke":3581,"className":11412,"style":5982},"M-40.545 41.073Q-40.249 41.410-39.519 41.410Q-39.261 41.410-39.081 41.282Q-38.901 41.155-38.813 40.947Q-38.725 40.739-38.725 40.481Q-38.725 40.086-38.932 39.815Q-39.138 39.544-39.525 39.544L-39.991 39.544Q-40.055 39.529-40.070 39.467L-40.070 39.400Q-40.055 39.344-39.991 39.327L-39.589 39.303Q-39.379 39.303-39.210 39.161Q-39.042 39.019-38.949 38.805Q-38.857 38.591-38.857 38.375Q-38.857 38.087-39.042 37.922Q-39.226 37.756-39.519 37.756Q-39.780 37.756-40.004 37.824Q-40.228 37.891-40.375 38.049Q-40.246 38.067-40.167 38.156Q-40.088 38.246-40.088 38.375Q-40.088 38.512-40.183 38.607Q-40.278 38.703-40.419 38.703Q-40.553 38.703-40.650 38.606Q-40.747 38.509-40.747 38.375Q-40.747 38.087-40.556 37.896Q-40.366 37.704-40.085 37.619Q-39.803 37.534-39.519 37.534Q-39.244 37.534-38.943 37.625Q-38.643 37.715-38.435 37.904Q-38.227 38.093-38.227 38.375Q-38.227 38.744-38.473 39.016Q-38.719 39.289-39.091 39.418Q-38.672 39.511-38.355 39.794Q-38.037 40.077-38.037 40.475Q-38.037 40.838-38.256 41.104Q-38.476 41.369-38.822 41.509Q-39.168 41.650-39.519 41.650Q-39.742 41.650-39.989 41.602Q-40.237 41.553-40.457 41.443Q-40.676 41.334-40.808 41.155Q-40.940 40.976-40.940 40.721Q-40.940 40.572-40.838 40.469Q-40.735 40.367-40.586 40.367Q-40.436 40.367-40.334 40.469Q-40.231 40.572-40.231 40.721Q-40.231 40.853-40.320 40.954Q-40.410 41.055-40.545 41.073",[3594],[1748,11414],{"stroke":3585,"d":11415},"M-28.313-44.835a1.839 1.839 0 1 0-3.677 0 1.839 1.839 0 0 0 3.677 0m-1.839 0",[3579,11417,11418,11424],{"stroke":3585},[3579,11419,11421],{"transform":11420},"translate(2.025 -91.333)",[1748,11422],{"d":11354,"fill":3581,"stroke":3581,"className":11423,"style":3595},[3594],[3579,11425,11426],{"transform":11420},[1748,11427],{"d":11428,"fill":3581,"stroke":3581,"className":11429,"style":5982},"M-39.188 40.545L-41.043 40.545L-41.043 40.288L-38.948 37.581Q-38.910 37.534-38.851 37.534L-38.719 37.534Q-38.678 37.534-38.651 37.562Q-38.623 37.589-38.623 37.630L-38.623 40.288L-37.934 40.288L-37.934 40.545L-38.623 40.545L-38.623 41.093Q-38.623 41.266-37.946 41.266L-37.946 41.524L-39.865 41.524L-39.865 41.266Q-39.188 41.266-39.188 41.093L-39.188 40.545M-39.147 38.205L-40.753 40.288L-39.147 40.288",[3594],[1748,11431],{"fill":3624,"stroke":3585,"d":11432,"style":11433},"M-47.223 40.524 83.659-10.691 32.444-56.215Z","fill-opacity:.15;stroke-opacity:.15",[1748,11435],{"fill":3585,"stroke":3624,"d":11436,"style":3656},"m-45.188 40.643 92.669 5.451m3.084-1.628L82.61-8.944m-.475-3.102L33.968-54.86m-3.53-.99-58.584 10.652m-2.006.364Z",[1748,11438],{"fill":3585,"d":11439,"style":3652},"M-45.325 39.78 81.76-9.948M-45.928 38.95l77.076-93.592",[3579,11441,11442],{"fill":3624},[1748,11443],{"stroke":3585,"d":11444},"M31.438-13.536a1.839 1.839 0 1 0-3.678 0 1.839 1.839 0 0 0 3.678 0m-1.84 0",[3579,11446,11447,11450],{"fill":10736},[1748,11448],{"stroke":3585,"d":11449},"M31.838-9.724h6.455v-7.625h-6.455Z",[3579,11451,11453],{"transform":11452},"translate(80.06 -52.998)",[1748,11454],{"d":11455,"fill":3581,"stroke":3581,"className":11456,"style":3595},"M-45.821 42.163Q-45.821 42.093-45.788 42.025Q-45.755 41.957-45.694 41.957Q-45.333 41.957-45.180 41.926Q-45.096 41.908-45.052 41.869Q-45.008 41.829-44.986 41.781Q-44.964 41.732-44.938 41.623L-44.569 40.137Q-45.092 40.625-45.601 40.625Q-45.997 40.625-46.283 40.421Q-46.568 40.216-46.715 39.882Q-46.863 39.548-46.863 39.157Q-46.863 38.722-46.689 38.261Q-46.515 37.799-46.203 37.408Q-45.891 37.017-45.481 36.782Q-45.070 36.547-44.630 36.547Q-44.353 36.547-44.120 36.710Q-43.888 36.872-43.769 37.131Q-43.677 36.986-43.455 36.767Q-43.233 36.547-43.127 36.547Q-43.083 36.547-43.053 36.578Q-43.022 36.608-43.022 36.652L-43.022 36.692L-44.270 41.684Q-44.279 41.737-44.287 41.779Q-44.296 41.820-44.296 41.847Q-44.296 41.957-43.721 41.957Q-43.677 41.957-43.650 41.987Q-43.624 42.018-43.624 42.071Q-43.624 42.269-43.786 42.269L-45.720 42.269Q-45.755 42.269-45.788 42.231Q-45.821 42.194-45.821 42.163M-45.584 40.361Q-45.250 40.361-44.944 40.124Q-44.639 39.887-44.424 39.562L-43.918 37.571Q-43.975 37.254-44.167 37.030Q-44.358 36.806-44.648 36.806Q-45.017 36.806-45.316 37.125Q-45.615 37.443-45.782 37.852Q-45.918 38.199-46.043 38.709Q-46.168 39.219-46.168 39.544Q-46.168 39.869-46.030 40.115Q-45.891 40.361-45.584 40.361",[3594],[1748,11458],{"fill":3585,"stroke":5985,"d":11459,"style":3656},"M82.136-12.046 33.968-54.86",[3579,11461,11462],{"fill":5985,"stroke":5985},[3579,11463,11464,11471,11477,11483,11486,11492,11498,11504],{"fill":5985,"stroke":3585},[3579,11465,11467],{"transform":11466},"translate(125.913 -81.231)",[1748,11468],{"d":11469,"fill":5985,"stroke":5985,"className":11470,"style":3668},"M-45.125 31.024L-46.957 31.024L-46.957 30.727Q-46.688 30.727-46.520 30.682Q-46.352 30.637-46.352 30.465L-46.352 27.872L-46.993 27.872L-46.993 27.575L-46.352 27.575L-46.352 26.641Q-46.352 26.227-46.043 25.946Q-45.735 25.665-45.289 25.528Q-44.844 25.391-44.438 25.391Q-44.035 25.391-43.717 25.618Q-43.399 25.844-43.399 26.231Q-43.399 26.407-43.512 26.520Q-43.625 26.633-43.797 26.633Q-43.973 26.633-44.086 26.520Q-44.200 26.407-44.200 26.231Q-44.200 26.087-44.110 25.977Q-44.020 25.868-43.887 25.840Q-44.172 25.649-44.520 25.649Q-44.817 25.649-45.104 25.770Q-45.391 25.891-45.575 26.124Q-45.758 26.356-45.758 26.657L-45.758 27.575L-44.606 27.575L-43.383 27.481L-43.383 30.465Q-43.383 30.633-43.215 30.680Q-43.047 30.727-42.774 30.727L-42.774 31.024L-44.606 31.024L-44.606 30.727Q-44.336 30.727-44.168 30.682Q-44 30.637-44 30.465L-44 28.305Q-44 28.098-44.047 27.999Q-44.094 27.899-44.270 27.872L-45.735 27.872L-45.735 30.465Q-45.735 30.633-45.567 30.680Q-45.399 30.727-45.125 30.727L-45.125 31.024M-40.336 31.024L-42.192 31.024L-42.192 30.727Q-41.918 30.727-41.750 30.680Q-41.582 30.633-41.582 30.465L-41.582 28.329Q-41.582 28.114-41.645 28.018Q-41.707 27.922-41.827 27.901Q-41.946 27.879-42.192 27.879L-42.192 27.583L-41 27.497L-41 28.231Q-40.887 28.016-40.694 27.848Q-40.500 27.680-40.262 27.588Q-40.024 27.497-39.770 27.497Q-38.602 27.497-38.602 28.575L-38.602 30.465Q-38.602 30.633-38.432 30.680Q-38.262 30.727-37.993 30.727L-37.993 31.024L-39.848 31.024L-39.848 30.727Q-39.575 30.727-39.407 30.680Q-39.239 30.633-39.239 30.465L-39.239 28.590Q-39.239 28.208-39.360 27.979Q-39.481 27.751-39.832 27.751Q-40.145 27.751-40.399 27.913Q-40.653 28.075-40.799 28.344Q-40.946 28.614-40.946 28.911L-40.946 30.465Q-40.946 30.633-40.776 30.680Q-40.606 30.727-40.336 30.727L-40.336 31.024M-37.450 30.192Q-37.450 29.708-37.047 29.413Q-36.645 29.118-36.094 28.999Q-35.543 28.879-35.051 28.879L-35.051 28.590Q-35.051 28.364-35.166 28.157Q-35.282 27.950-35.479 27.831Q-35.676 27.712-35.907 27.712Q-36.332 27.712-36.618 27.817Q-36.547 27.844-36.500 27.899Q-36.453 27.954-36.428 28.024Q-36.403 28.094-36.403 28.169Q-36.403 28.274-36.453 28.366Q-36.504 28.458-36.596 28.508Q-36.688 28.559-36.793 28.559Q-36.899 28.559-36.991 28.508Q-37.082 28.458-37.133 28.366Q-37.184 28.274-37.184 28.169Q-37.184 27.751-36.795 27.604Q-36.407 27.458-35.907 27.458Q-35.575 27.458-35.221 27.588Q-34.868 27.719-34.639 27.973Q-34.410 28.227-34.410 28.575L-34.410 30.376Q-34.410 30.508-34.338 30.618Q-34.266 30.727-34.137 30.727Q-34.012 30.727-33.944 30.622Q-33.875 30.516-33.875 30.376L-33.875 29.864L-33.594 29.864L-33.594 30.376Q-33.594 30.579-33.711 30.737Q-33.828 30.895-34.010 30.979Q-34.192 31.063-34.395 31.063Q-34.625 31.063-34.778 30.891Q-34.930 30.719-34.961 30.489Q-35.121 30.770-35.430 30.936Q-35.739 31.102-36.090 31.102Q-36.602 31.102-37.026 30.879Q-37.450 30.657-37.450 30.192M-36.762 30.192Q-36.762 30.477-36.535 30.663Q-36.309 30.848-36.016 30.848Q-35.770 30.848-35.545 30.731Q-35.321 30.614-35.186 30.411Q-35.051 30.208-35.051 29.954L-35.051 29.122Q-35.317 29.122-35.602 29.176Q-35.887 29.231-36.159 29.360Q-36.430 29.489-36.596 29.696Q-36.762 29.903-36.762 30.192M-31.387 31.024L-33.219 31.024L-33.219 30.727Q-32.946 30.727-32.778 30.680Q-32.610 30.633-32.610 30.465L-32.610 26.305Q-32.610 26.090-32.672 25.995Q-32.735 25.899-32.854 25.878Q-32.973 25.856-33.219 25.856L-33.219 25.559L-31.996 25.473L-31.996 30.465Q-31.996 30.633-31.828 30.680Q-31.660 30.727-31.387 30.727",[3594],[3579,11472,11473],{"transform":11466},[1748,11474],{"d":11475,"fill":5985,"stroke":5985,"className":11476,"style":3668},"M-28.053 29.297Q-28.053 28.801-27.803 28.376Q-27.553 27.950-27.133 27.704Q-26.713 27.458-26.213 27.458Q-25.674 27.458-25.283 27.583Q-24.893 27.708-24.893 28.122Q-24.893 28.227-24.943 28.319Q-24.994 28.411-25.086 28.462Q-25.178 28.512-25.287 28.512Q-25.393 28.512-25.484 28.462Q-25.576 28.411-25.627 28.319Q-25.678 28.227-25.678 28.122Q-25.678 27.899-25.510 27.794Q-25.732 27.735-26.205 27.735Q-26.502 27.735-26.717 27.874Q-26.932 28.012-27.063 28.243Q-27.193 28.473-27.252 28.743Q-27.311 29.012-27.311 29.297Q-27.311 29.692-27.178 30.042Q-27.045 30.391-26.773 30.608Q-26.502 30.825-26.104 30.825Q-25.729 30.825-25.453 30.608Q-25.178 30.391-25.076 30.032Q-25.061 29.969-24.998 29.969L-24.893 29.969Q-24.857 29.969-24.832 29.997Q-24.807 30.024-24.807 30.063L-24.807 30.087Q-24.939 30.567-25.324 30.835Q-25.709 31.102-26.213 31.102Q-26.576 31.102-26.910 30.965Q-27.244 30.829-27.504 30.579Q-27.764 30.329-27.908 29.993Q-28.053 29.657-28.053 29.297M-24.275 29.297Q-24.275 28.801-24.025 28.376Q-23.775 27.950-23.355 27.704Q-22.936 27.458-22.436 27.458Q-21.896 27.458-21.506 27.583Q-21.115 27.708-21.115 28.122Q-21.115 28.227-21.166 28.319Q-21.217 28.411-21.309 28.462Q-21.400 28.512-21.510 28.512Q-21.615 28.512-21.707 28.462Q-21.799 28.411-21.850 28.319Q-21.900 28.227-21.900 28.122Q-21.900 27.899-21.732 27.794Q-21.955 27.735-22.428 27.735Q-22.725 27.735-22.939 27.874Q-23.154 28.012-23.285 28.243Q-23.416 28.473-23.475 28.743Q-23.533 29.012-23.533 29.297Q-23.533 29.692-23.400 30.042Q-23.268 30.391-22.996 30.608Q-22.725 30.825-22.326 30.825Q-21.951 30.825-21.676 30.608Q-21.400 30.391-21.299 30.032Q-21.283 29.969-21.221 29.969L-21.115 29.969Q-21.080 29.969-21.055 29.997Q-21.029 30.024-21.029 30.063L-21.029 30.087Q-21.162 30.567-21.547 30.835Q-21.932 31.102-22.436 31.102Q-22.799 31.102-23.133 30.965Q-23.467 30.829-23.727 30.579Q-23.986 30.329-24.131 29.993Q-24.275 29.657-24.275 29.297M-18.955 30.993L-20.025 28.137Q-20.092 27.958-20.223 27.915Q-20.354 27.872-20.611 27.872L-20.611 27.575L-18.932 27.575L-18.932 27.872Q-19.381 27.872-19.381 28.071Q-19.377 28.087-19.375 28.104Q-19.373 28.122-19.373 28.137L-18.580 30.231L-17.869 28.321Q-17.904 28.227-17.904 28.182Q-17.904 28.137-17.939 28.137Q-18.006 27.958-18.137 27.915Q-18.268 27.872-18.521 27.872L-18.521 27.575L-16.932 27.575L-16.932 27.872Q-17.381 27.872-17.381 28.071Q-17.377 28.090-17.375 28.108Q-17.373 28.126-17.373 28.137L-16.541 30.352L-15.787 28.352Q-15.764 28.294-15.764 28.223Q-15.764 28.063-15.900 27.967Q-16.037 27.872-16.205 27.872L-16.205 27.575L-14.818 27.575L-14.818 27.872Q-15.053 27.872-15.230 27.999Q-15.408 28.126-15.490 28.352L-16.475 30.993Q-16.529 31.102-16.643 31.102L-16.701 31.102Q-16.814 31.102-16.857 30.993L-17.717 28.719L-18.572 30.993Q-18.611 31.102-18.732 31.102L-18.787 31.102Q-18.900 31.102-18.955 30.993",[3594],[3579,11478,11479],{"transform":11466},[1748,11480],{"d":11481,"fill":5985,"stroke":5985,"className":11482,"style":3668},"M-46.093 38.829Q-46.093 38.325-45.837 37.893Q-45.581 37.462-45.145 37.210Q-44.710 36.958-44.210 36.958Q-43.823 36.958-43.481 37.102Q-43.140 37.247-42.878 37.508Q-42.616 37.770-42.474 38.106Q-42.331 38.442-42.331 38.829Q-42.331 39.321-42.595 39.731Q-42.858 40.141-43.288 40.372Q-43.718 40.602-44.210 40.602Q-44.702 40.602-45.136 40.370Q-45.569 40.137-45.831 39.729Q-46.093 39.321-46.093 38.829M-44.210 40.325Q-43.753 40.325-43.501 40.102Q-43.249 39.879-43.161 39.528Q-43.073 39.176-43.073 38.731Q-43.073 38.301-43.167 37.963Q-43.261 37.626-43.515 37.419Q-43.769 37.212-44.210 37.212Q-44.858 37.212-45.102 37.628Q-45.347 38.044-45.347 38.731Q-45.347 39.176-45.259 39.528Q-45.171 39.879-44.919 40.102Q-44.667 40.325-44.210 40.325M-39.917 40.524L-41.772 40.524L-41.772 40.227Q-41.499 40.227-41.331 40.180Q-41.163 40.133-41.163 39.965L-41.163 37.829Q-41.163 37.614-41.226 37.518Q-41.288 37.422-41.407 37.401Q-41.526 37.379-41.772 37.379L-41.772 37.083L-40.581 36.997L-40.581 37.731Q-40.468 37.516-40.274 37.348Q-40.081 37.180-39.843 37.088Q-39.604 36.997-39.351 36.997Q-38.183 36.997-38.183 38.075L-38.183 39.965Q-38.183 40.133-38.013 40.180Q-37.843 40.227-37.573 40.227L-37.573 40.524L-39.429 40.524L-39.429 40.227Q-39.155 40.227-38.987 40.180Q-38.819 40.133-38.819 39.965L-38.819 38.090Q-38.819 37.708-38.940 37.479Q-39.061 37.251-39.413 37.251Q-39.726 37.251-39.979 37.413Q-40.233 37.575-40.380 37.844Q-40.526 38.114-40.526 38.411L-40.526 39.965Q-40.526 40.133-40.356 40.180Q-40.186 40.227-39.917 40.227",[3594],[1748,11484],{"d":11485},"M91.388-47.614h19.11v.36h-19.11z",[3579,11487,11488],{"transform":11466},[1748,11489],{"d":11490,"fill":5985,"stroke":5985,"className":11491,"style":3668},"M-31.877 40.524L-34.037 40.524Q-34.072 40.524-34.103 40.483Q-34.134 40.442-34.134 40.395L-34.111 40.294Q-34.099 40.243-34.013 40.227Q-33.572 40.227-33.414 40.188Q-33.255 40.149-33.212 39.922L-32.134 35.602Q-32.111 35.532-32.111 35.469Q-32.111 35.407-32.173 35.387Q-32.318 35.356-32.740 35.356Q-32.845 35.329-32.845 35.227L-32.814 35.126Q-32.806 35.079-32.724 35.059L-29.861 35.059Q-29.466 35.059-29.084 35.194Q-28.701 35.329-28.449 35.608Q-28.197 35.887-28.197 36.294Q-28.197 36.692-28.425 37.020Q-28.654 37.348-29.027 37.581Q-29.400 37.813-29.824 37.936Q-30.248 38.059-30.615 38.059L-31.998 38.059L-32.478 39.981Q-32.494 40.075-32.494 40.118Q-32.494 40.176-32.427 40.196Q-32.287 40.227-31.861 40.227Q-31.763 40.254-31.763 40.348L-31.791 40.454Q-31.798 40.504-31.877 40.524M-31.420 35.661L-31.951 37.790L-30.748 37.790Q-29.892 37.790-29.470 37.356Q-29.334 37.219-29.226 37.004Q-29.119 36.790-29.062 36.547Q-29.005 36.305-29.005 36.110Q-29.005 35.684-29.337 35.520Q-29.670 35.356-30.142 35.356L-31.013 35.356Q-31.185 35.356-31.248 35.370Q-31.310 35.383-31.343 35.442Q-31.377 35.501-31.420 35.661",[3594],[3579,11493,11494],{"transform":11466},[1748,11495],{"d":11496,"fill":5985,"stroke":5985,"className":11497,"style":5982},"M-26.095 41.635L-28.705 41.635L-28.705 41.450Q-28.699 41.427-28.679 41.401L-27.528 40.346Q-27.188 40.035-27.008 39.849Q-26.827 39.663-26.682 39.403Q-26.537 39.142-26.537 38.846Q-26.537 38.573-26.663 38.358Q-26.789 38.143-27.009 38.023Q-27.229 37.903-27.504 37.903Q-27.680 37.903-27.850 37.960Q-28.020 38.017-28.152 38.124Q-28.283 38.231-28.363 38.389Q-28.275 38.389-28.197 38.433Q-28.119 38.477-28.075 38.553Q-28.032 38.629-28.032 38.726Q-28.032 38.866-28.128 38.963Q-28.225 39.060-28.368 39.060Q-28.506 39.060-28.606 38.960Q-28.705 38.861-28.705 38.726Q-28.705 38.401-28.515 38.153Q-28.324 37.906-28.021 37.775Q-27.718 37.645-27.402 37.645Q-27.021 37.645-26.678 37.780Q-26.335 37.914-26.121 38.187Q-25.907 38.459-25.907 38.846Q-25.907 39.121-26.032 39.348Q-26.157 39.575-26.337 39.747Q-26.517 39.918-26.842 40.158Q-27.167 40.399-27.252 40.466L-28.008 41.070L-27.475 41.070Q-26.986 41.070-26.655 41.062Q-26.323 41.055-26.309 41.040Q-26.250 40.970-26.218 40.835Q-26.186 40.700-26.154 40.489L-25.907 40.489",[3594],[3579,11499,11500],{"transform":11466},[1748,11501],{"d":11502,"fill":5985,"stroke":5985,"className":11503,"style":3668},"M-22.322 40.524L-24.482 40.524Q-24.517 40.524-24.548 40.483Q-24.579 40.442-24.579 40.395L-24.556 40.294Q-24.544 40.243-24.458 40.227Q-24.017 40.227-23.859 40.188Q-23.700 40.149-23.657 39.922L-22.579 35.602Q-22.556 35.532-22.556 35.469Q-22.556 35.407-22.618 35.387Q-22.763 35.356-23.185 35.356Q-23.290 35.329-23.290 35.227L-23.259 35.126Q-23.251 35.079-23.169 35.059L-20.306 35.059Q-19.911 35.059-19.529 35.194Q-19.146 35.329-18.894 35.608Q-18.642 35.887-18.642 36.294Q-18.642 36.692-18.870 37.020Q-19.099 37.348-19.472 37.581Q-19.845 37.813-20.269 37.936Q-20.693 38.059-21.060 38.059L-22.443 38.059L-22.923 39.981Q-22.939 40.075-22.939 40.118Q-22.939 40.176-22.872 40.196Q-22.732 40.227-22.306 40.227Q-22.208 40.254-22.208 40.348L-22.236 40.454Q-22.243 40.504-22.322 40.524M-21.865 35.661L-22.396 37.790L-21.193 37.790Q-20.337 37.790-19.915 37.356Q-19.779 37.219-19.671 37.004Q-19.564 36.790-19.507 36.547Q-19.450 36.305-19.450 36.110Q-19.450 35.684-19.782 35.520Q-20.115 35.356-20.587 35.356L-21.458 35.356Q-21.630 35.356-21.693 35.370Q-21.755 35.383-21.788 35.442Q-21.822 35.501-21.865 35.661",[3594],[3579,11505,11506],{"transform":11466},[1748,11507],{"d":11508,"fill":5985,"stroke":5985,"className":11509,"style":5982},"M-18.808 41.184Q-18.512 41.521-17.782 41.521Q-17.524 41.521-17.344 41.393Q-17.164 41.266-17.076 41.058Q-16.988 40.850-16.988 40.592Q-16.988 40.197-17.195 39.926Q-17.401 39.655-17.788 39.655L-18.254 39.655Q-18.318 39.640-18.333 39.578L-18.333 39.511Q-18.318 39.455-18.254 39.438L-17.852 39.414Q-17.642 39.414-17.473 39.272Q-17.305 39.130-17.212 38.916Q-17.120 38.702-17.120 38.486Q-17.120 38.198-17.305 38.033Q-17.489 37.867-17.782 37.867Q-18.043 37.867-18.267 37.935Q-18.491 38.002-18.638 38.160Q-18.509 38.178-18.430 38.267Q-18.351 38.357-18.351 38.486Q-18.351 38.623-18.446 38.718Q-18.541 38.814-18.682 38.814Q-18.816 38.814-18.913 38.717Q-19.010 38.620-19.010 38.486Q-19.010 38.198-18.819 38.007Q-18.629 37.815-18.348 37.730Q-18.066 37.645-17.782 37.645Q-17.507 37.645-17.206 37.736Q-16.906 37.826-16.698 38.015Q-16.490 38.204-16.490 38.486Q-16.490 38.855-16.736 39.127Q-16.982 39.400-17.354 39.529Q-16.935 39.622-16.618 39.905Q-16.300 40.188-16.300 40.586Q-16.300 40.949-16.519 41.215Q-16.739 41.480-17.085 41.620Q-17.431 41.761-17.782 41.761Q-18.005 41.761-18.252 41.713Q-18.500 41.664-18.720 41.554Q-18.939 41.445-19.071 41.266Q-19.203 41.087-19.203 40.832Q-19.203 40.683-19.101 40.580Q-18.998 40.478-18.849 40.478Q-18.699 40.478-18.597 40.580Q-18.494 40.683-18.494 40.832Q-18.494 40.964-18.583 41.065Q-18.673 41.166-18.808 41.184",[3594],[3579,11511,11512,11515],{"fill":5985,"stroke":5985,"style":3598},[1748,11513],{"fill":3585,"d":11514},"M82.237-40.567c-9.162.006-14.676 1.385-20.468 4.47",[1748,11516],{"stroke":3585,"d":11517},"m59.474-34.876 4.65-.12-2.355-1.102.4-2.569",[3579,11519,11520],{"fill":3624,"stroke":3624},[3579,11521,11522,11529,11535,11541,11547,11553,11559,11565,11571],{"fill":3624,"stroke":3585},[3579,11523,11525],{"transform":11524},"translate(16.72 -36.411)",[1748,11526],{"d":11527,"fill":3624,"stroke":3624,"className":11528,"style":3668},"M-45.399 40.493L-46.469 37.637Q-46.535 37.458-46.666 37.415Q-46.797 37.372-47.055 37.372L-47.055 37.075L-45.375 37.075L-45.375 37.372Q-45.825 37.372-45.825 37.571Q-45.821 37.587-45.819 37.604Q-45.817 37.622-45.817 37.637L-45.024 39.731L-44.313 37.821Q-44.348 37.727-44.348 37.682Q-44.348 37.637-44.383 37.637Q-44.450 37.458-44.580 37.415Q-44.711 37.372-44.965 37.372L-44.965 37.075L-43.375 37.075L-43.375 37.372Q-43.825 37.372-43.825 37.571Q-43.821 37.590-43.819 37.608Q-43.817 37.626-43.817 37.637L-42.985 39.852L-42.231 37.852Q-42.207 37.794-42.207 37.723Q-42.207 37.563-42.344 37.467Q-42.481 37.372-42.649 37.372L-42.649 37.075L-41.262 37.075L-41.262 37.372Q-41.496 37.372-41.674 37.499Q-41.852 37.626-41.934 37.852L-42.918 40.493Q-42.973 40.602-43.086 40.602L-43.145 40.602Q-43.258 40.602-43.301 40.493L-44.160 38.219L-45.016 40.493Q-45.055 40.602-45.176 40.602L-45.231 40.602Q-45.344 40.602-45.399 40.493",[3594],[3579,11530,11531],{"transform":11524},[1748,11532],{"d":11533,"fill":3624,"stroke":3624,"className":11534,"style":3668},"M-41.083 38.770Q-41.083 38.290-40.850 37.874Q-40.618 37.458-40.208 37.208Q-39.798 36.958-39.321 36.958Q-38.591 36.958-38.192 37.399Q-37.794 37.840-37.794 38.571Q-37.794 38.676-37.887 38.700L-40.337 38.700L-40.337 38.770Q-40.337 39.180-40.216 39.536Q-40.094 39.891-39.823 40.108Q-39.551 40.325-39.122 40.325Q-38.758 40.325-38.462 40.096Q-38.165 39.868-38.063 39.516Q-38.055 39.469-37.969 39.454L-37.887 39.454Q-37.794 39.481-37.794 39.563Q-37.794 39.571-37.801 39.602Q-37.864 39.829-38.003 40.012Q-38.141 40.196-38.333 40.329Q-38.524 40.462-38.743 40.532Q-38.962 40.602-39.200 40.602Q-39.571 40.602-39.909 40.465Q-40.247 40.329-40.514 40.077Q-40.782 39.825-40.932 39.485Q-41.083 39.145-41.083 38.770M-40.329 38.462L-38.368 38.462Q-38.368 38.157-38.469 37.866Q-38.571 37.575-38.788 37.393Q-39.005 37.212-39.321 37.212Q-39.622 37.212-39.852 37.399Q-40.083 37.587-40.206 37.878Q-40.329 38.169-40.329 38.462M-35.489 40.602Q-35.969 40.602-36.378 40.358Q-36.786 40.114-37.024 39.700Q-37.262 39.286-37.262 38.797Q-37.262 38.305-37.005 37.889Q-36.747 37.473-36.315 37.235Q-35.883 36.997-35.391 36.997Q-34.770 36.997-34.321 37.434L-34.321 35.805Q-34.321 35.590-34.383 35.495Q-34.446 35.399-34.563 35.378Q-34.680 35.356-34.926 35.356L-34.926 35.059L-33.704 34.973L-33.704 39.782Q-33.704 39.993-33.641 40.088Q-33.579 40.184-33.462 40.206Q-33.344 40.227-33.094 40.227L-33.094 40.524L-34.344 40.602L-34.344 40.118Q-34.809 40.602-35.489 40.602M-35.423 40.348Q-35.083 40.348-34.790 40.157Q-34.497 39.965-34.344 39.669L-34.344 37.837Q-34.493 37.563-34.755 37.407Q-35.016 37.251-35.329 37.251Q-35.954 37.251-36.237 37.698Q-36.520 38.145-36.520 38.805Q-36.520 39.450-36.268 39.899Q-36.016 40.348-35.423 40.348M-32.587 41.133Q-32.587 40.852-32.376 40.641Q-32.165 40.430-31.880 40.340Q-32.036 40.215-32.114 40.026Q-32.192 39.837-32.192 39.637Q-32.192 39.282-31.962 38.989Q-32.329 38.649-32.329 38.180Q-32.329 37.829-32.126 37.559Q-31.923 37.290-31.602 37.143Q-31.282 36.997-30.938 36.997Q-30.419 36.997-30.048 37.278Q-29.684 36.907-29.137 36.907Q-28.958 36.907-28.831 37.034Q-28.704 37.161-28.704 37.340Q-28.704 37.446-28.782 37.524Q-28.860 37.602-28.969 37.602Q-29.079 37.602-29.155 37.526Q-29.231 37.450-29.231 37.340Q-29.231 37.239-29.192 37.188Q-29.184 37.180-29.180 37.174Q-29.176 37.169-29.176 37.165Q-29.551 37.165-29.872 37.419Q-29.551 37.758-29.551 38.180Q-29.551 38.450-29.669 38.667Q-29.786 38.883-29.991 39.042Q-30.196 39.200-30.438 39.282Q-30.680 39.364-30.938 39.364Q-31.157 39.364-31.370 39.305Q-31.583 39.247-31.778 39.126Q-31.872 39.266-31.872 39.446Q-31.872 39.653-31.735 39.805Q-31.598 39.958-31.391 39.958L-30.696 39.958Q-30.208 39.958-29.796 40.042Q-29.383 40.126-29.104 40.383Q-28.825 40.641-28.825 41.133Q-28.825 41.497-29.145 41.729Q-29.466 41.962-29.907 42.063Q-30.348 42.165-30.704 42.165Q-31.059 42.165-31.503 42.063Q-31.946 41.962-32.266 41.729Q-32.587 41.497-32.587 41.133M-32.083 41.133Q-32.083 41.329-31.938 41.477Q-31.794 41.626-31.581 41.715Q-31.368 41.805-31.128 41.852Q-30.887 41.899-30.704 41.899Q-30.462 41.899-30.132 41.821Q-29.801 41.743-29.565 41.569Q-29.329 41.395-29.329 41.133Q-29.329 40.727-29.739 40.618Q-30.149 40.508-30.712 40.508L-31.391 40.508Q-31.661 40.508-31.872 40.686Q-32.083 40.864-32.083 41.133M-30.938 39.098Q-30.216 39.098-30.216 38.180Q-30.216 37.258-30.938 37.258Q-31.665 37.258-31.665 38.180Q-31.665 39.098-30.938 39.098M-28.341 38.770Q-28.341 38.290-28.108 37.874Q-27.876 37.458-27.466 37.208Q-27.055 36.958-26.579 36.958Q-25.848 36.958-25.450 37.399Q-25.051 37.840-25.051 38.571Q-25.051 38.676-25.145 38.700L-27.594 38.700L-27.594 38.770Q-27.594 39.180-27.473 39.536Q-27.352 39.891-27.081 40.108Q-26.809 40.325-26.380 40.325Q-26.016 40.325-25.719 40.096Q-25.423 39.868-25.321 39.516Q-25.313 39.469-25.227 39.454L-25.145 39.454Q-25.051 39.481-25.051 39.563Q-25.051 39.571-25.059 39.602Q-25.122 39.829-25.260 40.012Q-25.399 40.196-25.591 40.329Q-25.782 40.462-26.001 40.532Q-26.219 40.602-26.458 40.602Q-26.829 40.602-27.167 40.465Q-27.505 40.329-27.772 40.077Q-28.040 39.825-28.190 39.485Q-28.341 39.145-28.341 38.770M-27.587 38.462L-25.626 38.462Q-25.626 38.157-25.727 37.866Q-25.829 37.575-26.046 37.393Q-26.262 37.212-26.579 37.212Q-26.880 37.212-27.110 37.399Q-27.341 37.587-27.464 37.878Q-27.587 38.169-27.587 38.462",[3594],[3579,11536,11537],{"transform":11524},[1748,11538],{"d":11539,"fill":3624,"stroke":3624,"className":11540,"style":3668},"M-19.479 42.426L-21.006 38.594Q-21.021 38.547-21.021 38.524Q-21.021 38.508-21.006 38.446L-19.486 34.629Q-19.424 34.524-19.318 34.524Q-19.240 34.524-19.188 34.577Q-19.135 34.629-19.135 34.708Q-19.135 34.727-19.150 34.782L-20.639 38.524L-19.150 42.266Q-19.135 42.321-19.135 42.340Q-19.135 42.419-19.188 42.471Q-19.240 42.524-19.318 42.524Q-19.439 42.524-19.479 42.426",[3594],[3579,11542,11543],{"transform":11524},[1748,11544],{"d":11545,"fill":3624,"stroke":3624,"className":11546,"style":3668},"M-16.006 40.524L-18.166 40.524Q-18.201 40.524-18.232 40.483Q-18.263 40.442-18.263 40.395L-18.240 40.294Q-18.228 40.243-18.142 40.227Q-17.701 40.227-17.543 40.188Q-17.384 40.149-17.341 39.922L-16.263 35.602Q-16.240 35.532-16.240 35.469Q-16.240 35.407-16.302 35.387Q-16.447 35.356-16.869 35.356Q-16.974 35.329-16.974 35.227L-16.943 35.126Q-16.935 35.079-16.853 35.059L-13.990 35.059Q-13.595 35.059-13.213 35.194Q-12.830 35.329-12.578 35.608Q-12.326 35.887-12.326 36.294Q-12.326 36.692-12.554 37.020Q-12.783 37.348-13.156 37.581Q-13.529 37.813-13.953 37.936Q-14.377 38.059-14.744 38.059L-16.127 38.059L-16.607 39.981Q-16.623 40.075-16.623 40.118Q-16.623 40.176-16.556 40.196Q-16.416 40.227-15.990 40.227Q-15.892 40.254-15.892 40.348L-15.920 40.454Q-15.927 40.504-16.006 40.524M-15.549 35.661L-16.080 37.790L-14.877 37.790Q-14.021 37.790-13.599 37.356Q-13.463 37.219-13.355 37.004Q-13.248 36.790-13.191 36.547Q-13.134 36.305-13.134 36.110Q-13.134 35.684-13.466 35.520Q-13.799 35.356-14.271 35.356L-15.142 35.356Q-15.314 35.356-15.377 35.370Q-15.439 35.383-15.472 35.442Q-15.506 35.501-15.549 35.661",[3594],[3579,11548,11549],{"transform":11524},[1748,11550],{"d":11551,"fill":3624,"stroke":3624,"className":11552,"style":5982},"M-10.224 41.635L-12.834 41.635L-12.834 41.450Q-12.828 41.427-12.808 41.401L-11.657 40.346Q-11.317 40.035-11.137 39.849Q-10.956 39.663-10.811 39.403Q-10.666 39.142-10.666 38.846Q-10.666 38.573-10.792 38.358Q-10.918 38.143-11.138 38.023Q-11.358 37.903-11.633 37.903Q-11.809 37.903-11.979 37.960Q-12.149 38.017-12.281 38.124Q-12.412 38.231-12.492 38.389Q-12.404 38.389-12.326 38.433Q-12.248 38.477-12.204 38.553Q-12.161 38.629-12.161 38.726Q-12.161 38.866-12.257 38.963Q-12.354 39.060-12.497 39.060Q-12.635 39.060-12.735 38.960Q-12.834 38.861-12.834 38.726Q-12.834 38.401-12.644 38.153Q-12.453 37.906-12.150 37.775Q-11.847 37.645-11.531 37.645Q-11.150 37.645-10.807 37.780Q-10.464 37.914-10.250 38.187Q-10.036 38.459-10.036 38.846Q-10.036 39.121-10.161 39.348Q-10.286 39.575-10.466 39.747Q-10.646 39.918-10.971 40.158Q-11.296 40.399-11.381 40.466L-12.137 41.070L-11.604 41.070Q-11.115 41.070-10.784 41.062Q-10.453 41.055-10.438 41.040Q-10.379 40.970-10.347 40.835Q-10.315 40.700-10.283 40.489L-10.036 40.489",[3594],[3579,11554,11555],{"transform":11524},[1748,11556],{"d":11557,"fill":3624,"stroke":3624,"className":11558,"style":3668},"M-8.274 41.930Q-8.274 41.907-8.243 41.860Q-7.950 41.598-7.784 41.231Q-7.618 40.864-7.618 40.477L-7.618 40.419Q-7.746 40.524-7.914 40.524Q-8.106 40.524-8.243 40.391Q-8.379 40.258-8.379 40.059Q-8.379 39.868-8.243 39.735Q-8.106 39.602-7.914 39.602Q-7.614 39.602-7.489 39.872Q-7.364 40.141-7.364 40.477Q-7.364 40.926-7.545 41.340Q-7.727 41.754-8.067 42.051Q-8.090 42.075-8.129 42.075Q-8.176 42.075-8.225 42.030Q-8.274 41.985-8.274 41.930",[3594],[3579,11560,11561],{"transform":11524},[1748,11562],{"d":11563,"fill":3624,"stroke":3624,"className":11564,"style":3668},"M-2.672 40.524L-4.832 40.524Q-4.867 40.524-4.898 40.483Q-4.929 40.442-4.929 40.395L-4.906 40.294Q-4.894 40.243-4.808 40.227Q-4.367 40.227-4.209 40.188Q-4.050 40.149-4.008 39.922L-2.929 35.602Q-2.906 35.532-2.906 35.469Q-2.906 35.407-2.968 35.387Q-3.113 35.356-3.535 35.356Q-3.640 35.329-3.640 35.227L-3.609 35.126Q-3.601 35.079-3.519 35.059L-0.656 35.059Q-0.261 35.059 0.121 35.194Q0.504 35.329 0.756 35.608Q1.008 35.887 1.008 36.294Q1.008 36.692 0.780 37.020Q0.551 37.348 0.178 37.581Q-0.195 37.813-0.619 37.936Q-1.043 38.059-1.410 38.059L-2.793 38.059L-3.273 39.981Q-3.289 40.075-3.289 40.118Q-3.289 40.176-3.222 40.196Q-3.082 40.227-2.656 40.227Q-2.558 40.254-2.558 40.348L-2.586 40.454Q-2.593 40.504-2.672 40.524M-2.215 35.661L-2.746 37.790L-1.543 37.790Q-0.687 37.790-0.265 37.356Q-0.129 37.219-0.021 37.004Q0.086 36.790 0.143 36.547Q0.200 36.305 0.200 36.110Q0.200 35.684-0.133 35.520Q-0.465 35.356-0.937 35.356L-1.808 35.356Q-1.980 35.356-2.043 35.370Q-2.105 35.383-2.138 35.442Q-2.172 35.501-2.215 35.661",[3594],[3579,11566,11567],{"transform":11524},[1748,11568],{"d":11569,"fill":3624,"stroke":3624,"className":11570,"style":5982},"M0.842 41.184Q1.138 41.521 1.868 41.521Q2.126 41.521 2.306 41.393Q2.486 41.266 2.574 41.058Q2.662 40.850 2.662 40.592Q2.662 40.197 2.455 39.926Q2.249 39.655 1.862 39.655L1.396 39.655Q1.332 39.640 1.317 39.578L1.317 39.511Q1.332 39.455 1.396 39.438L1.798 39.414Q2.008 39.414 2.177 39.272Q2.345 39.130 2.438 38.916Q2.530 38.702 2.530 38.486Q2.530 38.198 2.345 38.033Q2.161 37.867 1.868 37.867Q1.607 37.867 1.383 37.935Q1.159 38.002 1.012 38.160Q1.141 38.178 1.220 38.267Q1.299 38.357 1.299 38.486Q1.299 38.623 1.204 38.718Q1.109 38.814 0.968 38.814Q0.834 38.814 0.737 38.717Q0.640 38.620 0.640 38.486Q0.640 38.198 0.831 38.007Q1.021 37.815 1.302 37.730Q1.584 37.645 1.868 37.645Q2.143 37.645 2.444 37.736Q2.744 37.826 2.952 38.015Q3.160 38.204 3.160 38.486Q3.160 38.855 2.914 39.127Q2.668 39.400 2.296 39.529Q2.715 39.622 3.032 39.905Q3.350 40.188 3.350 40.586Q3.350 40.949 3.131 41.215Q2.911 41.480 2.565 41.620Q2.219 41.761 1.868 41.761Q1.645 41.761 1.398 41.713Q1.150 41.664 0.930 41.554Q0.711 41.445 0.579 41.266Q0.447 41.087 0.447 40.832Q0.447 40.683 0.549 40.580Q0.652 40.478 0.801 40.478Q0.951 40.478 1.053 40.580Q1.156 40.683 1.156 40.832Q1.156 40.964 1.067 41.065Q0.977 41.166 0.842 41.184",[3594],[3579,11572,11573],{"transform":11524},[1748,11574],{"d":11575,"fill":3624,"stroke":3624,"className":11576,"style":3668},"M4.708 42.340Q4.708 42.321 4.723 42.266L6.212 38.524L4.723 34.782Q4.708 34.727 4.708 34.708Q4.708 34.633 4.762 34.579Q4.817 34.524 4.891 34.524Q4.946 34.524 4.991 34.551Q5.036 34.579 5.059 34.622L6.579 38.446Q6.594 38.508 6.594 38.524Q6.594 38.547 6.579 38.594L5.059 42.419Q4.997 42.524 4.891 42.524Q4.817 42.524 4.762 42.469Q4.708 42.415 4.708 42.340",[3594],[3761,11578,11580,11581,11614,11615,11667,11668,11683,11684,11702],{"className":11579},[3764],"Convex ",[419,11582,11584],{"className":11583},[422],[419,11585,11587],{"className":11586,"ariaHidden":427},[426],[419,11588,11590,11593,11596,11599,11605,11608,11611],{"className":11589},[431],[419,11591],{"className":11592,"style":575},[435],[419,11594,6227],{"className":11595,"style":2126},[440,553],[419,11597,580],{"className":11598},[579],[419,11600,11602],{"className":11601},[526],[419,11603,10625],{"className":11604,"style":4951},[440,2118],[419,11606],{"className":11607,"style":593},[559],[419,11609,8569],{"className":11610},[440,553],[419,11612,603],{"className":11613},[602]," point location: binary-search the fan from ",[419,11616,11618],{"className":11617},[422],[419,11619,11621],{"className":11620,"ariaHidden":427},[426],[419,11622,11624,11627],{"className":11623},[431],[419,11625],{"className":11626,"style":9670},[435],[419,11628,11630,11633],{"className":11629},[440],[419,11631,555],{"className":11632,"style":554},[440,553],[419,11634,11636],{"className":11635},[452],[419,11637,11639,11659],{"className":11638},[456,652],[419,11640,11642,11656],{"className":11641},[460],[419,11643,11645],{"className":11644,"style":8447},[464],[419,11646,11647,11650],{"style":8450},[419,11648],{"className":11649,"style":472},[471],[419,11651,11653],{"className":11652},[476,477,478,479],[419,11654,448],{"className":11655},[440,479],[419,11657,676],{"className":11658},[675],[419,11660,11662],{"className":11661},[460],[419,11663,11665],{"className":11664,"style":683},[464],[419,11666],{}," for ",[419,11669,11671],{"className":11670},[422],[419,11672,11674],{"className":11673,"ariaHidden":427},[426],[419,11675,11677,11680],{"className":11676},[431],[419,11678],{"className":11679,"style":7817},[435],[419,11681,4922],{"className":11682,"style":597},[440,553],"'s wedge, then one ",[419,11685,11687],{"className":11686},[422],[419,11688,11690],{"className":11689,"ariaHidden":427},[426],[419,11691,11693,11696],{"className":11692},[431],[419,11694],{"className":11695,"style":7281},[435],[419,11697,11699],{"className":11698},[526],[419,11700,4924],{"className":11701,"style":4951},[440,2118]," on the far edge",[530,11704,11706],{"id":11705},"takeaways","Takeaways",[7255,11708,11709,11750,12085,12380,12549,12558,12837],{},[7258,11710,11711,11712,11715,11716,11749],{},"Treat ",[385,11713,11714],{},"points as vectors","; the difference ",[419,11717,11719],{"className":11718},[422],[419,11720,11722,11740],{"className":11721,"ariaHidden":427},[426],[419,11723,11725,11728,11731,11734,11737],{"className":11724},[431],[419,11726],{"className":11727,"style":896},[435],[419,11729,753],{"className":11730,"style":752},[440,553],[419,11732],{"className":11733,"style":903},[559],[419,11735,486],{"className":11736},[907],[419,11738],{"className":11739,"style":903},[559],[419,11741,11743,11746],{"className":11742},[431],[419,11744],{"className":11745,"style":549},[435],[419,11747,620],{"className":11748},[440,553]," is the displacement that\nalmost every primitive is built from, and integer inputs stay integer.",[7258,11751,1679,11752,4356,11754,12041,12042,12066,12067,12084],{},[385,11753,1682],{},[419,11755,11757],{"className":11756},[422],[419,11758,11760,11810,11860,11955],{"className":11759,"ariaHidden":427},[426],[419,11761,11763,11766,11801,11804,11807],{"className":11762},[431],[419,11764],{"className":11765,"style":1699},[435],[419,11767,11769],{"className":11768},[440,1703],[419,11770,11772],{"className":11771},[456],[419,11773,11775],{"className":11774},[460],[419,11776,11778,11786],{"className":11777,"style":1699},[464],[419,11779,11780,11783],{"style":1715},[419,11781],{"className":11782,"style":1719},[471],[419,11784,390],{"className":11785},[440,553],[419,11787,11788,11791],{"style":1715},[419,11789],{"className":11790,"style":1719},[471],[419,11792,11794],{"className":11793,"style":1732},[1731],[419,11795,11797],{"className":11796,"style":1737},[1736],[1739,11798,11799],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,11800],{"d":1750},[419,11802],{"className":11803,"style":903},[559],[419,11805,1757],{"className":11806},[907],[419,11808],{"className":11809,"style":903},[559],[419,11811,11813,11816,11851,11854,11857],{"className":11812},[431],[419,11814],{"className":11815,"style":1767},[435],[419,11817,11819],{"className":11818},[440,1703],[419,11820,11822],{"className":11821},[456],[419,11823,11825],{"className":11824},[460],[419,11826,11828,11836],{"className":11827,"style":1767},[464],[419,11829,11830,11833],{"style":1715},[419,11831],{"className":11832,"style":1719},[471],[419,11834,778],{"className":11835},[440,553],[419,11837,11838,11841],{"style":1790},[419,11839],{"className":11840,"style":1719},[471],[419,11842,11844],{"className":11843,"style":1732},[1731],[419,11845,11847],{"className":11846,"style":1737},[1736],[1739,11848,11849],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,11850],{"d":1750},[419,11852],{"className":11853,"style":560},[559],[419,11855,565],{"className":11856},[564],[419,11858],{"className":11859,"style":560},[559],[419,11861,11863,11866,11906,11946,11949,11952],{"className":11862},[431],[419,11864],{"className":11865,"style":1825},[435],[419,11867,11869,11872],{"className":11868},[440],[419,11870,390],{"className":11871},[440,553],[419,11873,11875],{"className":11874},[452],[419,11876,11878,11898],{"className":11877},[456,652],[419,11879,11881,11895],{"className":11880},[460],[419,11882,11884],{"className":11883,"style":659},[464],[419,11885,11886,11889],{"style":662},[419,11887],{"className":11888,"style":472},[471],[419,11890,11892],{"className":11891},[476,477,478,479],[419,11893,584],{"className":11894},[440,553,479],[419,11896,676],{"className":11897},[675],[419,11899,11901],{"className":11900},[460],[419,11902,11904],{"className":11903,"style":683},[464],[419,11905],{},[419,11907,11909,11912],{"className":11908},[440],[419,11910,778],{"className":11911},[440,553],[419,11913,11915],{"className":11914},[452],[419,11916,11918,11938],{"className":11917},[456,652],[419,11919,11921,11935],{"className":11920},[460],[419,11922,11924],{"className":11923,"style":659},[464],[419,11925,11926,11929],{"style":662},[419,11927],{"className":11928,"style":472},[471],[419,11930,11932],{"className":11931},[476,477,478,479],[419,11933,584],{"className":11934},[440,553,479],[419,11936,676],{"className":11937},[675],[419,11939,11941],{"className":11940},[460],[419,11942,11944],{"className":11943,"style":683},[464],[419,11945],{},[419,11947],{"className":11948,"style":903},[559],[419,11950,908],{"className":11951},[907],[419,11953],{"className":11954,"style":903},[559],[419,11956,11958,11961,12001],{"className":11957},[431],[419,11959],{"className":11960,"style":994},[435],[419,11962,11964,11967],{"className":11963},[440],[419,11965,390],{"className":11966},[440,553],[419,11968,11970],{"className":11969},[452],[419,11971,11973,11993],{"className":11972},[456,652],[419,11974,11976,11990],{"className":11975},[460],[419,11977,11979],{"className":11978,"style":659},[464],[419,11980,11981,11984],{"style":662},[419,11982],{"className":11983,"style":472},[471],[419,11985,11987],{"className":11986},[476,477,478,479],[419,11988,598],{"className":11989,"style":597},[440,553,479],[419,11991,676],{"className":11992},[675],[419,11994,11996],{"className":11995},[460],[419,11997,11999],{"className":11998,"style":730},[464],[419,12000],{},[419,12002,12004,12007],{"className":12003},[440],[419,12005,778],{"className":12006},[440,553],[419,12008,12010],{"className":12009},[452],[419,12011,12013,12033],{"className":12012},[456,652],[419,12014,12016,12030],{"className":12015},[460],[419,12017,12019],{"className":12018,"style":659},[464],[419,12020,12021,12024],{"style":662},[419,12022],{"className":12023,"style":472},[471],[419,12025,12027],{"className":12026},[476,477,478,479],[419,12028,598],{"className":12029,"style":597},[440,553,479],[419,12031,676],{"className":12032},[675],[419,12034,12036],{"className":12035},[460],[419,12037,12039],{"className":12038,"style":730},[464],[419,12040],{}," has the sign of\n",[419,12043,12045],{"className":12044},[422],[419,12046,12048],{"className":12047,"ariaHidden":427},[426],[419,12049,12051,12054,12060,12063],{"className":12050},[431],[419,12052],{"className":12053,"style":2146},[435],[419,12055,12057],{"className":12056},[526],[419,12058,2119],{"className":12059},[440,2118],[419,12061],{"className":12062,"style":593},[559],[419,12064,2127],{"className":12065,"style":2126},[440,553],": positive\u002Fzero\u002Fnegative ",[419,12068,12070],{"className":12069},[422],[419,12071,12073],{"className":12072,"ariaHidden":427},[426],[419,12074,12076,12080],{"className":12075},[431],[419,12077],{"className":12078,"style":12079},[435],"height:0.3669em;",[419,12081,12083],{"className":12082},[564],"⇒"," acute\u002Fright\u002Fobtuse — it\nhandles projection, perpendicularity, and angle.",[7258,12086,1679,12087,4356,12089,12376,12377,12379],{},[385,12088,3925],{},[419,12090,12092],{"className":12091},[422],[419,12093,12095,12145,12195,12290],{"className":12094,"ariaHidden":427},[426],[419,12096,12098,12101,12136,12139,12142],{"className":12097},[431],[419,12099],{"className":12100,"style":3942},[435],[419,12102,12104],{"className":12103},[440,1703],[419,12105,12107],{"className":12106},[456],[419,12108,12110],{"className":12109},[460],[419,12111,12113,12121],{"className":12112,"style":1699},[464],[419,12114,12115,12118],{"style":1715},[419,12116],{"className":12117,"style":1719},[471],[419,12119,390],{"className":12120},[440,553],[419,12122,12123,12126],{"style":1715},[419,12124],{"className":12125,"style":1719},[471],[419,12127,12129],{"className":12128,"style":1732},[1731],[419,12130,12132],{"className":12131,"style":1737},[1736],[1739,12133,12134],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,12135],{"d":1750},[419,12137],{"className":12138,"style":903},[559],[419,12140,3984],{"className":12141},[907],[419,12143],{"className":12144,"style":903},[559],[419,12146,12148,12151,12186,12189,12192],{"className":12147},[431],[419,12149],{"className":12150,"style":1767},[435],[419,12152,12154],{"className":12153},[440,1703],[419,12155,12157],{"className":12156},[456],[419,12158,12160],{"className":12159},[460],[419,12161,12163,12171],{"className":12162,"style":1767},[464],[419,12164,12165,12168],{"style":1715},[419,12166],{"className":12167,"style":1719},[471],[419,12169,778],{"className":12170},[440,553],[419,12172,12173,12176],{"style":1790},[419,12174],{"className":12175,"style":1719},[471],[419,12177,12179],{"className":12178,"style":1732},[1731],[419,12180,12182],{"className":12181,"style":1737},[1736],[1739,12183,12184],{"xmlns":1741,"width":1742,"height":1743,"style":1744,"viewBox":1745,"preserveAspectRatio":1746},[1748,12185],{"d":1750},[419,12187],{"className":12188,"style":560},[559],[419,12190,565],{"className":12191},[564],[419,12193],{"className":12194,"style":560},[559],[419,12196,12198,12201,12241,12281,12284,12287],{"className":12197},[431],[419,12199],{"className":12200,"style":994},[435],[419,12202,12204,12207],{"className":12203},[440],[419,12205,390],{"className":12206},[440,553],[419,12208,12210],{"className":12209},[452],[419,12211,12213,12233],{"className":12212},[456,652],[419,12214,12216,12230],{"className":12215},[460],[419,12217,12219],{"className":12218,"style":659},[464],[419,12220,12221,12224],{"style":662},[419,12222],{"className":12223,"style":472},[471],[419,12225,12227],{"className":12226},[476,477,478,479],[419,12228,584],{"className":12229},[440,553,479],[419,12231,676],{"className":12232},[675],[419,12234,12236],{"className":12235},[460],[419,12237,12239],{"className":12238,"style":683},[464],[419,12240],{},[419,12242,12244,12247],{"className":12243},[440],[419,12245,778],{"className":12246},[440,553],[419,12248,12250],{"className":12249},[452],[419,12251,12253,12273],{"className":12252},[456,652],[419,12254,12256,12270],{"className":12255},[460],[419,12257,12259],{"className":12258,"style":659},[464],[419,12260,12261,12264],{"style":662},[419,12262],{"className":12263,"style":472},[471],[419,12265,12267],{"className":12266},[476,477,478,479],[419,12268,598],{"className":12269,"style":597},[440,553,479],[419,12271,676],{"className":12272},[675],[419,12274,12276],{"className":12275},[460],[419,12277,12279],{"className":12278,"style":730},[464],[419,12280],{},[419,12282],{"className":12283,"style":903},[559],[419,12285,486],{"className":12286},[907],[419,12288],{"className":12289,"style":903},[559],[419,12291,12293,12296,12336],{"className":12292},[431],[419,12294],{"className":12295,"style":994},[435],[419,12297,12299,12302],{"className":12298},[440],[419,12300,390],{"className":12301},[440,553],[419,12303,12305],{"className":12304},[452],[419,12306,12308,12328],{"className":12307},[456,652],[419,12309,12311,12325],{"className":12310},[460],[419,12312,12314],{"className":12313,"style":659},[464],[419,12315,12316,12319],{"style":662},[419,12317],{"className":12318,"style":472},[471],[419,12320,12322],{"className":12321},[476,477,478,479],[419,12323,598],{"className":12324,"style":597},[440,553,479],[419,12326,676],{"className":12327},[675],[419,12329,12331],{"className":12330},[460],[419,12332,12334],{"className":12333,"style":730},[464],[419,12335],{},[419,12337,12339,12342],{"className":12338},[440],[419,12340,778],{"className":12341},[440,553],[419,12343,12345],{"className":12344},[452],[419,12346,12348,12368],{"className":12347},[456,652],[419,12349,12351,12365],{"className":12350},[460],[419,12352,12354],{"className":12353,"style":659},[464],[419,12355,12356,12359],{"style":662},[419,12357],{"className":12358,"style":472},[471],[419,12360,12362],{"className":12361},[476,477,478,479],[419,12363,584],{"className":12364},[440,553,479],[419,12366,676],{"className":12367},[675],[419,12369,12371],{"className":12370},[460],[419,12372,12374],{"className":12373,"style":683},[464],[419,12375],{}," gives signed\nparallelogram area in its magnitude and ",[385,12378,4587],{}," in its sign.",[7258,12381,1679,12382,4356,12385,12520,12521,12545,12546,12548],{},[385,12383,12384],{},"orientation test",[419,12386,12388],{"className":12387},[422],[419,12389,12391,12439,12466,12487,12508],{"className":12390,"ariaHidden":427},[426],[419,12392,12394,12397,12403,12406,12409,12412,12415,12418,12421,12424,12427,12430,12433,12436],{"className":12393},[431],[419,12395],{"className":12396,"style":575},[435],[419,12398,12400],{"className":12399},[526],[419,12401,4924],{"className":12402,"style":4951},[440,2118],[419,12404,580],{"className":12405},[579],[419,12407,620],{"className":12408},[440,553],[419,12410,589],{"className":12411},[588],[419,12413],{"className":12414,"style":593},[559],[419,12416,753],{"className":12417,"style":752},[440,553],[419,12419,589],{"className":12420},[588],[419,12422],{"className":12423,"style":593},[559],[419,12425,4977],{"className":12426,"style":4976},[440,553],[419,12428,603],{"className":12429},[602],[419,12431],{"className":12432,"style":560},[559],[419,12434,565],{"className":12435},[564],[419,12437],{"className":12438,"style":560},[559],[419,12440,12442,12445,12451,12454,12457,12460,12463],{"className":12441},[431],[419,12443],{"className":12444,"style":575},[435],[419,12446,12448],{"className":12447},[526],[419,12449,4558],{"className":12450},[440,2118],[419,12452,6051],{"className":12453},[579],[419,12455,753],{"className":12456,"style":752},[440,553],[419,12458],{"className":12459,"style":903},[559],[419,12461,486],{"className":12462},[907],[419,12464],{"className":12465,"style":903},[559],[419,12467,12469,12472,12475,12478,12481,12484],{"className":12468},[431],[419,12470],{"className":12471,"style":575},[435],[419,12473,620],{"className":12474},[440,553],[419,12476,603],{"className":12477},[602],[419,12479],{"className":12480,"style":903},[559],[419,12482,3984],{"className":12483},[907],[419,12485],{"className":12486,"style":903},[559],[419,12488,12490,12493,12496,12499,12502,12505],{"className":12489},[431],[419,12491],{"className":12492,"style":575},[435],[419,12494,580],{"className":12495},[579],[419,12497,4977],{"className":12498,"style":4976},[440,553],[419,12500],{"className":12501,"style":903},[559],[419,12503,486],{"className":12504},[907],[419,12506],{"className":12507,"style":903},[559],[419,12509,12511,12514,12517],{"className":12510},[431],[419,12512],{"className":12513,"style":575},[435],[419,12515,620],{"className":12516},[440,553],[419,12518,6118],{"className":12519},[602],"\nreports left\u002Fright\u002Fcollinear in ",[419,12522,12524],{"className":12523},[422],[419,12525,12527],{"className":12526,"ariaHidden":427},[426],[419,12528,12530,12533,12536,12539,12542],{"className":12529},[431],[419,12531],{"className":12532,"style":575},[435],[419,12534,6227],{"className":12535,"style":2126},[440,553],[419,12537,580],{"className":12538},[579],[419,12540,441],{"className":12541},[440],[419,12543,603],{"className":12544},[602]," exact integer arithmetic — ",[403,12547,4928],{},"\nprimitive that hull, intersection, and point-location all reduce to.",[7258,12550,12551,12554,12555,12557],{},[385,12552,12553],{},"Segments cross"," iff each straddles the other's line (opposite ",[6398,12556,4924],{}," signs on\nboth); collinear and touching cases fall to on-segment bounding-box checks.",[7258,12559,1679,12560,4356,12562,12836],{},[385,12561,8607],{},[419,12563,12565],{"className":12564},[422],[419,12566,12568,12744],{"className":12567,"ariaHidden":427},[426],[419,12569,12571,12574,12642,12687,12692,12695,12735,12738,12741],{"className":12570},[431],[419,12572],{"className":12573,"style":5002},[435],[419,12575,12577,12580,12639],{"className":12576},[440],[419,12578],{"className":12579},[579,8658],[419,12581,12583],{"className":12582},[8662],[419,12584,12586,12631],{"className":12585},[456,652],[419,12587,12589,12628],{"className":12588},[460],[419,12590,12592,12606,12614],{"className":12591,"style":9818},[464],[419,12593,12594,12597],{"style":9821},[419,12595],{"className":12596,"style":1719},[471],[419,12598,12600],{"className":12599},[476,477,478,479],[419,12601,12603],{"className":12602},[440,479],[419,12604,8685],{"className":12605},[440,479],[419,12607,12608,12611],{"style":8688},[419,12609],{"className":12610,"style":1719},[471],[419,12612],{"className":12613,"style":6498},[8695],[419,12615,12616,12619],{"style":9844},[419,12617],{"className":12618,"style":1719},[471],[419,12620,12622],{"className":12621},[476,477,478,479],[419,12623,12625],{"className":12624},[440,479],[419,12626,441],{"className":12627},[440,479],[419,12629,676],{"className":12630},[675],[419,12632,12634],{"className":12633},[460],[419,12635,12637],{"className":12636,"style":9866},[464],[419,12638],{},[419,12640],{"className":12641},[602,8658],[419,12643,12645],{"className":12644},[579],[419,12646,12648],{"className":12647},[5019,8735],[419,12649,12651,12678],{"className":12650},[456,652],[419,12652,12654,12675],{"className":12653},[460],[419,12655,12658],{"className":12656,"style":12657},[464],"height:0.85em;",[419,12659,12661,12665],{"style":12660},"top:-2.85em;",[419,12662],{"className":12663,"style":12664},[471],"height:3.2em;",[419,12666,12668],{"style":12667},"width:0.333em;height:1.2em;",[1739,12669,12672],{"xmlns":1741,"width":8758,"height":12670,"viewBox":12671},"1.2em","0 0 333 1200",[1748,12673],{"d":12674},"M145 15 v585 v0 v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v0 v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v0 v585 h43z",[419,12676,676],{"className":12677},[675],[419,12679,12681],{"className":12680},[460],[419,12682,12685],{"className":12683,"style":12684},[464],"height:0.35em;",[419,12686],{},[419,12688,8826],{"className":12689,"style":12691},[526,8824,12690],"small-op","position:relative;top:0em;",[419,12693],{"className":12694,"style":593},[559],[419,12696,12698,12701],{"className":12697},[440],[419,12699,555],{"className":12700,"style":554},[440,553],[419,12702,12704],{"className":12703},[452],[419,12705,12707,12727],{"className":12706},[456,652],[419,12708,12710,12724],{"className":12709},[460],[419,12711,12713],{"className":12712,"style":8884},[464],[419,12714,12715,12718],{"style":8450},[419,12716],{"className":12717,"style":472},[471],[419,12719,12721],{"className":12720},[476,477,478,479],[419,12722,8806],{"className":12723},[440,553,479],[419,12725,676],{"className":12726},[675],[419,12728,12730],{"className":12729},[460],[419,12731,12733],{"className":12732,"style":683},[464],[419,12734],{},[419,12736],{"className":12737,"style":903},[559],[419,12739,3984],{"className":12740},[907],[419,12742],{"className":12743,"style":903},[559],[419,12745,12747,12750,12799],{"className":12746},[431],[419,12748],{"className":12749,"style":5002},[435],[419,12751,12753,12756],{"className":12752},[440],[419,12754,555],{"className":12755,"style":554},[440,553],[419,12757,12759],{"className":12758},[452],[419,12760,12762,12791],{"className":12761},[456,652],[419,12763,12765,12788],{"className":12764},[460],[419,12766,12768],{"className":12767,"style":8884},[464],[419,12769,12770,12773],{"style":8450},[419,12771],{"className":12772,"style":472},[471],[419,12774,12776],{"className":12775},[476,477,478,479],[419,12777,12779,12782,12785],{"className":12778},[440,479],[419,12780,8806],{"className":12781},[440,553,479],[419,12783,908],{"className":12784},[907,479],[419,12786,441],{"className":12787},[440,479],[419,12789,676],{"className":12790},[675],[419,12792,12794],{"className":12793},[460],[419,12795,12797],{"className":12796,"style":8585},[464],[419,12798],{},[419,12800,12802],{"className":12801},[602],[419,12803,12805],{"className":12804},[5019,8735],[419,12806,12808,12828],{"className":12807},[456,652],[419,12809,12811,12825],{"className":12810},[460],[419,12812,12814],{"className":12813,"style":12657},[464],[419,12815,12816,12819],{"style":12660},[419,12817],{"className":12818,"style":12664},[471],[419,12820,12821],{"style":12667},[1739,12822,12823],{"xmlns":1741,"width":8758,"height":12670,"viewBox":12671},[1748,12824],{"d":12674},[419,12826,676],{"className":12827},[675],[419,12829,12831],{"className":12830},[460],[419,12832,12834],{"className":12833,"style":12684},[464],[419,12835],{}," is a sum of\ncross products giving area, and its sign reveals CCW vs. CW winding.",[7258,12838,12839,2405,12842,12845,12846,12848,12849,12882],{},[385,12840,12841],{},"Point-in-polygon",[385,12843,12844],{},"ray-casting parity"," or ",[385,12847,10543],{},"; a convex\npolygon admits an ",[419,12850,12852],{"className":12851},[422],[419,12853,12855],{"className":12854,"ariaHidden":427},[426],[419,12856,12858,12861,12864,12867,12873,12876,12879],{"className":12857},[431],[419,12859],{"className":12860,"style":575},[435],[419,12862,6227],{"className":12863,"style":2126},[440,553],[419,12865,580],{"className":12866},[579],[419,12868,12870],{"className":12869},[526],[419,12871,10625],{"className":12872,"style":4951},[440,2118],[419,12874],{"className":12875,"style":593},[559],[419,12877,8569],{"className":12878},[440,553],[419,12880,603],{"className":12881},[602]," orientation-based binary search.",[12884,12885,12888,12893],"section",{"className":12886,"dataFootnotes":376},[12887],"footnotes",[530,12889,12892],{"className":12890,"id":507},[12891],"sr-only","Footnotes",[12894,12895,12896,12910,12922],"ol",{},[7258,12897,12899,12902,12903],{"id":12898},"user-content-fn-clrs-primitives",[385,12900,12901],{},"CLRS",", Ch. 33 — Computational Geometry (§33.1): cross-product primitives, the orientation\u002Fturn test, and segment-intersection via straddling, all in exact arithmetic to avoid round-off. ",[390,12904,12909],{"href":12905,"ariaLabel":12906,"className":12907,"dataFootnoteBackref":376},"#user-content-fnref-clrs-primitives","Back to reference 1",[12908],"data-footnote-backref","↩",[7258,12911,12913,12916,12917],{"id":12912},"user-content-fn-skiena-area",[385,12914,12915],{},"Skiena",", § — Computational Geometry: the shoelace (surveyor's) formula for polygon area as a sum of cross products, whose sign gives vertex orientation. ",[390,12918,12909],{"href":12919,"ariaLabel":12920,"className":12921,"dataFootnoteBackref":376},"#user-content-fnref-skiena-area","Back to reference 2",[12908],[7258,12923,12925,12928,12929,12962,12963],{"id":12924},"user-content-fn-erickson-pip",[385,12926,12927],{},"Erickson",", Ch. — (geometry): point-in-polygon by ray-crossing parity and winding number, and the ",[419,12930,12932],{"className":12931},[422],[419,12933,12935],{"className":12934,"ariaHidden":427},[426],[419,12936,12938,12941,12944,12947,12953,12956,12959],{"className":12937},[431],[419,12939],{"className":12940,"style":575},[435],[419,12942,6227],{"className":12943,"style":2126},[440,553],[419,12945,580],{"className":12946},[579],[419,12948,12950],{"className":12949},[526],[419,12951,10625],{"className":12952,"style":4951},[440,2118],[419,12954],{"className":12955,"style":593},[559],[419,12957,8569],{"className":12958},[440,553],[419,12960,603],{"className":12961},[602]," convex case via orientation-guided binary search. ",[390,12964,12909],{"href":12965,"ariaLabel":12966,"className":12967,"dataFootnoteBackref":376},"#user-content-fnref-erickson-pip","Back to reference 3",[12908],[12969,12970,12971],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}html.dark-mode .shiki span {color: var(--shiki-dark-mode);background: var(--shiki-dark-mode-bg);font-style: var(--shiki-dark-mode-font-style);font-weight: var(--shiki-dark-mode-font-weight);text-decoration: var(--shiki-dark-mode-text-decoration);}",{"title":376,"searchDepth":18,"depth":18,"links":12973},[12974,12975,12976,12977,12978,12979,12980,12981,12982],{"id":532,"depth":18,"text":533},{"id":1675,"depth":18,"text":1676},{"id":3918,"depth":18,"text":3919},{"id":4897,"depth":18,"text":4898},{"id":6443,"depth":18,"text":6444},{"id":8411,"depth":18,"text":8412},{"id":10456,"depth":18,"text":10457},{"id":11705,"depth":18,"text":11706},{"id":507,"depth":18,"text":12892},"This lesson opens the computational geometry module, where the objects are\npoints, segments, and polygons in the plane rather than numbers or graphs. The\nalgorithms ahead, including convex hulls,\nsweep-line intersection, and\nclosest pairs, look involved, but\nthey nearly all rest on one tiny operation asked over and over:\ngiven three points, does the path through them turn left or right? Get that\nprimitive exactly right and the rest is bookkeeping; get it subtly wrong and\nevery structure built on top inherits the error.","md",{"moduleNumber":333,"lessonNumber":6,"order":12986},1101,true,[12989,12993,12996,12999],{"title":12990,"slug":12991,"difficulty":12992},"Check If It Is a Straight Line","check-if-it-is-a-straight-line","Easy",{"title":12994,"slug":12995,"difficulty":12992},"Valid Boomerang","valid-boomerang",{"title":12997,"slug":12998,"difficulty":12992},"Largest Triangle Area","largest-triangle-area",{"title":13000,"slug":13001,"difficulty":13002},"Minimum Area Rectangle","minimum-area-rectangle","Medium","---\ntitle: Geometric Primitives & Orientation\nmodule: Computational Geometry\nmoduleNumber: 11\nlessonNumber: 1\norder: 1101\nsummary: >-\n  Computational geometry is built on a single reliable primitive — the\n  **orientation test**, a sign of a cross product that tells whether three points\n  turn left, right, or lie collinear. From points-as-vectors and the dot and\n  cross products we derive orientation, segment intersection, the shoelace area\n  formula, and point-in-polygon tests, keeping all arithmetic **exact and\n  integer** so that no floating-point rounding can corrupt a sign.\ntopics: [Geometry]\nsources:\n  - book: CLRS\n    ref: \"Ch. 33 — Computational Geometry (§33.1)\"\n  - book: Skiena\n    ref: \"§ — Computational Geometry\"\n  - book: Erickson\n    ref: \"Ch. — (geometry)\"\npractice:\n  - title: 'Check If It Is a Straight Line'\n    slug: check-if-it-is-a-straight-line\n    difficulty: Easy\n  - title: 'Valid Boomerang'\n    slug: valid-boomerang\n    difficulty: Easy\n  - title: 'Largest Triangle Area'\n    slug: largest-triangle-area\n    difficulty: Easy\n  - title: 'Minimum Area Rectangle'\n    slug: minimum-area-rectangle\n    difficulty: Medium\n---\n\nThis lesson opens the **computational geometry** module, where the objects are\npoints, segments, and polygons in the plane rather than numbers or graphs. The\nalgorithms ahead, including [convex hulls](\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull),\n[sweep-line intersection](\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line), and\n[closest pairs](\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection), look involved, but\nthey nearly all rest on one tiny operation asked over and over:\n_given three points, does the path through them turn left or right?_ Get that\nprimitive exactly right and the rest is bookkeeping; get it subtly wrong and\nevery structure built on top inherits the error.\n\nThe central design decision of this lesson is therefore **exact arithmetic**.\nThe natural geometric quantities (angles, lengths, slopes) are irrational and\nforce floating point, where a quantity that _should_ be zero comes out as\n$10^{-16}$ and a collinearity test flips the wrong way. We avoid them. With\ninteger input coordinates, the orientation and area primitives below are\n**polynomials in the coordinates**, so they evaluate to _exact integers_ and\ntheir signs are never in doubt.[^clrs-primitives] Slopes, square roots, and\n$\\arctan$ never appear.\n\n## Points as vectors\n\nWe identify a point $P = (x, y)$ with the vector from the origin to it, which\nlets us do arithmetic on geometry. For points $A = (a_x, a_y)$ and\n$B = (b_x, b_y)$ and a scalar $t$:\n\n$$\nA + B = (a_x + b_x,\\; a_y + b_y), \\qquad\nB - A = (b_x - a_x,\\; b_y - a_y), \\qquad\ntA = (t\\,a_x,\\; t\\,a_y).\n$$\n\nThe subtraction $B - A$ is the one that does the work: it is the **displacement vector**\npointing from $A$ to $B$, and almost every primitive below is phrased in terms of\nsuch difference vectors anchored at a common point. If $A$, $B$ have integer\ncoordinates, so does $B - A$, and exactness is preserved by every one of these\noperations.\n\n## The dot product: angle and projection\n\nThe **dot product** of two vectors measures how much they point the same way:\n\n$$\n\\vec a \\cdot \\vec b \\;=\\; a_x b_x + a_y b_y \\;=\\; |\\vec a|\\,|\\vec b|\\cos\\theta,\n$$\n\nwhere $\\theta$ is the angle between them. The second equality is the useful one\nin reverse: because $|\\vec a|, |\\vec b| > 0$, the **sign of the dot product is the\nsign of $\\cos\\theta$**, so it classifies the angle without ever computing it.\n\n> **Fact (Acute-angle test).** The angle between $\\vec a$ and $\\vec b$ is **acute** iff $\\vec a \\cdot \\vec b > 0$,\n> **right** (perpendicular) iff $\\vec a \\cdot \\vec b = 0$, and **obtuse** iff\n> $\\vec a \\cdot \\vec b \u003C 0$.\n\nThree uses recur. _Projection_: the scalar projection of $\\vec b$ onto $\\vec a$ is\n$(\\vec a \\cdot \\vec b)\u002F|\\vec a|$, the signed length of $\\vec b$'s shadow along\n$\\vec a$. _Perpendicularity_: $\\vec a \\perp \\vec b \\iff \\vec a \\cdot \\vec b = 0$,\nan exact integer test. _Angle_: $\\cos\\theta = (\\vec a \\cdot \\vec b)\u002F(|\\vec a||\\vec b|)$\nwhen the actual angle is genuinely needed (the one place a square root sneaks in).\nNote the dot product is symmetric and tells us nothing about _which side_ one\nvector lies on; for that we need its companion.\n\n$$\n% caption: The dot product is the signed length of $\\vec b$'s shadow on $\\vec a$ times\n%          $|\\vec a|$\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\node[dot, label=below left:$O$] (O) at (0,0) {};\n  \\draw[->, thick] (O) -- (4,0) node[midway, below] {$\\vec a$};\n  \\draw[->, acc, thick] (O) -- (3,2) node[above left] {$\\vec b$};\n  \\node[dot] (F) at (3,0) {};\n  \\draw[dashed] (3,2) -- (F);\n  \\draw[acc, very thick] (0,-0.45) -- (3,-0.45);\n  \\node[acc, font=\\footnotesize] at (1.5,-0.85) {proj $=\\dfrac{\\vec a\\cdot\\vec b}{|\\vec a|}=3$};\n  \\draw (2.78,0) -- (2.78,0.22) -- (3,0.22);\n  \\node[font=\\footnotesize] at (0.95,0.3) {$\\theta$};\n\\end{tikzpicture}\n$$\n\n## The cross product: signed area and orientation\n\nIn the plane the **cross product** of two vectors is a single scalar:\n\n$$\n\\vec a \\times \\vec b \\;=\\; a_x b_y - a_y b_x \\;=\\; |\\vec a|\\,|\\vec b|\\sin\\theta.\n$$\n\nIts **magnitude** $|\\vec a \\times \\vec b|$ equals the area of the parallelogram\nspanned by $\\vec a$ and $\\vec b$ (and twice the area of the triangle they form).\nIts **sign** is the sign of $\\sin\\theta$, which encodes _orientation_: positive\nwhen $\\vec b$ lies counterclockwise from $\\vec a$, negative when clockwise, zero\nwhen the two are parallel (collinear). Unlike the dot product, the cross product\nis **antisymmetric**: $\\vec a \\times \\vec b = -(\\vec b \\times \\vec a)$. This single\nquantity, an exact integer for integer inputs, is the seed of nearly everything\nthat follows.\n\n## The orientation test\n\nAnchor two difference vectors at a common point $A$ and take their cross product.\nThis is the **orientation** (or \"ccw\") test, _the_ fundamental primitive of\nplanar computational geometry:\n\n$$\n\\operatorname{ccw}(A, B, C) \\;=\\; \\operatorname{sign}\\!\\bigl((B - A) \\times (C - A)\\bigr)\n\\;=\\; \\operatorname{sign}\\!\\bigl((b_x - a_x)(c_y - a_y) - (b_y - a_y)(c_x - a_x)\\bigr).\n$$\n\nIt reports the sense of the turn made by the directed path $A \\to B \\to C$:\n\n> **Fact (Left turn test).** $\\operatorname{ccw}(A,B,C) = +1$: the points make a **left turn** (counterclockwise).\n> $\\operatorname{ccw}(A,B,C) = -1$: a **right turn** (clockwise).\n> $\\operatorname{ccw}(A,B,C) = 0$: the three points are **collinear**.\n\n$$\n% caption: $\\operatorname{sign}((B-A)\\times(C-A))$ is the turn direction at $A\\to B\\to C$\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % parallelogram spanned by (B-A) and (C-A), shaded\n  \\fill[acc, opacity=0.12] (0,0) -- (3.2,0.4) -- (4.0,2.4) -- (0.8,2.0) -- cycle;\n  % the two anchored vectors\n  \\node[dot, label=below left:$A$] (A) at (0,0) {};\n  \\node[dot, label=below right:$B$] (B) at (3.2,0.4) {};\n  \\node[dot, label=above:$C$] (C) at (0.8,2.0) {};\n  \\draw[->, acc, thick] (A) -- (B) node[midway, below] {$B-A$};\n  \\draw[->, acc, thick] (A) -- (C) node[midway, left] {$C-A$};\n  % the left turn highlighted\n  \\draw[->, acc, very thick] (B) to[bend left=18] (C);\n  \\node[acc] at (2.9,1.9) {left turn $(+)$};\n  % a right-turn alternative below (discarded sense -> red)\n  \\node[dot, label=below:$C'$] (Cp) at (3.6,-1.1) {};\n  \\draw[->, red!75!black, thick] (B) to[bend right=15] (Cp);\n  \\node[red!75!black] at (4.5,-0.5) {right $(-)$};\n\\end{tikzpicture}\n$$\n\nThree properties make this primitive so powerful. It uses **only additions and\nmultiplications** of the input coordinates, so for integer inputs it is exact. It\nis **antisymmetric** in a way that respects the geometry: swapping $B$ and $C$\nflips the sign, matching the reversal of the turn. And it answers, in $O(1)$, the\nquestion every higher geometric algorithm reduces to — _which side of the line\n$AB$ does $C$ lie on?_ The collinearity test \"are $A$, $B$, $C$ on one line?\" is\njust $\\operatorname{ccw}(A,B,C) = 0$, with no division by a slope and hence no\nvertical-line special case.\n\n```algorithm\ncaption: $\\textsc{Orientation}(A, B, C)$ — sign of the turn, exact integer arithmetic\n$d \\gets (b_x - a_x)(c_y - a_y) - (b_y - a_y)(c_x - a_x)$\nif $d > 0$ then\n  return $+1$   \u002F\u002F left turn\nelse if $d \u003C 0$ then\n  return $-1$   \u002F\u002F right turn\nelse\n  return $0$    \u002F\u002F collinear\n```\n\n## Segment intersection\n\nWhen do two segments $\\overline{AB}$ and $\\overline{CD}$ cross? The slope-and-solve\napproach drags in division and degenerate cases; orientation makes it a handful of\nsign comparisons. The key idea is **straddling**: segment $\\overline{AB}$ _straddles_\nthe line through $C$ and $D$ when its endpoints fall on opposite sides of that\nline, that is, when $\\operatorname{ccw}(C,D,A)$ and $\\operatorname{ccw}(C,D,B)$\nhave _opposite signs_.\n\n> **Claim (proper intersection).** Segments $\\overline{AB}$ and $\\overline{CD}$\n> intersect at an interior point iff each straddles the other's supporting line:\n> $$\\operatorname{ccw}(A,B,C)\\cdot\\operatorname{ccw}(A,B,D) \u003C 0 \\quad\\text{and}\\quad \\operatorname{ccw}(C,D,A)\\cdot\\operatorname{ccw}(C,D,B) \u003C 0.$$\n\n_Why._ If $C$ and $D$ are strictly on opposite sides of line $AB$, the open\nsegment $\\overline{CD}$ crosses that line exactly once, at some point $P$; the\nsymmetric condition forces $P$ to also lie strictly between $A$ and $B$. Both\nproducts being negative pins the crossing to the interior of _both_ segments. The\ntwo `ccw` evaluations are exact integers, so this test has **no rounding error**\nand never computes the intersection point itself.\n\nThe boundary, when some `ccw` is $0$ and three points are collinear, needs\ncare, and is where naive implementations break. The case logic:\n\n- **All four products nonzero** (the generic case): intersect iff both products\n  are strictly negative, as above.\n- **Exactly one $\\operatorname{ccw}$ is $0$**, say $\\operatorname{ccw}(A,B,C)=0$:\n  then $C$ lies _on the line_ $AB$; the segments touch iff $C$ lies _on the segment_\n  $\\overline{AB}$, i.e. $C$'s coordinates are within the bounding box of $A$ and\n  $B$ (an `on-segment` check: $\\min(a_x,b_x)\\le c_x\\le\\max(a_x,b_x)$ and likewise\n  for $y$).\n- **The segments are collinear** (all four `ccw` vanish): they overlap iff their\n  $1$-D projections onto the $x$-axis (or $y$, if vertical) overlap, again a\n  bounding-box \u002F interval-overlap test, no geometry beyond comparisons.\n\n```algorithm\ncaption: $\\textsc{SegmentsIntersect}(A,B,C,D)$ — proper crossings plus collinear\u002Ftouching\n$d_1 \\gets \\textsc{Orientation}(C,D,A);\\ \\ d_2 \\gets \\textsc{Orientation}(C,D,B)$\n$d_3 \\gets \\textsc{Orientation}(A,B,C);\\ \\ d_4 \\gets \\textsc{Orientation}(A,B,D)$\nif $d_1 d_2 \u003C 0$ and $d_3 d_4 \u003C 0$ then\n  return true   \u002F\u002F proper crossing\nif $d_1 = 0$ and $\\textsc{OnSegment}(C,D,A)$ then return true\nif $d_2 = 0$ and $\\textsc{OnSegment}(C,D,B)$ then return true\nif $d_3 = 0$ and $\\textsc{OnSegment}(A,B,C)$ then return true\nif $d_4 = 0$ and $\\textsc{OnSegment}(A,B,D)$ then return true\nreturn false\n```\n\n$$\n% caption: $\\overline{AB},\\overline{CD}$ cross iff each straddles the other\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % crossing pair\n  \\node[dot, label=left:$A$]  (A) at (0,0)   {};\n  \\node[dot, label=right:$B$] (B) at (3,1.6) {};\n  \\node[dot, label=above:$C$] (C) at (0.4,1.8){};\n  \\node[dot, label=below:$D$] (D) at (2.8,-0.2){};\n  \\draw[thick] (A) -- (B);\n  \\draw[thick] (C) -- (D);\n  \\node[dot, fill=acc] (X) at (1.62,0.86) {};\n  \\node[acc] at (1.9,1.35) {$\\times$};\n  \\node[font=\\footnotesize] at (-0.4,-0.8) {$\\operatorname{ccw}(A,B,C){>}0,\\ \\operatorname{ccw}(A,B,D){\u003C}0$};\n  \\node[font=\\footnotesize] at (-0.4,-1.25) {$\\operatorname{ccw}(C,D,A){\u003C}0,\\ \\operatorname{ccw}(C,D,B){>}0$};\n  % non-crossing \u002F collinear case to the right\n  \\begin{scope}[xshift=6.2cm]\n    \\node[dot, label=left:$A$]  (A2) at (0,0)   {};\n    \\node[dot, label=right:$B$] (B2) at (2.6,0) {};\n    \\node[dot, label=left:$C$]  (C2) at (0.6,0.9){};\n    \\node[dot, label=right:$D$] (D2) at (2.4,0.9){};\n    \\draw[thick] (A2) -- (B2);\n    \\draw[thick] (C2) -- (D2);\n    \\node[font=\\footnotesize] at (1.3,-0.7) {same side $\\Rightarrow$ no cross};\n  \\end{scope}\n\\end{tikzpicture}\n$$\n\n## Polygon area: the shoelace formula\n\nGiven a polygon as an ordered list of vertices $P_0, P_1, \\dots, P_{n-1}$ (indices\nmodulo $n$), its area is the **shoelace formula**:\n\n$$\n\\text{Area} \\;=\\; \\frac12\\left|\\sum_{i=0}^{n-1}\\bigl(x_i\\, y_{i+1} - x_{i+1}\\, y_i\\bigr)\\right|\n\\;=\\; \\frac12\\left|\\sum_{i=0}^{n-1} P_i \\times P_{i+1}\\right|.\n$$\n\nEach term $x_i y_{i+1} - x_{i+1} y_i$ is exactly the cross product $P_i \\times P_{i+1}$,\nso the area is _a sum of cross products, halved_.\n\n> **Intuition.** $\\frac12(P_i \\times P_{i+1})$ is the signed area of the triangle\n> $O P_i P_{i+1}$ from the origin. As $i$ sweeps the boundary, the triangles\n> outside the polygon are swept once forward and once backward and cancel, leaving\n> exactly the enclosed area. The origin need not be inside the polygon — the signs\n> handle it.\n\nDrop the absolute value and the **sign of the sum carries orientation**: positive\nmeans the vertices are listed **counterclockwise**, negative means **clockwise**.\nThis is the cheapest way to detect the winding direction of a polygon, and because\nthe sum is an integer for integer vertices, the area comes out as an exact\nhalf-integer.[^skiena-area]\n\n$$\n% caption: Shoelace sums signed triangles $\\tfrac12(P_i\\times P_{i+1})$ from $O$; exterior\n%          sweeps cancel\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % each signed triangle gets its own hue so the faces read apart; warm red = the\n  % negative (exterior) sweep that cancels, cool blue\u002Fgreen = the two positive faces.\n  % SOLID theme tints (no opacity, no white label boxes) so the pipeline remaps them\n  % cleanly for dark mode — opacity blends against white and bakes in a light cast.\n  \\node[dot, label=below left:$O$] (O) at (0,0) {};\n  \\node[dot, label=below:$P_0$] (P0) at (1,0.5) {};\n  \\node[dot, label=right:$P_1$] (P1) at (4,1) {};\n  \\node[dot, label=above:$P_2$] (P2) at (2.5,3) {};\n  \\fill[acc!20] (O.center) -- (P0.center) -- (P1.center) -- cycle;\n  \\fill[green!30] (O.center) -- (P1.center) -- (P2.center) -- cycle;\n  \\fill[red!25] (O.center) -- (P2.center) -- (P0.center) -- cycle;\n  \\draw[acc, very thick] (P0) -- (P1) -- (P2) -- cycle;\n  \\draw[dashed] (O) -- (P0);\n  \\draw[dashed] (O) -- (P1);\n  \\draw[dashed] (O) -- (P2);\n  \\node[font=\\footnotesize, acc] at (2.45,0.5) {$+$};\n  \\node[font=\\footnotesize, green!55!black] at (3.05,1.7) {$+$};\n  \\node[font=\\footnotesize, red!75!black] at (1.2,1.5) {$-$};\n\\end{tikzpicture}\n$$\n\n## Point in polygon\n\nIs a query point $q$ inside a polygon? Two exact strategies, both built from the\nprimitives above. **Ray casting** shoots a ray from $q$ in a fixed direction (say\n$+x$) and counts how many polygon edges it crosses: an **odd** count means $q$ is\ninside, **even** means outside — the Jordan-curve parity argument. Each\nray-vs-edge crossing is decided with the same straddle\u002Forientation tests, with\ncareful tie-breaking when the ray grazes a vertex (count an edge only if exactly\none endpoint is strictly above the ray). The **winding number** alternative sums\nthe signed angles the polygon's edges subtend at $q$ (computed from cross- and\ndot-product signs, not actual angles); a total winding of $0$ means outside,\n$\\pm 1$ means inside, and unlike parity it stays correct for self-intersecting\npolygons. For a **convex** polygon both can be sped up to $O(\\log n)$: binary-search\nthe vertex fan around $P_0$ to find the wedge containing $q$ using orientation\ntests, then one final `ccw` against the bounding edge decides inside vs. outside.[^erickson-pip]\n\n$$\n% caption: Ray casting: a $+x$ ray crossing an odd count of edges means inside\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth, scale=0.9]\n  \\definecolor{acc}{HTML}{2348F2}\n  \\draw[thick]\n    (0,0) -- (5,0) -- (5,4) -- (2.5,2) -- (0,4) -- cycle;\n  \\node[dot, fill=acc, label={[fill=white, inner sep=1pt]above left:$q$}] (q) at (0.6,3) {};\n  \\draw[acc, very thick, ->] (q) -- (6.0,3);\n  \\fill[acc] (1.25,3) circle (1.4pt);\n  \\fill[acc] (3.75,3) circle (1.4pt);\n  \\fill[acc] (5,3)    circle (1.4pt);\n  % count labels sit clear to the right of each ray (the polygon ends at x=5)\n  \\node[acc, font=\\footnotesize, anchor=west] at (6.15,3.18) {odd ($3$) $\\Rightarrow$ inside};\n  % q' is just above the notch vertex, hence OUTSIDE; label it down in the clear left lobe\n  \\node[dot] (q2) at (2.5,2.5) {};\n  \\node[font=\\small] (q2l) at (1.75,1.95) {$q'$};\n  \\draw[thin, gray] (q2l) -- (q2);\n  \\draw[dashed, ->] (q2) -- (6.0,2.5);\n  \\fill (3.125,2.5) circle (1.4pt);\n  \\fill (5,2.5) circle (1.4pt);\n  \\node[font=\\footnotesize, anchor=west] at (6.15,2.32) {even ($2$) $\\Rightarrow$ outside};\n\\end{tikzpicture}\n$$\n\nFor a convex polygon the fan of diagonals from $P_0$ cuts the interior into\ntriangular wedges in angular order, so a single binary search on\n$\\operatorname{ccw}(P_0, P_i, q)$ locates the wedge $\\langle P_k, P_{k+1}\\rangle$\nthat could contain $q$; one last orientation test against the edge\n$\\overline{P_k P_{k+1}}$ decides inside vs. outside.\n\n$$\n% caption: Convex $O(\\log n)$ point location: binary-search the fan from $P_0$ for $q$'s\n%          wedge, then one $\\operatorname{ccw}$ on the far edge\n\\begin{tikzpicture}[\n  every node\u002F.style={font=\\small},\n  dot\u002F.style={circle, fill, inner sep=1.3pt},\n  >=stealth]\n  \\definecolor{acc}{HTML}{2348F2}\n  % convex polygon, vertices in CCW order around P0 at lower left\n  \\node[dot, label=below left:$P_0$]  (P0) at (0,0)     {};\n  \\node[dot, label=below:$P_1$]       (P1) at (3.4,-0.2){};\n  \\node[dot, label=right:$P_2$]       (P2) at (4.6,1.8) {};\n  \\node[dot, label=above:$P_3$]       (P3) at (2.8,3.4) {};\n  \\node[dot, label=above left:$P_4$]  (P4) at (0.6,3.0) {};\n  % the located wedge, shaded\n  \\fill[acc, opacity=0.15] (P0.center) -- (P2.center) -- (P3.center) -- cycle;\n  \\draw[acc, very thick] (P0) -- (P1) -- (P2) -- (P3) -- (P4) -- cycle;\n  % the diagonal fan from P0 (binary-search rays)\n  \\draw[dashed] (P0) -- (P2);\n  \\draw[dashed] (P0) -- (P3);\n  % query point inside the located wedge\n  \\node[dot, fill=acc, label={[fill=white, inner sep=1pt]right:$q$}] (q) at (2.7,1.9) {};\n  % the deciding edge highlighted in red (the final ccw)\n  \\draw[red!75!black, very thick] (P2) -- (P3);\n  \\node[red!75!black, font=\\footnotesize, align=center] at (5.0,3.1)\n    {final $\\operatorname{ccw}$\\\\on $\\overline{P_2P_3}$};\n  \\draw[red!75!black, ->, thick] (4.55,2.85) to[bend right=14] (3.75,2.65);\n  \\node[acc, font=\\footnotesize] at (1.55,1.35) {wedge $\\langle P_2,P_3\\rangle$};\n\\end{tikzpicture}\n$$\n\n## Takeaways\n\n- Treat **points as vectors**; the difference $B - A$ is the displacement that\n  almost every primitive is built from, and integer inputs stay integer.\n- The **dot product** $\\vec a\\cdot\\vec b = a_xb_x+a_yb_y$ has the sign of\n  $\\cos\\theta$: positive\u002Fzero\u002Fnegative $\\Rightarrow$ acute\u002Fright\u002Fobtuse — it\n  handles projection, perpendicularity, and angle.\n- The **cross product** $\\vec a\\times\\vec b = a_xb_y-a_yb_x$ gives signed\n  parallelogram area in its magnitude and **orientation** in its sign.\n- The **orientation test** $\\operatorname{ccw}(A,B,C)=\\operatorname{sign}((B-A)\\times(C-A))$\n  reports left\u002Fright\u002Fcollinear in $O(1)$ exact integer arithmetic — _the_\n  primitive that hull, intersection, and point-location all reduce to.\n- **Segments cross** iff each straddles the other's line (opposite `ccw` signs on\n  both); collinear and touching cases fall to on-segment bounding-box checks.\n- The **shoelace formula** $\\frac12\\bigl|\\sum P_i\\times P_{i+1}\\bigr|$ is a sum of\n  cross products giving area, and its sign reveals CCW vs. CW winding.\n- **Point-in-polygon** is **ray-casting parity** or **winding number**; a convex\n  polygon admits an $O(\\log n)$ orientation-based binary search.\n\n[^clrs-primitives]: **CLRS**, Ch. 33 — Computational Geometry (§33.1): cross-product primitives, the orientation\u002Fturn test, and segment-intersection via straddling, all in exact arithmetic to avoid round-off.\n[^skiena-area]: **Skiena**, § — Computational Geometry: the shoelace (surveyor's) formula for polygon area as a sum of cross products, whose sign gives vertex orientation.\n[^erickson-pip]: **Erickson**, Ch. — (geometry): point-in-polygon by ray-crossing parity and winding number, and the $O(\\log n)$ convex case via orientation-guided binary search.\n",{"text":13005,"minutes":13006,"time":13007,"words":13008},"8 min read",7.475,448500,1495,{"title":337,"description":12983},[13011,13013,13015],{"book":12901,"ref":13012},"Ch. 33 — Computational Geometry (§33.1)",{"book":12915,"ref":13014},"§ — Computational Geometry",{"book":12927,"ref":13016},"Ch. — (geometry)","available","01.algorithms\u002F11.computational-geometry\u002F01.geometric-primitives",[340],"VzJ9PxqZIh_um-SKGfkaRX0eBF0HddISPbaq6FtEebQ",{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":13022,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":13023,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":13024,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":13025,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":13026,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":13027,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":13028,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":13029,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":13030,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":13031,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":13032,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":13033,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":13034,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":13035,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":13036,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":13037,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":13038,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":13039,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":13040,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":13041,"\u002Falgorithms\u002Fsequences\u002Ftries":13042,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":13043,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":13044,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":13045,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":13046,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":13047,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":13048,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":13049,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":13050,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":13051,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":13052,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":13053,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":13054,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":13055,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":13056,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":13057,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":13058,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":13059,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":13060,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":13061,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":13062,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":13063,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":13064,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":13065,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":13066,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":13067,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":13068,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":13038,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":13069,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":13070,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":13071,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":13008,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":13054,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":13072,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":13073,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":13034,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":13074,"\u002Falgorithms":13075,"\u002Ftheory-of-computation":13076,"\u002Fcomputer-architecture":13076,"\u002Fphysical-computing":13076,"\u002Fdatabases":13076,"\u002Fdeep-learning":13076},1763,2107,1738,2628,1723,2048,1697,1044,1542,1565,1679,1586,1388,1465,1971,1455,1533,1483,1578,1791,1481,2704,1658,2070,1978,2080,1568,1451,1291,1543,1883,1443,1599,2038,2241,1744,1678,2288,1929,1657,1412,1554,1418,1713,1798,1694,1762,1534,1595,1262,1630,2306,2142,107,0,{"\u002Falgorithms\u002Ffoundations\u002Fwhat-is-an-algorithm":13078,"\u002Falgorithms\u002Ffoundations\u002Fasymptotic-analysis":13079,"\u002Falgorithms\u002Ffoundations\u002Frecurrences":13080,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fmergesort":13081,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fquicksort":13082,"\u002Falgorithms\u002Fdivide-and-conquer\u002Fselection":13083,"\u002Falgorithms\u002Fsorting\u002Fheaps-and-heapsort":13084,"\u002Falgorithms\u002Fsorting\u002Fsorting-lower-bounds":13085,"\u002Falgorithms\u002Fsorting\u002Flinear-time-sorting":13086,"\u002Falgorithms\u002Fdata-structures\u002Felementary-structures":13087,"\u002Falgorithms\u002Fdata-structures\u002Fhash-tables":13088,"\u002Falgorithms\u002Fdata-structures\u002Fbinary-search-trees":13089,"\u002Falgorithms\u002Fdata-structures\u002Favl-trees":13090,"\u002Falgorithms\u002Fdata-structures\u002Fbalanced-trees":13091,"\u002Falgorithms\u002Fdata-structures\u002Funion-find":13092,"\u002Falgorithms\u002Fdata-structures\u002Ffenwick-and-segment-trees":13093,"\u002Falgorithms\u002Fsequences\u002Ftwo-pointers-and-windows":13094,"\u002Falgorithms\u002Fsequences\u002Fmonotonic-stacks":13095,"\u002Falgorithms\u002Fsequences\u002Fbinary-search-on-the-answer":13096,"\u002Falgorithms\u002Fsequences\u002Fstring-matching":13097,"\u002Falgorithms\u002Fsequences\u002Ftries":13098,"\u002Falgorithms\u002Fgraphs\u002Frepresentations-and-traversal":13099,"\u002Falgorithms\u002Fgraphs\u002Ftopological-sort-and-scc":13100,"\u002Falgorithms\u002Fgraphs\u002Fminimum-spanning-trees":13101,"\u002Falgorithms\u002Fgraphs\u002Fshortest-paths":13102,"\u002Falgorithms\u002Fgraphs\u002Fnetwork-flow":13103,"\u002Falgorithms\u002Fgraphs\u002Fbridges-and-articulation-points":13104,"\u002Falgorithms\u002Fgraphs\u002Flowest-common-ancestor":13105,"\u002Falgorithms\u002Fgraphs\u002Ftwo-sat":13106,"\u002Falgorithms\u002Fgraphs\u002Feulerian-tours":13107,"\u002Falgorithms\u002Fgreedy\u002Fthe-greedy-method":13108,"\u002Falgorithms\u002Fgreedy\u002Fscheduling-and-intervals":13109,"\u002Falgorithms\u002Fgreedy\u002Fhuffman-codes":13110,"\u002Falgorithms\u002Fgreedy\u002Fmatroids":13111,"\u002Falgorithms\u002Fdynamic-programming\u002Fprinciples":13112,"\u002Falgorithms\u002Fdynamic-programming\u002Fsequence-dp":13113,"\u002Falgorithms\u002Fdynamic-programming\u002Flongest-increasing-subsequence":13114,"\u002Falgorithms\u002Fdynamic-programming\u002Fknapsack":13115,"\u002Falgorithms\u002Fdynamic-programming\u002Fcoin-change-and-unbounded":13116,"\u002Falgorithms\u002Fdynamic-programming\u002Finterval-dp":13117,"\u002Falgorithms\u002Fdynamic-programming\u002Ftree-dp":13118,"\u002Falgorithms\u002Fdynamic-programming\u002Fbitmask-dp":13119,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-optimizations":13120,"\u002Falgorithms\u002Fdynamic-programming\u002Fdp-on-graphs":13121,"\u002Falgorithms\u002Fbacktracking\u002Fbacktracking-fundamentals":13122,"\u002Falgorithms\u002Fbacktracking\u002Fconstraint-search":13123,"\u002Falgorithms\u002Fbacktracking\u002Fbranch-and-bound":13124,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fnumber-theory-basics":13125,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fmodular-exponentiation-and-primality":13126,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fsieve-and-factorization":13127,"\u002Falgorithms\u002Fmathematical-algorithms\u002Fcombinatorics":13128,"\u002Falgorithms\u002Fcomputational-geometry\u002Fgeometric-primitives":13129,"\u002Falgorithms\u002Fcomputational-geometry\u002Fconvex-hull":13130,"\u002Falgorithms\u002Fcomputational-geometry\u002Fsweep-line":13131,"\u002Falgorithms\u002Fintractability\u002Fp-np-reductions":13132,"\u002Falgorithms\u002Fintractability\u002Fnp-completeness":13133,"\u002Falgorithms\u002Fintractability\u002Fcoping-with-hardness":13134,"\u002Falgorithms":13135,"\u002Ftheory-of-computation":13138,"\u002Fcomputer-architecture":13141,"\u002Fphysical-computing":13144,"\u002Fdatabases":13147,"\u002Fdeep-learning":13150},{"path":11,"title":10,"module":5,"summary":14},{"path":17,"title":16,"module":5,"summary":20},{"path":23,"title":22,"module":5,"summary":27},{"path":34,"title":33,"module":29,"summary":37},{"path":40,"title":39,"module":29,"summary":43},{"path":46,"title":45,"module":29,"summary":49},{"path":56,"title":55,"module":51,"summary":59},{"path":62,"title":61,"module":51,"summary":64},{"path":67,"title":66,"module":51,"summary":70},{"path":78,"title":77,"module":72,"summary":81},{"path":84,"title":83,"module":72,"summary":87},{"path":90,"title":89,"module":72,"summary":92},{"path":95,"title":94,"module":72,"summary":98},{"path":101,"title":100,"module":72,"summary":104},{"path":107,"title":106,"module":72,"summary":112},{"path":115,"title":114,"module":72,"summary":119},{"path":126,"title":125,"module":121,"summary":129},{"path":132,"title":131,"module":121,"summary":134},{"path":137,"title":136,"module":121,"summary":140},{"path":143,"title":142,"module":121,"summary":146},{"path":149,"title":148,"module":121,"summary":151},{"path":158,"title":157,"module":153,"summary":162},{"path":165,"title":164,"module":153,"summary":167},{"path":170,"title":169,"module":153,"summary":172},{"path":175,"title":174,"module":153,"summary":177},{"path":180,"title":179,"module":153,"summary":182},{"path":185,"title":184,"module":153,"summary":187},{"path":190,"title":189,"module":153,"summary":192},{"path":195,"title":194,"module":153,"summary":198},{"path":201,"title":200,"module":153,"summary":204},{"path":211,"title":210,"module":206,"summary":213},{"path":216,"title":215,"module":206,"summary":219},{"path":222,"title":221,"module":206,"summary":224},{"path":227,"title":226,"module":206,"summary":229},{"path":236,"title":235,"module":231,"summary":238},{"path":241,"title":240,"module":231,"summary":244},{"path":247,"title":246,"module":231,"summary":249},{"path":252,"title":251,"module":231,"summary":254},{"path":257,"title":256,"module":231,"summary":259},{"path":262,"title":261,"module":231,"summary":264},{"path":267,"title":266,"module":231,"summary":269},{"path":272,"title":271,"module":231,"summary":274},{"path":277,"title":276,"module":231,"summary":279},{"path":282,"title":281,"module":231,"summary":285},{"path":292,"title":291,"module":287,"summary":295},{"path":298,"title":297,"module":287,"summary":300},{"path":303,"title":302,"module":287,"summary":305},{"path":312,"title":311,"module":307,"summary":315},{"path":318,"title":317,"module":307,"summary":320},{"path":323,"title":322,"module":307,"summary":325},{"path":328,"title":327,"module":307,"summary":330},{"path":338,"title":337,"module":332,"summary":341},{"path":344,"title":343,"module":332,"summary":346},{"path":349,"title":348,"module":332,"summary":351},{"path":359,"title":358,"module":353,"summary":362},{"path":364,"title":361,"module":353,"summary":366},{"path":369,"title":368,"module":353,"summary":373},{"path":13136,"title":13137,"module":376,"summary":376},"\u002Falgorithms","Algorithms",{"path":13139,"title":13140,"module":376,"summary":376},"\u002Ftheory-of-computation","Theory of Computation",{"path":13142,"title":13143,"module":376,"summary":376},"\u002Fcomputer-architecture","Computer Architecture",{"path":13145,"title":13146,"module":376,"summary":376},"\u002Fphysical-computing","Physical Computing",{"path":13148,"title":13149,"module":376,"summary":376},"\u002Fdatabases","Databases",{"path":13151,"title":13152,"module":376,"summary":376},"\u002Fdeep-learning","Deep Learning",1781560528088]