on master help sign in
making real UI and exploring algos
commit89cffd67b44a468fab2f2f7a6864df539ce5dda4 authorHunter Miller <hunter@hmiller.dev> dateSat 9 Jul 2022, 00:05 (4 years ago) parent0b0074b
28 files changed+6453−163
desk/app/seek.hoon+168−31 desk/gen/publish.hoon+4−5 desk/lib/gossip.hoon+601 desk/lib/pals.hoon+18 desk/lib/seek-json.hoon+21−8 desk/lib/seek.hoon+19−9 desk/lib/sift.hoon+1−1 desk/mar/directory-notice.hoon → desk/mar/directory-listing.hoon+3−4 desk/mar/directory.hoon+13 desk/mar/gossip/rumor.hoon+11 desk/mar/listings.hoon−14 desk/mar/search.hoon+14 desk/sur/pals.hoon+41 desk/sur/seek.hoon+35−8 desk/sys.kelvin+1−1 ui/index.html+1−1 ui/package-lock.json+5138 ui/package.json+14−5 ui/src/api.ts+6 ui/src/app.tsx+21−39 ui/src/components/AppTile.tsx−29 ui/src/components/Paginator.tsx+129 ui/src/components/SearchInput.tsx+29 ui/src/components/SearchList.tsx+37 ui/src/index.css+5−1 ui/src/pages/Search.tsx+90 ui/src/types/seek.ts+23 ui/tailwind.config.js+10−7
desk/app/seek.hoon+168−31
@@ -1,7 +1,9 @@
11/- s=seek
2−/+ default-agent, verb, dbug
2+/+ gossip, default-agent, verb, dbug
33/+ *seek
44/+ sift
5+/$ grab-listing %noun %directory-listing
6+/$ grab-directory %noun %directory
57^- agent:gall
68=>
79 |%
@@ -9,6 +11,7 @@
911 +$ state-0
1012 $: %0
1113 =lookup:s
14+ =trigrams:s
1215 =trail:s
1316 =directory:s
1417 published=directory:s
@@ -18,6 +21,13 @@
1821=* state -
1922=<
2023 %+ verb &
24+ %- %+ agent:gossip
25+ [2 %mutuals %mutuals]
26+ %- malt
27+ ^- (list [mark $-(* vase)])
28+ :~ [%directory-listing |=(n=* !>((grab-listing n)))]
29+ [%directory |=(n=* !>((grab-directory n)))]
30+ ==
2131 %- agent:dbug
2232 |_ =bowl:gall
2333 +* this .
@@ -88,26 +98,57 @@
8898 |= [=mark =vase]
8999 |^ ^+ cor
90100 ?+ mark ~|(bad-poke/mark !!)
91− %directory-notice
92− =+ !<(=notice:s vase)
93− (publish notice)
101+ %directory-listing
102+ =+ !<(=listing:s vase)
103+ (publish listing)
94104 ==
95105 ++ publish
96− |= =notice:s
106+ |= =listing:s
97107 ^+ cor
98− ?> =(src.bowl source.q.notice)
99− ?> =(p.notice (digest q.notice))
100− di-abet:(di-init:(di-abed:di-core p.notice) q.notice)
108+ ::
109+ ?> =(src.bowl source.listing)
110+ ?> from-self
111+ ?> =(hash.listing (digest post.listing))
112+ ?: (~(has by directory) hash.listing)
113+ ~& 'Listing already exists.'
114+ cor
115+ =. published (~(put by directory) hash.listing listing)
116+ di-abet:(di-publish:(di-abed:di-core hash.listing) listing)
101117 --
102−::
118+::
103119++ watch
104120 |= =path
105121 ^+ cor
106− cor
122+ ?+ path ~|(bad-watch-path/path !!)
123+ [%~.~ %gossip %source ~]
124+ (give %fact ~ directory+!>(published))
125+ ==
107126++ agent
108127 |= [=wire =sign:agent:gall]
109128 ^+ cor
110− cor
129+ ?+ wire ~|(bad-agent-wire/wire !!)
130+ [%~.~ %gossip %gossip ~]
131+ ?+ -.sign ~|([%unexpected-gossip-sign -.sign] !!)
132+ %fact
133+ =* mark p.cage.sign
134+ =* vase q.cage.sign
135+ ?+ mark
136+ ~& [dap.bowl %unexpected-mark-fact mark wire=wire]
137+ cor
138+ %directory-listing
139+ =+ !<(=listing:s vase)
140+ ?> =(hash.listing (digest post.listing))
141+ ?: (~(has by directory) hash.listing)
142+ ~& 'Listing already exists.'
143+ cor
144+ di-abet:(di-publish:(di-abed:di-core hash.listing) listing)
145+ ::
146+ %directory
147+ =+ !<(d=directory:s vase)
148+ cor(directory (~(uni by directory) d))
149+ ==
150+ ==
151+ ==
111152++ arvo
112153 |= [=wire sign=sign-arvo]
113154 ^+ cor
@@ -117,20 +158,96 @@
117158 |= =path
118159 ^- (unit (unit cage))
119160 ?+ path [~ ~]
120− [%x %lookup @ ~]
121− =- ``listings+!>(-)
122− ^- (list listing:s)
123− %+ turn
124− %+ turn
125− %+ sort (~(gut by lookup) i.t.t.path *(list entry:s))
126− |= [a=entry:s b=entry:s]
127− (gte rank.a rank.b)
128− |=(=entry:s hash.entry)
129− |= =hash:s
130− (~(got by directory) hash)
131− ::
161+ [%x %lookup @ @ @ ~]
162+ =- ``search+!>(-)
163+ ^- search:s
164+ =/ start (slav %ud i.t.t.t.path)
165+ =/ limit (slav %ud i.t.t.t.t.path)
166+ :: expects encoded @t values)
167+ =/ term `@t`(slav %t i.t.t.path)
168+ =/ term-counts (get-term-counts term)
169+ ~& term-counts
170+ =/ terms (get-terms term-counts)
171+ ~& terms
172+ =/ all=(list listing:s)
173+ %- zing
174+ %+ turn
175+ terms
176+ |= [=key:s v=@ud]
177+ (get-listings (get-hashes key))
178+ =/ listings (swag [start limit] all)
179+ :* listings
180+ start
181+ limit
182+ (lent listings)
183+ (lent all)
184+ ==
132185 ==
133186::
187+++ get-terms
188+ |= tally=(map @t @ud)
189+ ^- (list [@t @ud])
190+ =/ sorted
191+ %+ sort
192+ ~(tap by tally)
193+ |= [[k=@t v=@ud] [l=@t w=@ud]]
194+ (lth v w)
195+ =/ median-index (div (lent sorted) 2)
196+ =/ q1 (median (scag +(median-index) sorted))
197+ =/ q3 (median (slag median-index sorted))
198+ =/ iqr (sub q3 q1)
199+ %+ skim
200+ sorted
201+ |= [k=@t v=@ud]
202+ (gth:rs (sun:rs v) (mul:rs (sun:rs q3) .1.5))
203+++ median
204+ |= terms=(list [k=@t v=@ud])
205+ ^- @ud
206+ =/ length (lent terms)
207+ =/ middle (div length 2)
208+ ?. =((mod length 2) 0) (tail (snag middle terms))
209+ %+ div
210+ %+ add
211+ (tail (snag middle terms))
212+ (tail (snag +(middle) terms))
213+ 2
214+++ get-term-counts
215+ |= term=@t
216+ ^- (map @t @ud)
217+ =/ parts (split:sift term)
218+ =/ ngrams=(list @t)
219+ %- zing
220+ %+ turn
221+ parts
222+ |= part=@t
223+ (iching part)
224+ %+ roll
225+ ngrams
226+ |= [ngram=@t tally=(map @t @ud)]
227+ ^- (map @t @ud)
228+ =/ words=(set @t) (~(gut by trigrams) ngram *(set @t))
229+ %-
230+ %- ~(uno by tally)
231+ %- malt
232+ %+ turn
233+ ~(tap in words)
234+ |= word=@t
235+ [word 1]
236+ |= [k=@t v=@ud w=@ud]
237+ (add v w)
238+++ get-hashes
239+ |= =key:s
240+ ^- (list hash:s)
241+ %+ turn
242+ %+ sort (~(gut by lookup) key *(list entry:s))
243+ |= [a=entry:s b=entry:s]
244+ (gte rank.a rank.b)
245+ |=(=entry:s hash.entry)
246+++ get-listings
247+ |= l=(list hash:s)
248+ ^- (list listing:s)
249+ %+ turn l
250+ |=(=hash:s (~(got by directory) hash))
134251++ from-self =(our src):bowl
135252++ di-core
136253 |_ [=listing:s =hash:s]
@@ -140,30 +257,50 @@
140257 ++ di-abed
141258 |= h=hash:s
142259 di-core(hash h, listing (~(gut by directory) h *listing:s))
143− ++ di-init
260+ ++ di-publish
144261 |= l=listing:s
145262 =. listing l
263+ =. cor (emit (invent:gossip %directory-listing !>(listing)))
146264 =/ entries=lookup:s
147265 %- malt
148266 %- zing
149− :~ ~[[title.l ~[[hash rank=0]]]]
267+ :~ %+ turn
268+ (sift:sift title.post.l)
269+ |= word=@t
270+ [word ~[[hash rank=0]]]
271+ ~[[type.post.l ~[[hash rank=1]]]]
150272 %+ turn
151− tags.l
273+ tags.post.l
152274 |= tag=@t
153− [tag ~[[hash rank=1]]]
275+ [tag ~[[hash rank=2]]]
154276 %+ turn
155− (sift:sift description.l)
277+ (sift:sift description.post.l)
156278 |= word=@t
157− [word ~[[hash rank=2]]]
279+ [word ~[[hash rank=3]]]
158280 ==
159− ~& -:!>(entries)
160− ~& -:!>(lookup)
281+ =/ keys ~(tap in ~(key by entries))
282+ ~& keys
283+ =. trail (~(put by trail) hash keys)
161284 =. lookup
162285 %- ~(uni by entries)
163286 %- ~(rut by lookup)
164287 |= [=key:s value=(list entry:s)]
165288 ?. (~(has by entries) key) value
166289 (weld value (~(got by entries) key))
290+ =. trigrams
291+ %+ roll
292+ %+ snoc
293+ %+ turn keys
294+ |= =key:s
295+ %- malt
296+ %+ turn (iching key)
297+ |= =trigram:s
298+ [trigram (silt ~[key])]
299+ trigrams
300+ |= [next=trigrams:s t=trigrams:s]
301+ %- (~(uno by t) next)
302+ |= [k=key:s v=(set key:s) w=(set key:s)]
303+ (~(uni in v) w)
167304 di-core
168305 --
169306--
desk/gen/publish.hoon+4−5
@@ -2,9 +2,8 @@
22/+ *seek
33:- %say
44|= $: [now=@da eny=@uv =beak]
5− [[=listing:s ~] ~]
5+ [[=post:s source=@p ~] ~]
66 ==
7−=. time.listing now
8−:- %directory-notice
9−^- notice:s
10−[(digest listing) listing]
7+:- %directory-listing
8+^- listing:s
9+[post (digest post) %friends source now]
desk/lib/gossip.hoonnew file+601
@@ -0,0 +1,601 @@
1+:: gossip: data sharing with pals
2+::
3+:: automates using /app/pals for peer & content discovery,
4+:: letting the underlying agent focus on handling the data.
5+::
6+:: at the time of writing, this library has not seen much real-world
7+:: use yet. it may be subject to behavioral or interface changes.
8+:: it tries its best to not generate obscene amounts of network load,
9+:: but has not yet proven itself in the real world.
10+:: for the time being, please tread carefully.
11+::
12+:: usage
13+::
14+:: to use this library, call its +agent arm with an initial
15+:: configuration and a map of, per mark, noun->vase convertors,
16+:: then call the resulting gate with the agent's door.
17+::
18+:: data from peers will come in through +on-agent, as %facts with
19+:: a /~/gossip wire.
20+:: the mark convertors ensure that this library can reconstitute the
21+:: appropriate vases from the (cask *)s it sends around internally.
22+:: if a mark conversion for a received datum isn't available, then
23+:: the library will inject a %fact with a %gossip-unknown mark instead,
24+:: containing a (cask *). the agent may either store it for later use,
25+:: or handle it directly.
26+::
27+:: for new incoming subscriptions, the underlying agent's +on-watch is
28+:: called, with /~/gossip/source, so that it may give initial results.
29+::TODO but this is somewhat wrong for multi-hop subscriptions, right?
30+:: /source is only intended to give _locally originating_ data.
31+:: if hops are >1, should we do both /source and /gossip?
32+:: doesn't this result in a lot of traffic, for know-a-lot cases?
33+::
34+:: when data originates locally and needs to be given to our peers,
35+:: simply produce a normal %fact on the /~/gossip/source path.
36+:: the +invent helper can be used to do this.
37+:: refrain from re-emitting received %facts manually. the library will
38+:: handle this for you, based on the current configuration.
39+::
40+:: to change the configuration after the agent has been started, emit
41+:: a %fact with the %gossip-config mark on the /~/gossip/config path.
42+:: the +configure helper can be used to do this.
43+:: the +read-config helper scries out the current configuration.
44+:: setting hops to 1 distributes the data to direct pals only.
45+:: setting hops to 0 prevents emission of any gossip data at all,
46+:: even during initial subscription setup.
47+::
48+:: (we introduce the /~/etc path prefix convention to indicate paths
49+:: that are for library-specific use only.
50+:: the advantage this has over the "mutated agent" pattern (for example,
51+:: /lib/shoe) is that the library consumes a normal $agent:gall, making
52+:: it theoretically easier to compose with other agent libraries.
53+:: the disavantage, of course, is that internal interaction with the
54+:: wrapper library isn't type-checked anymore. helper functions make
55+:: that less of a problem, but the developer must stay vigilant about
56+:: casting all the relevant outputs.)
57+::
58+:: when considering the types of data to be sent through gossip, keep
59+:: in mind that the library keeps track of (hashes of) all the individual
60+:: datums it has heard. as such, if your data is of the shape @t, and we
61+:: hear a 'hello' once, we will completely ignore any 'hello' that come
62+:: afterward, even if they originate from distinct events.
63+:: if this is a problem for your use case, consider including a timestamp
64+:: or other source of uniqueness with each distinct datum.
65+::
66+:: note that this library and its protocol are currently not in the
67+:: business of providing anonymized gossip. any slightly motivated actor
68+:: will have no problem modifying this library to detect and record
69+:: sources of data with good accuracy.
70+::
71+:: wip, libdev thoughts
72+::
73+:: we may want to include additional metadata alongside gossip facts,
74+:: such as a hop counter, set of informed peers, origin timestamp, etc.
75+:: we may want to use pokes exclusively, instead of watches/facts,
76+:: making it easier to exclude the src.bowl, include metadata, etc.
77+::
78+:: what if this was a userspace-infrastructure app instead of a wrapper?
79+:: how would ensuring installation of this app-dependency work?
80+:: it gains us... a higher chance of peers having this installed.
81+:: what if it was just part of pals?
82+:: would let us more-reliably poke mutuals and leeches, if we wanted to do
83+:: a proxy-broadcast thing.
84+::
85+:: when considering adding features like rumor signing, keep in mind that
86+:: this library is mostly in the business of ferrying casks. perhaps
87+:: features like signing should be left up to applications themselves.
88+::
89+:: internal logic
90+::
91+:: - on-init or during first on-load, watch pals for targets & leeches.
92+:: - if pals is not running, the watch will simply pend until it starts.
93+:: - if pals ever watch-nacks (it shouldn't), we try rewatching after ~m1.
94+::
95+:: - for facts produced on /~/gossip/source, we
96+:: - wrap them as %gossip-rumor to send them out on /~/gossip/gossip
97+:: - for new pals matching the hear mode, we watch their /~/gossip/gossip
98+:: - for gone pals, we leave that watch
99+:: - for facts on those watches
100+:: - ensure they're %gossip-rumors, ignoring otherwise
101+:: - unwrap them and +on-agent /~/gossip/gossip into the inner agent, and
102+:: - re-emit them as facts on /~/gossip/gossip if there are hops left
103+:: - for nacks on those watches, we retry after ~m30
104+::
105+/- pals
106+/+ lp=pals, dbug, verb
107+::
108+|%
109++$ rumor
110+ $: [kind=@ meta=*]
111+ data=(cask *)
112+ ==
113++$ meta-0 hops=_0
114+::
115++$ whos
116+ $? %anybody :: any ship discoverable through pals
117+ %targets :: any ship we've added as a pal
118+ %mutuals :: any mutual pal
119+ ==
120+::
121++$ config
122+ $: hops=_1 :: how far away gossip may travel
123+ :: (1 hop is pals only, 0 stops exposing data at all)
124+ hear=whos :: who to subscribe to
125+ tell=whos :: who to allow subscriptions from
126+ ==
127+++ invent
128+ |= =cage
129+ ^- card:agent:gall
130+ [%give %fact [/~/gossip/source]~ cage]
131+::
132+++ configure
133+ |= =config
134+ ^- card:agent:gall
135+ [%give %fact [/~/gossip/config]~ %gossip-config !>(config)]
136+::
137+++ read-config
138+ |= bowl:gall
139+ ^- config
140+ .^(config %gx /(scot %p our)/[dap]/(scot %da now)/~/gossip/config/noun)
141+::
142+++ agent
143+ |= $: init=config
144+ grab=(map mark $-(* vase))
145+ ==
146+ ^- $-(agent:gall agent:gall)
147+ |^ agent
148+ ::
149+ +$ state-0
150+ $: %0
151+ manner=config :: latest config
152+ memory=(set @uv) :: datums seen
153+ future=(list rumor) :: rumors of unknown kinds
154+ ==
155+ ::
156+ +$ card card:agent:gall
157+ ::
158+ ++ helper
159+ |_ [=bowl:gall state-0]
160+ +* state +<+
161+ pals ~(. lp bowl)
162+ ++ en-cage
163+ |= =(cask *)
164+ ^- cage
165+ ?^ to=(~(get by grab) p.cask)
166+ [p.cask (u.to q.cask)]
167+ ~& [gossip+dap.bowl %no-mark p.cask]
168+ [%gossip-unknown !>(cask)]
169+ ::
170+ ++ de-cage
171+ |=(cage `(cask *)`[p q.q])
172+ ::
173+ ++ en-rumor ::NOTE assumes !=(0 hops.manner)
174+ |= =cage
175+ ^- rumor
176+ :_ (de-cage cage)
177+ ~| [%en-rumor initial-hops=hops.manner]
178+ [%0 `meta-0`(dec hops.manner)]
179+ ::
180+ ++ play-card :: en-rumor relevant facts, handle config changes
181+ |= =card
182+ ^- (quip ^card _state)
183+ ?. ?=([%give %fact *] card) [[card]~ state]
184+ ?: =(~ paths.p.card) [[card]~ state]
185+ =/ [int=(list path) ext=(list path)]
186+ %+ skid paths.p.card
187+ |= =path
188+ ?=([%~.~ %gossip *] path)
189+ =/ caz=(list ^card)
190+ ?: =(~ ext) ~
191+ [card(paths.p ext)]~
192+ ?: ?=(~ int) [caz state]
193+ =* path i.int
194+ :: there may only be one gossip-internal path per card
195+ ::
196+ ?. =(~ t.int)
197+ ~& [gossip+dap.bowl %too-many-internal-targets int]
198+ ~|([%too-many-internal-targets int] !!)
199+ ?: =(/~/gossip/config path)
200+ ~| [%weird-fact-on-config p.cage.p.card]
201+ ?> =(%gossip-config p.cage.p.card)
202+ =/ old=config manner
203+ =. manner !<(config q.cage.p.card)
204+ :_ state
205+ ;: weld
206+ (hear-changed hear.old)
207+ (tell-changed tell.old)
208+ caz
209+ ==
210+ ~| [%strange-internal-target path]
211+ ?> =(/~/gossip/source path)
212+ :: if hops is configured at 0, we don't broadcast at all.
213+ ::
214+ =. memory (~(put in memory) (sham (de-cage cage.p.card)))
215+ ?: =(0 hops.manner) [caz state]
216+ =- [[- caz] state]
217+ =/ =rumor (en-rumor cage.p.card)
218+ card(paths.p [/~/gossip/gossip]~, cage.p [%gossip-rumor !>(rumor)])
219+ ::
220+ ++ play-cards
221+ |= cards=(list card)
222+ ^- (quip card _state)
223+ =| out=(list card)
224+ |-
225+ ?~ cards [out state]
226+ =^ caz state (play-card i.cards)
227+ $(out (weld out caz), cards t.cards)
228+ ::
229+ ++ play-first-cards
230+ |= cards=(list card)
231+ ^- (quip card _state)
232+ =| out=(list card)
233+ |-
234+ ?~ cards [out state]
235+ ?. ?=([%give %fact ~ *] i.cards)
236+ =^ caz state (play-card i.cards)
237+ $(out (weld out caz), cards t.cards)
238+ :: if hops is set to 0, we block even the initial response
239+ ::
240+ ?: =(0 hops.manner) $(cards t.cards)
241+ =. cage.p.i.cards
242+ [%gossip-rumor !>((en-rumor cage.p.i.cards))]
243+ $(out (snoc out i.cards), cards t.cards)
244+ ::
245+ ++ resend-rumor
246+ |= =rumor
247+ ^- (unit card)
248+ ?> =(%0 kind.rumor) ::NOTE should have been checked for already
249+ ?~ meta=((soft ,hops=@ud) meta.rumor) ~
250+ =* hops hops.u.meta
251+ ?: =(0 hops) ~
252+ =. meta.rumor (dec hops)
253+ `[%give %fact [/~/gossip/gossip]~ %gossip-rumor !>(rumor)]
254+ ::
255+ ++ may-watch
256+ |= who=ship
257+ ?- tell.manner
258+ %anybody &
259+ %targets (~(has in (targets:pals ~.)) who)
260+ %mutuals (~(has in (mutuals:pals ~.)) who)
261+ ==
262+ ::
263+ ::
264+ ++ watch-pals
265+ ^- (list card)
266+ =/ =gill:gall [our.bowl %pals]
267+ :~ [%pass /~/gossip/pals/targets %agent gill %watch /targets]
268+ [%pass /~/gossip/pals/leeches %agent gill %watch /leeches]
269+ ==
270+ ::
271+ ++ watching-target
272+ |= s=ship
273+ %- ~(has by wex.bowl)
274+ [/~/gossip/gossip/(scot %p s) s dap.bowl]
275+ ::
276+ ++ want-target
277+ %~ has in
278+ ?- hear.manner
279+ %anybody (~(uni in leeches:pals) (targets:pals ~.))
280+ %targets (targets:pals ~.)
281+ %mutuals (mutuals:pals ~.)
282+ ==
283+ ::
284+ ++ retry-timer
285+ |= [t=@dr p=path]
286+ ^- card
287+ :+ %pass [%~.~ %gossip %retry p]
288+ [%arvo %b %wait (add now.bowl t)]
289+ ::
290+ ++ watch-target
291+ |= s=ship
292+ ^- (list card)
293+ ?: (watching-target s) ~
294+ :_ ~
295+ :+ %pass /~/gossip/gossip/(scot %p s)
296+ [%agent [s dap.bowl] %watch /~/gossip/gossip]
297+ ::
298+ ++ leave-target
299+ |= s=ship
300+ ^- card
301+ :+ %pass /~/gossip/gossip/(scot %p s)
302+ [%agent [s dap.bowl] %leave ~]
303+ ::
304+ ++ kick-target
305+ |= s=ship
306+ ^- card
307+ [%give %kick [/~/gossip/gossip]~ `s]
308+ ::
309+ ++ hear-changed
310+ |= old=whos
311+ ^- (list card)
312+ =* new hear.manner
313+ ?: =(old new) ~
314+ =/ listen=(set ship)
315+ ?- new
316+ %anybody (~(uni in leeches:pals) (targets:pals ~.))
317+ %targets (targets:pals ~.)
318+ %mutuals (mutuals:pals ~.)
319+ ==
320+ =/ hearing=(set ship)
321+ %- ~(gas in *(set ship))
322+ %+ murn ~(tap by wex.bowl)
323+ |= [[=wire =ship =term] [acked=? =path]]
324+ ^- (unit ^ship)
325+ ?. ?=([%~.~ %gossip %gossip @ ~] wire) ~
326+ `ship
327+ %+ weld
328+ (turn ~(tap in (~(dif in hearing) listen)) leave-target)
329+ ^- (list card)
330+ (zing (turn ~(tap in (~(dif in listen) hearing)) watch-target))
331+ ::
332+ ++ tell-changed
333+ |= old=whos
334+ ^- (list card)
335+ =* new tell.manner
336+ ?: =(old new) ~
337+ ?- [old new]
338+ $? [* %anybody]
339+ [%mutuals *]
340+ ==
341+ :: perms got broader, we can just no-op
342+ ::
343+ ~
344+ ::
345+ [* ?(%targets %mutuals)]
346+ :: perms got tighter, we need to kick stragglers
347+ ::
348+ =/ allowed=(set ship)
349+ ?- new
350+ %anybody !!
351+ %targets (targets:pals ~.)
352+ %mutuals (mutuals:pals ~.)
353+ ==
354+ %+ murn ~(val by sup.bowl)
355+ |= [s=ship p=path]
356+ ^- (unit card)
357+ =; kick=?
358+ ?.(kick ~ `(kick-target s))
359+ ?& ?=([%~.~ %gossip %gossip ~] p)
360+ !(~(has in allowed) s)
361+ ==
362+ ==
363+ --
364+ ::
365+ ++ agent
366+ |= inner=agent:gall
367+ =| state-0
368+ =* state -
369+ %+ verb |
370+ %- agent:dbug
371+ ^- agent:gall
372+ |_ =bowl:gall
373+ +* this .
374+ pals ~(. lp bowl)
375+ def ~(. (default-agent this %|) bowl)
376+ og ~(. inner bowl)
377+ up ~(. helper bowl state)
378+ ++ on-init
379+ ^- (quip card _this)
380+ =. manner init
381+ =^ cards inner on-init:og
382+ =^ cards state (play-cards:up cards)
383+ [(weld watch-pals:up cards) this]
384+ ::
385+ ++ on-save !>([[%gossip state] on-save:og])
386+ ++ on-load
387+ |= ole=vase
388+ ^- (quip card _this)
389+ ?. ?=([[%gossip *] *] q.ole)
390+ =. manner init
391+ =^ cards inner (on-load:og ole)
392+ =^ cards state (play-cards:up cards)
393+ [(weld watch-pals:up cards) this]
394+ ::
395+ =+ !<([[%gossip old=state-0] ile=vase] ole)
396+ =. state old
397+ =^ cards inner (on-load:og ile)
398+ =^ cards state (play-cards:up cards)
399+ ::TODO for later versions, add :future retry logic as needed
400+ [cards this]
401+ ::
402+ ++ on-watch
403+ |= =path
404+ ^- (quip card _this)
405+ ?. ?=([%~.~ %gossip *] path)
406+ =^ cards inner (on-watch:og path)
407+ =^ cards state (play-cards:up cards)
408+ [cards this]
409+ :: /~/gossip/gossip
410+ ?> =(/gossip t.t.path)
411+ ?. (may-watch:up src.bowl)
412+ ~|(%gossip-forbidden !!)
413+ =^ cards inner (on-watch:og /~/gossip/source)
414+ =^ cards state (play-first-cards:up cards)
415+ [cards this]
416+ ::
417+ ++ on-agent
418+ |= [=wire =sign:agent:gall]
419+ ^- (quip card _this)
420+ ?. ?=([%~.~ %gossip *] wire)
421+ =^ cards inner (on-agent:og wire sign)
422+ =^ cards state (play-cards:up cards)
423+ [cards this]
424+ ::
425+ ?+ t.t.wire ~|([%gossip %unexpected-wire wire] !!)
426+ [%gossip @ ~]
427+ ~| t.t.wire
428+ ?> =(src.bowl (slav %p i.t.t.t.wire))
429+ ?- -.sign
430+ %fact
431+ =* mark p.cage.sign
432+ =* vase q.cage.sign
433+ ?. =(%gossip-rumor mark)
434+ ~& [gossip+dap.bowl %ignoring-unexpected-fact mark=mark]
435+ [~ this]
436+ =+ !<(=rumor vase)
437+ =/ hash (sham data.rumor)
438+ ?: (~(has in memory) hash)
439+ [~ this]
440+ ?. =(%0 kind.rumor)
441+ ~& [gossip+dap.bowl %delaying-unknown-rumor-kind kind.rumor]
442+ [~ this(future [rumor future])]
443+ =/ mage=cage (en-cage:up data.rumor)
444+ =^ cards inner (on-agent:og /~/gossip/gossip sign(cage mage))
445+ =^ cards state (play-cards:up cards)
446+ :_ this(memory (~(put in memory) hash))
447+ (weld (drop (resend-rumor:up rumor)) cards)
448+ ::
449+ %watch-ack
450+ :_ this
451+ ?~ p.sign ~
452+ :: 30 minutes might cost us some responsiveness when the other
453+ :: party changes their local config, but in return we save both
454+ :: ourselves and others from a lot of needless retries.
455+ :: (notably, "do we still care" check also lives in %wake logic.)
456+ ::
457+ [(retry-timer:up ~m30 /watch/(scot %p src.bowl))]~
458+ ::
459+ %kick
460+ :_ this
461+ :: to prevent pathological kicks from exploding, we always
462+ :: wait a couple seconds before resubscribing.
463+ :: perhaps this is overly careful, but we cannot tell the
464+ :: difference between "clog" kicks and "missing mark" kicks,
465+ :: so we cannot take more accurate/appropriate action here.
466+ :: (notably, "do we still care" check also lives in %wake logic.)
467+ ::
468+ [(retry-timer:up ~s15 /watch/(scot %p src.bowl))]~
469+ ::
470+ %poke-ack
471+ ~& [gossip+dap.bowl %unexpected-poke-ack wire]
472+ [~ this]
473+ ==
474+ ::
475+ [%pals @ ~]
476+ ?- -.sign
477+ %poke-ack ~&([gossip+dap.bowl %unexpected-poke-ack wire] [~ this])
478+ %kick [watch-pals:up this]
479+ ::
480+ %watch-ack
481+ :_ this
482+ ?~ p.sign ~
483+ %- (slog 'gossip: failed to subscribe on %pals!!' u.p.sign)
484+ [(retry-timer:up ~m1 t.t.wire)]~
485+ ::
486+ %fact
487+ =* mark p.cage.sign
488+ =* vase q.cage.sign
489+ ?. =(%pals-effect mark)
490+ ~& [gossip+dap.bowl %unexpected-fact-mark mark wire]
491+ [~ this]
492+ =+ !<(=effect:^pals vase)
493+ :_ this
494+ =* ship ship.effect
495+ =* kick [(kick-target:up ship)]~
496+ =* view (watch-target:up ship)
497+ =* flee [(leave-target:up ship)]~
498+ ?- -.effect
499+ %meet
500+ ?- hear.manner
501+ %anybody view
502+ %targets view
503+ %mutuals ?:((mutual:pals ~. ship) view ~)
504+ ==
505+ ::
506+ %part
507+ %+ weld
508+ ?- tell.manner
509+ %anybody ~
510+ %targets kick
511+ %mutuals kick
512+ ==
513+ ?- hear.manner
514+ %anybody ?:((leeche:pals ship) ~ flee)
515+ %targets flee
516+ %mutuals flee
517+ ==
518+ ::
519+ %near
520+ ?- hear.manner
521+ %anybody view
522+ %targets ~
523+ %mutuals ?:((mutual:pals ~. ship) view ~)
524+ ==
525+ ::
526+ %away
527+ %+ weld
528+ ?- tell.manner
529+ %anybody ~
530+ %targets ~
531+ %mutuals kick
532+ ==
533+ ?- hear.manner
534+ %anybody ?:((target:pals ~. ship) ~ flee)
535+ %targets ~
536+ %mutuals flee
537+ ==
538+ ==
539+ ==
540+ ==
541+ ::
542+ ++ on-peek
543+ |= =path
544+ ^- (unit (unit cage))
545+ ?: =(/x/dbug/state path)
546+ ``noun+(slop on-save:og !>(gossip=state))
547+ ?. ?=([@ %~.~ %gossip *] path)
548+ (on-peek:og path)
549+ ?. ?=(%x i.path) [~ ~]
550+ ?+ t.t.t.path [~ ~]
551+ [%config ~] ``noun+!>(manner)
552+ ==
553+ ::
554+ ++ on-leave
555+ |= =path
556+ ^- (quip card _this)
557+ ?: ?=([%~.~ %gossip *] path)
558+ [~ this]
559+ =^ cards inner (on-leave:og path)
560+ =^ cards state (play-cards:up cards)
561+ [cards this]
562+ ::
563+ ++ on-poke
564+ |= cage
565+ ^- (quip card _this)
566+ ::TODO gossip config pokes?
567+ =^ cards inner (on-poke:og +<)
568+ =^ cards state (play-cards:up cards)
569+ [cards this]
570+ ::
571+ ++ on-arvo
572+ |= [=wire sign=sign-arvo:agent:gall]
573+ ^- (quip card _this)
574+ ?. ?=([%~.~ %gossip *] wire)
575+ =^ cards inner (on-arvo:og wire sign)
576+ =^ cards state (play-cards:up cards)
577+ [cards this]
578+ ?> ?=([%retry *] t.t.wire)
579+ ?> ?=(%wake +<.sign)
580+ ?+ t.t.t.wire ~|(wire !!)
581+ [%pals *]
582+ ::NOTE this might result in subscription wire re-use,
583+ :: but if we hit this path we should be loud anyway.
584+ [watch-pals:up this]
585+ ::
586+ [%watch @ ~]
587+ :_ this
588+ =/ target=ship (slav %p i.t.t.t.t.wire)
589+ ?. (want-target:up target) ~
590+ (watch-target:up target)
591+ ==
592+ ::
593+ ++ on-fail
594+ |= [term tang]
595+ ^- (quip card _this)
596+ =^ cards inner (on-fail:og +<)
597+ =^ cards state (play-cards:up cards)
598+ [cards this]
599+ --
600+ --
601+--
desk/lib/pals.hoonnew file+18
@@ -0,0 +1,18 @@
1+:: pals: manual peer discovery
2+::
3+|_ bowl:gall
4+++ leeches (s (set ship) /leeches)
5+++ targets |= list=@ta (s (set ship) %targets ?~(list / /[list]))
6+++ mutuals |= list=@ta (s (set ship) %mutuals ?~(list / /[list]))
7+++ leeche |= =ship (s _| /leeches/(scot %p ship))
8+++ target |= [list=@ta =ship] (s _| /mutuals/[list]/(scot %p ship))
9+++ mutual |= [list=@ta =ship] (s _| /mutuals/[list]/(scot %p ship))
10+::
11+++ base ~+ /(scot %p our)/pals/(scot %da now)
12+++ running ~+ .^(? %gu base)
13+::
14+++ s
15+ |* [=mold =path] ~+
16+ ?. running *mold
17+ .^(mold %gx (weld base (snoc `^path`path %noun)))
18+--
desk/lib/seek-json.hoon+21−8
@@ -3,19 +3,32 @@
33++ enjs
44 =, enjs:format
55 |%
6− ++ listings
7− |= l=(list listing:s)
8− a+(turn l listing)
6+ ++ post
7+ |= p=post:s
8+ %- pairs
9+ :~ title/s/title.p
10+ type/s/type.p
11+ link/s/link.p
12+ description/s/description.p
13+ image/s/image.p
14+ tags/a/(turn tags.p (lead %s))
15+ ==
916 ++ listing
1017 |= l=listing:s
1118 %- pairs
12− :~ title/s/title.l
13− link/s/link.l
14− description/s/description.l
15− image/s/image.l
19+ :~ post/(post post.l)
20+ hash/s/(scot %uv hash.l)
1621 source/s/(scot %p source.l)
1722 time/(time time.l)
18− tags/a/(turn tags.l (lead %s))
23+ ==
24+ ++ search
25+ |= =search:s
26+ %- pairs
27+ :~ listings/a/(turn listings.search listing)
28+ start/n/(scot %ud start.search)
29+ limit/n/(scot %ud limit.search)
30+ size/n/(scot %ud size.search)
31+ total/n/(scot %ud total.search)
1932 ==
2033 --
2134++ dejs
desk/lib/seek.hoon+19−9
@@ -1,16 +1,26 @@
11/- *seek
22|%
3+++ iching
4+ |= word=@t
5+ ^- (list @t)
6+ =/ w (trip word)
7+ =. w
8+ ?. (lth (lent w) 3) w
9+ (weld w (reap (sub 3 (lent w)) ' '))
10+ %+ turn
11+ (gulf 0 (sub (lent w) 3))
12+ |= index=@ud
13+ (crip (swag [index 3] w))
314++ digest
4− |= =listing
5− ^- @uw
15+ |= =post
16+ ^- @uv
617 %- shax
718 %- crip
8− :~ title.listing
9− link.listing
10− image.listing
11− description.listing
12− (crip tags.listing)
13− `@t`source.listing
14− `@t`time.listing
19+ :~ title.post
20+ `@t`type.post
21+ link.post
22+ image.post
23+ description.post
24+ (crip tags.post)
1525 ==
1626--
desk/lib/sift.hoon+1−1
@@ -11,7 +11,7 @@
1111 ^- (list @t)
1212 =/ lines (crip (trimall corpus))
1313 %+ rash lines
14− (more ace (cook crip (plus alf)))
14+ (more ace (cook crip (plus ;~(pose aln hep))))
1515++ trimall
1616 |= value=@t
1717 |^ ^- tape
desk/mar/directory-notice.hoon → desk/mar/directory-listing.hoonrenamed+3−4
@@ -1,14 +1,13 @@
11/- s=seek
22/+ j=seek-json
3−|_ =notice:s
3+|_ =listing:s
44++ grad %noun
55++ grow
66 |%
7− ++ noun notice
7+ ++ noun listing
88 --
99++ grab
1010 |%
11− ++ noun notice:s
12− ++ json notice:dejs:j
11+ ++ noun listing:s
1312 --
1413--
desk/mar/directory.hoonnew file+13
@@ -0,0 +1,13 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ =directory:s
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun directory
8+ --
9+++ grab
10+ |%
11+ ++ noun directory:s
12+ --
13+--
desk/mar/gossip/rumor.hoonnew file+11
@@ -0,0 +1,11 @@
1+|_ rum=[[@ *] (cask *)]
2+++ grad %noun
3+++ grow
4+ |%
5+ ++ noun rum
6+ --
7+++ grab
8+ |%
9+ ++ noun ,[[@ *] (cask *)]
10+ --
11+--
desk/mar/listings.hoondeleted−14
@@ -1,14 +0,0 @@
1−/- s=seek
2−/+ j=seek-json
3−|_ listings=(list listing:s)
4−++ grad %noun
5−++ grow
6− |%
7− ++ noun listings
8− ++ json (listings:enjs:j listings)
9− --
10−++ grab
11− |%
12− ++ noun (list listing:s)
13− --
14−--
desk/mar/search.hoonnew file+14
@@ -0,0 +1,14 @@
1+/- s=seek
2+/+ j=seek-json
3+|_ =search:s
4+++ grad %noun
5+++ grow
6+ |%
7+ ++ noun search
8+ ++ json (search:enjs:j search)
9+ --
10+++ grab
11+ |%
12+ ++ noun search
13+ --
14+--
desk/sur/pals.hoonnew file+41
@@ -0,0 +1,41 @@
1+:: pals: manual neighboring
2+::
3+|%
4++$ records :: local state
5+ $: outgoing=(jug ship @ta)
6+ incoming=(set ship)
7+ ::
8+ :: receipts: for all outgoing, status
9+ ::
10+ :: if ship not in receipts, poke awaiting ack
11+ :: if ship present as true, poke acked positively
12+ :: if ship present as false, poke acked negatively
13+ ::
14+ receipts=(map ship ?)
15+ ==
16+::
17++$ gesture :: to/from others
18+ $% [%hey ~]
19+ [%bye ~]
20+ ==
21+::
22++$ command :: from ourselves
23+ $% [%meet =ship in=(set @ta)] :: empty set allowed
24+ [%part =ship in=(set @ta)] :: empty set implies un-targeting
25+ ==
26+::
27++$ effect :: to ourselves
28+ $% target-effect
29+ leeche-effect
30+ ==
31+::
32++$ target-effect
33+ $% [%meet =ship] :: hey to target
34+ [%part =ship] :: bye to target
35+ ==
36+::
37++$ leeche-effect
38+ $% [%near =ship] :: hey from leeche
39+ [%away =ship] :: bye from leeche
40+ ==
41+--
desk/sur/seek.hoon+35−8
@@ -1,7 +1,8 @@
11|%
22+$ key @t :: keyword that points to listings
3−+$ hash @uw :: @uw version of shax result
3++$ hash @uv :: @uv version of shax result
44+$ rank @ud :: @ud representing priority of listing
5++$ trigram @t :: @t consisting of three characters taken from a word
56::
67:: an entry points to a listing hash and provides
78:: a semblance of priority for the listing
@@ -11,22 +12,36 @@
1112 =rank :: based on which attribute keyword came from
1213 ==
1314::
14−:: a listing represents a search result which points to some
15+:: a post represents a search result which points to some
1516:: external resource through a link. this is a rich result
1617:: which gives a summary of the resource as well as an image
1718:: and related topics.
1819::
19−:: each listing has a source and time so that they can be updated
20−:: via the source requesting to replace the listing and hash
20++$ post-type ?(%app %group %content %other)
2121::
22−+$ listing
22++$ post
2323 $: title=@t
24+ type=post-type
2425 link=@t
2526 description=@t
2627 tags=(list @t)
2728 image=@t
28− source=@p
29− time=@da
29+ ==
30+::
31+:: a listing includes the content of the post as well as information
32+:: that would affect the hash so are left out, namely time, source and
33+:: hash. each post has a source and time so that they can be updated
34+:: via the source requesting to replace the listing and hash.
35+::
36+::
37++$ reach ?(%private %friends %public)
38+::
39++$ listing
40+ $: =post
41+ =hash
42+ =reach
43+ source=@p
44+ time=@da
3045 ==
3146::
3247:: lookup acts as a search index for keywords, each key points to
@@ -35,6 +50,11 @@
3550::
3651+$ lookup (map key (list entry))
3752::
53+:: trigrams act as a way to account for spelling errors. we keep a map
54+:: of trigram to set of lookup keys. we take the query's trigrams and
55+:: count how many times a particular key comes up.
56++$ trigrams (map trigram (set key))
57+::
3858:: trail is a way for us to know all the keys required to update
3959:: a listing with the new hash of it's contents
4060::
@@ -45,5 +65,12 @@
4565::
4666+$ directory (map hash listing)
4767::
48−+$ notice (pair hash listing)
68++$ search
69+ $: listings=(list listing)
70+ start=@ud
71+ limit=@ud
72+ size=@ud
73+ total=@ud
74+ ==
75+::
4976--
desk/sys.kelvin+1−1
@@ -1 +1 @@
1−[%zuse 420]
1+[%zuse 418]
ui/index.html+1−1
@@ -10,7 +10,7 @@
1010 <link rel="apple-touch-icon" sizes="180x180" href="/src/assets/apple-touch-icon.png" />
1111 <link rel="manifest" href="/src/assets/manifest.json" />
1212 </head>
13− <body class="font-sans text-gray-900 bg-white antialiased">
13+ <body class="font-sans text-mauve bg-linen antialiased">
1414 <div id="app"></div>
1515 <script type="module" src="/src/main.tsx"></script>
1616 </body>
ui/package-lock.jsonnew file+5138
@@ -0,0 +1,5138 @@
1+{
2+ "name": "seek",
3+ "version": "0.0.0",
4+ "lockfileVersion": 2,
5+ "requires": true,
6+ "packages": {
7+ "": {
8+ "name": "seek",
9+ "version": "0.0.0",
10+ "dependencies": {
11+ "@heroicons/react": "^1.0.6",
12+ "@radix-ui/react-dropdown-menu": "^0.1.6",
13+ "@radix-ui/react-toggle-group": "^0.1.5",
14+ "@urbit/api": "^2.0.0",
15+ "@urbit/http-api": "^2.0.0",
16+ "big-integer": "^1.6.51",
17+ "classnames": "^2.3.1",
18+ "lodash.debounce": "^4.0.8",
19+ "react": "^17.0.2",
20+ "react-dom": "^17.0.2",
21+ "react-query": "^3.39.1",
22+ "react-router-dom": "^6.3.0"
23+ },
24+ "devDependencies": {
25+ "@types/lodash.debounce": "^4.0.7",
26+ "@types/react": "^17.0.0",
27+ "@types/react-dom": "^17.0.0",
28+ "@urbit/vite-plugin-urbit": "^0.8.0",
29+ "@vitejs/plugin-react-refresh": "^1.3.1",
30+ "autoprefixer": "^10.4.7",
31+ "postcss": "^8.4.14",
32+ "tailwindcss": "^3.1.4",
33+ "typescript": "^4.3.2",
34+ "vite": "^2.9.13"
35+ }
36+ },
37+ "node_modules/@ampproject/remapping": {
38+ "version": "2.2.0",
39+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
40+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
41+ "dev": true,
42+ "dependencies": {
43+ "@jridgewell/gen-mapping": "^0.1.0",
44+ "@jridgewell/trace-mapping": "^0.3.9"
45+ },
46+ "engines": {
47+ "node": ">=6.0.0"
48+ }
49+ },
50+ "node_modules/@babel/code-frame": {
51+ "version": "7.18.6",
52+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
53+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
54+ "dev": true,
55+ "dependencies": {
56+ "@babel/highlight": "^7.18.6"
57+ },
58+ "engines": {
59+ "node": ">=6.9.0"
60+ }
61+ },
62+ "node_modules/@babel/compat-data": {
63+ "version": "7.18.6",
64+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
65+ "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==",
66+ "dev": true,
67+ "engines": {
68+ "node": ">=6.9.0"
69+ }
70+ },
71+ "node_modules/@babel/core": {
72+ "version": "7.18.6",
73+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
74+ "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
75+ "dev": true,
76+ "dependencies": {
77+ "@ampproject/remapping": "^2.1.0",
78+ "@babel/code-frame": "^7.18.6",
79+ "@babel/generator": "^7.18.6",
80+ "@babel/helper-compilation-targets": "^7.18.6",
81+ "@babel/helper-module-transforms": "^7.18.6",
82+ "@babel/helpers": "^7.18.6",
83+ "@babel/parser": "^7.18.6",
84+ "@babel/template": "^7.18.6",
85+ "@babel/traverse": "^7.18.6",
86+ "@babel/types": "^7.18.6",
87+ "convert-source-map": "^1.7.0",
88+ "debug": "^4.1.0",
89+ "gensync": "^1.0.0-beta.2",
90+ "json5": "^2.2.1",
91+ "semver": "^6.3.0"
92+ },
93+ "engines": {
94+ "node": ">=6.9.0"
95+ },
96+ "funding": {
97+ "type": "opencollective",
98+ "url": "https://opencollective.com/babel"
99+ }
100+ },
101+ "node_modules/@babel/generator": {
102+ "version": "7.18.7",
103+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
104+ "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
105+ "dev": true,
106+ "dependencies": {
107+ "@babel/types": "^7.18.7",
108+ "@jridgewell/gen-mapping": "^0.3.2",
109+ "jsesc": "^2.5.1"
110+ },
111+ "engines": {
112+ "node": ">=6.9.0"
113+ }
114+ },
115+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
116+ "version": "0.3.2",
117+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
118+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
119+ "dev": true,
120+ "dependencies": {
121+ "@jridgewell/set-array": "^1.0.1",
122+ "@jridgewell/sourcemap-codec": "^1.4.10",
123+ "@jridgewell/trace-mapping": "^0.3.9"
124+ },
125+ "engines": {
126+ "node": ">=6.0.0"
127+ }
128+ },
129+ "node_modules/@babel/helper-compilation-targets": {
130+ "version": "7.18.6",
131+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
132+ "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
133+ "dev": true,
134+ "dependencies": {
135+ "@babel/compat-data": "^7.18.6",
136+ "@babel/helper-validator-option": "^7.18.6",
137+ "browserslist": "^4.20.2",
138+ "semver": "^6.3.0"
139+ },
140+ "engines": {
141+ "node": ">=6.9.0"
142+ },
143+ "peerDependencies": {
144+ "@babel/core": "^7.0.0"
145+ }
146+ },
147+ "node_modules/@babel/helper-environment-visitor": {
148+ "version": "7.18.6",
149+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
150+ "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==",
151+ "dev": true,
152+ "engines": {
153+ "node": ">=6.9.0"
154+ }
155+ },
156+ "node_modules/@babel/helper-function-name": {
157+ "version": "7.18.6",
158+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
159+ "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
160+ "dev": true,
161+ "dependencies": {
162+ "@babel/template": "^7.18.6",
163+ "@babel/types": "^7.18.6"
164+ },
165+ "engines": {
166+ "node": ">=6.9.0"
167+ }
168+ },
169+ "node_modules/@babel/helper-hoist-variables": {
170+ "version": "7.18.6",
171+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
172+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
173+ "dev": true,
174+ "dependencies": {
175+ "@babel/types": "^7.18.6"
176+ },
177+ "engines": {
178+ "node": ">=6.9.0"
179+ }
180+ },
181+ "node_modules/@babel/helper-module-imports": {
182+ "version": "7.18.6",
183+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
184+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
185+ "dev": true,
186+ "dependencies": {
187+ "@babel/types": "^7.18.6"
188+ },
189+ "engines": {
190+ "node": ">=6.9.0"
191+ }
192+ },
193+ "node_modules/@babel/helper-module-transforms": {
194+ "version": "7.18.6",
195+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
196+ "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
197+ "dev": true,
198+ "dependencies": {
199+ "@babel/helper-environment-visitor": "^7.18.6",
200+ "@babel/helper-module-imports": "^7.18.6",
201+ "@babel/helper-simple-access": "^7.18.6",
202+ "@babel/helper-split-export-declaration": "^7.18.6",
203+ "@babel/helper-validator-identifier": "^7.18.6",
204+ "@babel/template": "^7.18.6",
205+ "@babel/traverse": "^7.18.6",
206+ "@babel/types": "^7.18.6"
207+ },
208+ "engines": {
209+ "node": ">=6.9.0"
210+ }
211+ },
212+ "node_modules/@babel/helper-plugin-utils": {
213+ "version": "7.18.6",
214+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
215+ "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
216+ "dev": true,
217+ "engines": {
218+ "node": ">=6.9.0"
219+ }
220+ },
221+ "node_modules/@babel/helper-simple-access": {
222+ "version": "7.18.6",
223+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
224+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
225+ "dev": true,
226+ "dependencies": {
227+ "@babel/types": "^7.18.6"
228+ },
229+ "engines": {
230+ "node": ">=6.9.0"
231+ }
232+ },
233+ "node_modules/@babel/helper-split-export-declaration": {
234+ "version": "7.18.6",
235+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
236+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
237+ "dev": true,
238+ "dependencies": {
239+ "@babel/types": "^7.18.6"
240+ },
241+ "engines": {
242+ "node": ">=6.9.0"
243+ }
244+ },
245+ "node_modules/@babel/helper-validator-identifier": {
246+ "version": "7.18.6",
247+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
248+ "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
249+ "dev": true,
250+ "engines": {
251+ "node": ">=6.9.0"
252+ }
253+ },
254+ "node_modules/@babel/helper-validator-option": {
255+ "version": "7.18.6",
256+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
257+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
258+ "dev": true,
259+ "engines": {
260+ "node": ">=6.9.0"
261+ }
262+ },
263+ "node_modules/@babel/helpers": {
264+ "version": "7.18.6",
265+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
266+ "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
267+ "dev": true,
268+ "dependencies": {
269+ "@babel/template": "^7.18.6",
270+ "@babel/traverse": "^7.18.6",
271+ "@babel/types": "^7.18.6"
272+ },
273+ "engines": {
274+ "node": ">=6.9.0"
275+ }
276+ },
277+ "node_modules/@babel/highlight": {
278+ "version": "7.18.6",
279+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
280+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
281+ "dev": true,
282+ "dependencies": {
283+ "@babel/helper-validator-identifier": "^7.18.6",
284+ "chalk": "^2.0.0",
285+ "js-tokens": "^4.0.0"
286+ },
287+ "engines": {
288+ "node": ">=6.9.0"
289+ }
290+ },
291+ "node_modules/@babel/parser": {
292+ "version": "7.18.6",
293+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
294+ "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==",
295+ "dev": true,
296+ "bin": {
297+ "parser": "bin/babel-parser.js"
298+ },
299+ "engines": {
300+ "node": ">=6.0.0"
301+ }
302+ },
303+ "node_modules/@babel/plugin-transform-react-jsx-self": {
304+ "version": "7.18.6",
305+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
306+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
307+ "dev": true,
308+ "dependencies": {
309+ "@babel/helper-plugin-utils": "^7.18.6"
310+ },
311+ "engines": {
312+ "node": ">=6.9.0"
313+ },
314+ "peerDependencies": {
315+ "@babel/core": "^7.0.0-0"
316+ }
317+ },
318+ "node_modules/@babel/plugin-transform-react-jsx-source": {
319+ "version": "7.18.6",
320+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
321+ "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
322+ "dev": true,
323+ "dependencies": {
324+ "@babel/helper-plugin-utils": "^7.18.6"
325+ },
326+ "engines": {
327+ "node": ">=6.9.0"
328+ },
329+ "peerDependencies": {
330+ "@babel/core": "^7.0.0-0"
331+ }
332+ },
333+ "node_modules/@babel/runtime": {
334+ "version": "7.18.6",
335+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz",
336+ "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==",
337+ "dependencies": {
338+ "regenerator-runtime": "^0.13.4"
339+ },
340+ "engines": {
341+ "node": ">=6.9.0"
342+ }
343+ },
344+ "node_modules/@babel/template": {
345+ "version": "7.18.6",
346+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
347+ "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
348+ "dev": true,
349+ "dependencies": {
350+ "@babel/code-frame": "^7.18.6",
351+ "@babel/parser": "^7.18.6",
352+ "@babel/types": "^7.18.6"
353+ },
354+ "engines": {
355+ "node": ">=6.9.0"
356+ }
357+ },
358+ "node_modules/@babel/traverse": {
359+ "version": "7.18.6",
360+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
361+ "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
362+ "dev": true,
363+ "dependencies": {
364+ "@babel/code-frame": "^7.18.6",
365+ "@babel/generator": "^7.18.6",
366+ "@babel/helper-environment-visitor": "^7.18.6",
367+ "@babel/helper-function-name": "^7.18.6",
368+ "@babel/helper-hoist-variables": "^7.18.6",
369+ "@babel/helper-split-export-declaration": "^7.18.6",
370+ "@babel/parser": "^7.18.6",
371+ "@babel/types": "^7.18.6",
372+ "debug": "^4.1.0",
373+ "globals": "^11.1.0"
374+ },
375+ "engines": {
376+ "node": ">=6.9.0"
377+ }
378+ },
379+ "node_modules/@babel/types": {
380+ "version": "7.18.7",
381+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
382+ "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
383+ "dev": true,
384+ "dependencies": {
385+ "@babel/helper-validator-identifier": "^7.18.6",
386+ "to-fast-properties": "^2.0.0"
387+ },
388+ "engines": {
389+ "node": ">=6.9.0"
390+ }
391+ },
392+ "node_modules/@heroicons/react": {
393+ "version": "1.0.6",
394+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz",
395+ "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==",
396+ "peerDependencies": {
397+ "react": ">= 16"
398+ }
399+ },
400+ "node_modules/@jridgewell/gen-mapping": {
401+ "version": "0.1.1",
402+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
403+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
404+ "dev": true,
405+ "dependencies": {
406+ "@jridgewell/set-array": "^1.0.0",
407+ "@jridgewell/sourcemap-codec": "^1.4.10"
408+ },
409+ "engines": {
410+ "node": ">=6.0.0"
411+ }
412+ },
413+ "node_modules/@jridgewell/resolve-uri": {
414+ "version": "3.0.8",
415+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
416+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
417+ "dev": true,
418+ "engines": {
419+ "node": ">=6.0.0"
420+ }
421+ },
422+ "node_modules/@jridgewell/set-array": {
423+ "version": "1.1.2",
424+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
425+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
426+ "dev": true,
427+ "engines": {
428+ "node": ">=6.0.0"
429+ }
430+ },
431+ "node_modules/@jridgewell/sourcemap-codec": {
432+ "version": "1.4.14",
433+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
434+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
435+ "dev": true
436+ },
437+ "node_modules/@jridgewell/trace-mapping": {
438+ "version": "0.3.14",
439+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
440+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
441+ "dev": true,
442+ "dependencies": {
443+ "@jridgewell/resolve-uri": "^3.0.3",
444+ "@jridgewell/sourcemap-codec": "^1.4.10"
445+ }
446+ },
447+ "node_modules/@microsoft/fetch-event-source": {
448+ "version": "2.0.1",
449+ "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
450+ "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="
451+ },
452+ "node_modules/@nodelib/fs.scandir": {
453+ "version": "2.1.5",
454+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
455+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
456+ "dev": true,
457+ "dependencies": {
458+ "@nodelib/fs.stat": "2.0.5",
459+ "run-parallel": "^1.1.9"
460+ },
461+ "engines": {
462+ "node": ">= 8"
463+ }
464+ },
465+ "node_modules/@nodelib/fs.stat": {
466+ "version": "2.0.5",
467+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
468+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
469+ "dev": true,
470+ "engines": {
471+ "node": ">= 8"
472+ }
473+ },
474+ "node_modules/@nodelib/fs.walk": {
475+ "version": "1.2.8",
476+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
477+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
478+ "dev": true,
479+ "dependencies": {
480+ "@nodelib/fs.scandir": "2.1.5",
481+ "fastq": "^1.6.0"
482+ },
483+ "engines": {
484+ "node": ">= 8"
485+ }
486+ },
487+ "node_modules/@radix-ui/popper": {
488+ "version": "0.1.0",
489+ "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz",
490+ "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==",
491+ "dependencies": {
492+ "@babel/runtime": "^7.13.10",
493+ "csstype": "^3.0.4"
494+ }
495+ },
496+ "node_modules/@radix-ui/primitive": {
497+ "version": "0.1.0",
498+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz",
499+ "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==",
500+ "dependencies": {
501+ "@babel/runtime": "^7.13.10"
502+ }
503+ },
504+ "node_modules/@radix-ui/react-arrow": {
505+ "version": "0.1.4",
506+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.4.tgz",
507+ "integrity": "sha512-BB6XzAb7Ml7+wwpFdYVtZpK1BlMgqyafSQNGzhIpSZ4uXvXOHPlR5GP8M449JkeQzgQjv9Mp1AsJxFC0KuOtuA==",
508+ "dependencies": {
509+ "@babel/runtime": "^7.13.10",
510+ "@radix-ui/react-primitive": "0.1.4"
511+ },
512+ "peerDependencies": {
513+ "react": "^16.8 || ^17.0"
514+ }
515+ },
516+ "node_modules/@radix-ui/react-collection": {
517+ "version": "0.1.4",
518+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-0.1.4.tgz",
519+ "integrity": "sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==",
520+ "dependencies": {
521+ "@babel/runtime": "^7.13.10",
522+ "@radix-ui/react-compose-refs": "0.1.0",
523+ "@radix-ui/react-context": "0.1.1",
524+ "@radix-ui/react-primitive": "0.1.4",
525+ "@radix-ui/react-slot": "0.1.2"
526+ },
527+ "peerDependencies": {
528+ "react": "^16.8 || ^17.0"
529+ }
530+ },
531+ "node_modules/@radix-ui/react-compose-refs": {
532+ "version": "0.1.0",
533+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz",
534+ "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==",
535+ "dependencies": {
536+ "@babel/runtime": "^7.13.10"
537+ },
538+ "peerDependencies": {
539+ "react": "^16.8 || ^17.0"
540+ }
541+ },
542+ "node_modules/@radix-ui/react-context": {
543+ "version": "0.1.1",
544+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz",
545+ "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==",
546+ "dependencies": {
547+ "@babel/runtime": "^7.13.10"
548+ },
549+ "peerDependencies": {
550+ "react": "^16.8 || ^17.0"
551+ }
552+ },
553+ "node_modules/@radix-ui/react-dismissable-layer": {
554+ "version": "0.1.5",
555+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-0.1.5.tgz",
556+ "integrity": "sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==",
557+ "dependencies": {
558+ "@babel/runtime": "^7.13.10",
559+ "@radix-ui/primitive": "0.1.0",
560+ "@radix-ui/react-compose-refs": "0.1.0",
561+ "@radix-ui/react-primitive": "0.1.4",
562+ "@radix-ui/react-use-body-pointer-events": "0.1.1",
563+ "@radix-ui/react-use-callback-ref": "0.1.0",
564+ "@radix-ui/react-use-escape-keydown": "0.1.0"
565+ },
566+ "peerDependencies": {
567+ "react": "^16.8 || ^17.0"
568+ }
569+ },
570+ "node_modules/@radix-ui/react-dropdown-menu": {
571+ "version": "0.1.6",
572+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-0.1.6.tgz",
573+ "integrity": "sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==",
574+ "dependencies": {
575+ "@babel/runtime": "^7.13.10",
576+ "@radix-ui/primitive": "0.1.0",
577+ "@radix-ui/react-compose-refs": "0.1.0",
578+ "@radix-ui/react-context": "0.1.1",
579+ "@radix-ui/react-id": "0.1.5",
580+ "@radix-ui/react-menu": "0.1.6",
581+ "@radix-ui/react-primitive": "0.1.4",
582+ "@radix-ui/react-use-controllable-state": "0.1.0"
583+ },
584+ "peerDependencies": {
585+ "react": "^16.8 || ^17.0",
586+ "react-dom": "^16.8 || ^17.0"
587+ }
588+ },
589+ "node_modules/@radix-ui/react-focus-guards": {
590+ "version": "0.1.0",
591+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-0.1.0.tgz",
592+ "integrity": "sha512-kRx/swAjEfBpQ3ns7J3H4uxpXuWCqN7MpALiSDOXiyo2vkWv0L9sxvbpZeTulINuE3CGMzicVMuNc/VWXjFKOg==",
593+ "dependencies": {
594+ "@babel/runtime": "^7.13.10"
595+ },
596+ "peerDependencies": {
597+ "react": "^16.8 || ^17.0"
598+ }
599+ },
600+ "node_modules/@radix-ui/react-focus-scope": {
601+ "version": "0.1.4",
602+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-0.1.4.tgz",
603+ "integrity": "sha512-fbA4ES3H4Wkxp+OeLhvN6SwL7mXNn/aBtUf7DRYxY9+Akrf7dRxl2ck4lgcpPsSg3zSDsEwLcY+h5cmj5yvlug==",
604+ "dependencies": {
605+ "@babel/runtime": "^7.13.10",
606+ "@radix-ui/react-compose-refs": "0.1.0",
607+ "@radix-ui/react-primitive": "0.1.4",
608+ "@radix-ui/react-use-callback-ref": "0.1.0"
609+ },
610+ "peerDependencies": {
611+ "react": "^16.8 || ^17.0"
612+ }
613+ },
614+ "node_modules/@radix-ui/react-id": {
615+ "version": "0.1.5",
616+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz",
617+ "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==",
618+ "dependencies": {
619+ "@babel/runtime": "^7.13.10",
620+ "@radix-ui/react-use-layout-effect": "0.1.0"
621+ },
622+ "peerDependencies": {
623+ "react": "^16.8 || ^17.0"
624+ }
625+ },
626+ "node_modules/@radix-ui/react-menu": {
627+ "version": "0.1.6",
628+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-0.1.6.tgz",
629+ "integrity": "sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==",
630+ "dependencies": {
631+ "@babel/runtime": "^7.13.10",
632+ "@radix-ui/primitive": "0.1.0",
633+ "@radix-ui/react-collection": "0.1.4",
634+ "@radix-ui/react-compose-refs": "0.1.0",
635+ "@radix-ui/react-context": "0.1.1",
636+ "@radix-ui/react-dismissable-layer": "0.1.5",
637+ "@radix-ui/react-focus-guards": "0.1.0",
638+ "@radix-ui/react-focus-scope": "0.1.4",
639+ "@radix-ui/react-id": "0.1.5",
640+ "@radix-ui/react-popper": "0.1.4",
641+ "@radix-ui/react-portal": "0.1.4",
642+ "@radix-ui/react-presence": "0.1.2",
643+ "@radix-ui/react-primitive": "0.1.4",
644+ "@radix-ui/react-roving-focus": "0.1.5",
645+ "@radix-ui/react-use-callback-ref": "0.1.0",
646+ "@radix-ui/react-use-direction": "0.1.0",
647+ "aria-hidden": "^1.1.1",
648+ "react-remove-scroll": "^2.4.0"
649+ },
650+ "peerDependencies": {
651+ "react": "^16.8 || ^17.0",
652+ "react-dom": "^16.8 || ^17.0"
653+ }
654+ },
655+ "node_modules/@radix-ui/react-popper": {
656+ "version": "0.1.4",
657+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.4.tgz",
658+ "integrity": "sha512-18gDYof97t8UQa7zwklG1Dr8jIdj3u+rVOQLzPi9f5i1YQak/pVGkaqw8aY+iDUknKKuZniTk/7jbAJUYlKyOw==",
659+ "dependencies": {
660+ "@babel/runtime": "^7.13.10",
661+ "@radix-ui/popper": "0.1.0",
662+ "@radix-ui/react-arrow": "0.1.4",
663+ "@radix-ui/react-compose-refs": "0.1.0",
664+ "@radix-ui/react-context": "0.1.1",
665+ "@radix-ui/react-primitive": "0.1.4",
666+ "@radix-ui/react-use-rect": "0.1.1",
667+ "@radix-ui/react-use-size": "0.1.1",
668+ "@radix-ui/rect": "0.1.1"
669+ },
670+ "peerDependencies": {
671+ "react": "^16.8 || ^17.0"
672+ }
673+ },
674+ "node_modules/@radix-ui/react-portal": {
675+ "version": "0.1.4",
676+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz",
677+ "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==",
678+ "dependencies": {
679+ "@babel/runtime": "^7.13.10",
680+ "@radix-ui/react-primitive": "0.1.4",
681+ "@radix-ui/react-use-layout-effect": "0.1.0"
682+ },
683+ "peerDependencies": {
684+ "react": "^16.8 || ^17.0",
685+ "react-dom": "^16.8 || ^17.0"
686+ }
687+ },
688+ "node_modules/@radix-ui/react-presence": {
689+ "version": "0.1.2",
690+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.2.tgz",
691+ "integrity": "sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==",
692+ "dependencies": {
693+ "@babel/runtime": "^7.13.10",
694+ "@radix-ui/react-compose-refs": "0.1.0",
695+ "@radix-ui/react-use-layout-effect": "0.1.0"
696+ },
697+ "peerDependencies": {
698+ "react": ">=16.8"
699+ }
700+ },
701+ "node_modules/@radix-ui/react-primitive": {
702+ "version": "0.1.4",
703+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz",
704+ "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==",
705+ "dependencies": {
706+ "@babel/runtime": "^7.13.10",
707+ "@radix-ui/react-slot": "0.1.2"
708+ },
709+ "peerDependencies": {
710+ "react": "^16.8 || ^17.0"
711+ }
712+ },
713+ "node_modules/@radix-ui/react-roving-focus": {
714+ "version": "0.1.5",
715+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz",
716+ "integrity": "sha512-ClwKPS5JZE+PaHCoW7eu1onvE61pDv4kO8W4t5Ra3qMFQiTJLZMdpBQUhksN//DaVygoLirz4Samdr5Y1x1FSA==",
717+ "dependencies": {
718+ "@babel/runtime": "^7.13.10",
719+ "@radix-ui/primitive": "0.1.0",
720+ "@radix-ui/react-collection": "0.1.4",
721+ "@radix-ui/react-compose-refs": "0.1.0",
722+ "@radix-ui/react-context": "0.1.1",
723+ "@radix-ui/react-id": "0.1.5",
724+ "@radix-ui/react-primitive": "0.1.4",
725+ "@radix-ui/react-use-callback-ref": "0.1.0",
726+ "@radix-ui/react-use-controllable-state": "0.1.0"
727+ },
728+ "peerDependencies": {
729+ "react": "^16.8 || ^17.0"
730+ }
731+ },
732+ "node_modules/@radix-ui/react-slot": {
733+ "version": "0.1.2",
734+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz",
735+ "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==",
736+ "dependencies": {
737+ "@babel/runtime": "^7.13.10",
738+ "@radix-ui/react-compose-refs": "0.1.0"
739+ },
740+ "peerDependencies": {
741+ "react": "^16.8 || ^17.0"
742+ }
743+ },
744+ "node_modules/@radix-ui/react-toggle": {
745+ "version": "0.1.4",
746+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-0.1.4.tgz",
747+ "integrity": "sha512-gxUq6NgMc4ChV8VJnwdYqueeoblspwXHAexYo+jM9N2hFLbI1C587jLjdTHzIcUa9q68Xaw4jtiImWDOokEhRw==",
748+ "dependencies": {
749+ "@babel/runtime": "^7.13.10",
750+ "@radix-ui/primitive": "0.1.0",
751+ "@radix-ui/react-primitive": "0.1.4",
752+ "@radix-ui/react-use-controllable-state": "0.1.0"
753+ },
754+ "peerDependencies": {
755+ "react": "^16.8 || ^17.0"
756+ }
757+ },
758+ "node_modules/@radix-ui/react-toggle-group": {
759+ "version": "0.1.5",
760+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-0.1.5.tgz",
761+ "integrity": "sha512-Yp14wFiqe00azF+sG5CCJz4JGOP/f5Jj+CxLlZCmMpG5qhVTWeaeG4YH6pvX4KL41fS8x9FAaLb8wW9y01o67g==",
762+ "dependencies": {
763+ "@babel/runtime": "^7.13.10",
764+ "@radix-ui/primitive": "0.1.0",
765+ "@radix-ui/react-context": "0.1.1",
766+ "@radix-ui/react-primitive": "0.1.4",
767+ "@radix-ui/react-roving-focus": "0.1.5",
768+ "@radix-ui/react-toggle": "0.1.4",
769+ "@radix-ui/react-use-controllable-state": "0.1.0"
770+ },
771+ "peerDependencies": {
772+ "react": "^16.8 || ^17.0"
773+ }
774+ },
775+ "node_modules/@radix-ui/react-use-body-pointer-events": {
776+ "version": "0.1.1",
777+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-body-pointer-events/-/react-use-body-pointer-events-0.1.1.tgz",
778+ "integrity": "sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==",
779+ "dependencies": {
780+ "@babel/runtime": "^7.13.10",
781+ "@radix-ui/react-use-layout-effect": "0.1.0"
782+ },
783+ "peerDependencies": {
784+ "react": "^16.8 || ^17.0"
785+ }
786+ },
787+ "node_modules/@radix-ui/react-use-callback-ref": {
788+ "version": "0.1.0",
789+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz",
790+ "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==",
791+ "dependencies": {
792+ "@babel/runtime": "^7.13.10"
793+ },
794+ "peerDependencies": {
795+ "react": "^16.8 || ^17.0"
796+ }
797+ },
798+ "node_modules/@radix-ui/react-use-controllable-state": {
799+ "version": "0.1.0",
800+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz",
801+ "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==",
802+ "dependencies": {
803+ "@babel/runtime": "^7.13.10",
804+ "@radix-ui/react-use-callback-ref": "0.1.0"
805+ },
806+ "peerDependencies": {
807+ "react": "^16.8 || ^17.0"
808+ }
809+ },
810+ "node_modules/@radix-ui/react-use-direction": {
811+ "version": "0.1.0",
812+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-direction/-/react-use-direction-0.1.0.tgz",
813+ "integrity": "sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==",
814+ "dependencies": {
815+ "@babel/runtime": "^7.13.10"
816+ },
817+ "peerDependencies": {
818+ "react": "^16.8 || ^17.0"
819+ }
820+ },
821+ "node_modules/@radix-ui/react-use-escape-keydown": {
822+ "version": "0.1.0",
823+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz",
824+ "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==",
825+ "dependencies": {
826+ "@babel/runtime": "^7.13.10",
827+ "@radix-ui/react-use-callback-ref": "0.1.0"
828+ },
829+ "peerDependencies": {
830+ "react": "^16.8 || ^17.0"
831+ }
832+ },
833+ "node_modules/@radix-ui/react-use-layout-effect": {
834+ "version": "0.1.0",
835+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz",
836+ "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==",
837+ "dependencies": {
838+ "@babel/runtime": "^7.13.10"
839+ },
840+ "peerDependencies": {
841+ "react": "^16.8 || ^17.0"
842+ }
843+ },
844+ "node_modules/@radix-ui/react-use-rect": {
845+ "version": "0.1.1",
846+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz",
847+ "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==",
848+ "dependencies": {
849+ "@babel/runtime": "^7.13.10",
850+ "@radix-ui/rect": "0.1.1"
851+ },
852+ "peerDependencies": {
853+ "react": "^16.8 || ^17.0"
854+ }
855+ },
856+ "node_modules/@radix-ui/react-use-size": {
857+ "version": "0.1.1",
858+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.1.tgz",
859+ "integrity": "sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==",
860+ "dependencies": {
861+ "@babel/runtime": "^7.13.10"
862+ },
863+ "peerDependencies": {
864+ "react": "^16.8 || ^17.0"
865+ }
866+ },
867+ "node_modules/@radix-ui/rect": {
868+ "version": "0.1.1",
869+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz",
870+ "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==",
871+ "dependencies": {
872+ "@babel/runtime": "^7.13.10"
873+ }
874+ },
875+ "node_modules/@rollup/pluginutils": {
876+ "version": "4.2.1",
877+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
878+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
879+ "dev": true,
880+ "dependencies": {
881+ "estree-walker": "^2.0.1",
882+ "picomatch": "^2.2.2"
883+ },
884+ "engines": {
885+ "node": ">= 8.0.0"
886+ }
887+ },
888+ "node_modules/@types/lodash": {
889+ "version": "4.14.182",
890+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
891+ "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==",
892+ "dev": true
893+ },
894+ "node_modules/@types/lodash.debounce": {
895+ "version": "4.0.7",
896+ "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz",
897+ "integrity": "sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA==",
898+ "dev": true,
899+ "dependencies": {
900+ "@types/lodash": "*"
901+ }
902+ },
903+ "node_modules/@types/prop-types": {
904+ "version": "15.7.5",
905+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
906+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
907+ "devOptional": true
908+ },
909+ "node_modules/@types/react": {
910+ "version": "17.0.47",
911+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
912+ "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
913+ "devOptional": true,
914+ "dependencies": {
915+ "@types/prop-types": "*",
916+ "@types/scheduler": "*",
917+ "csstype": "^3.0.2"
918+ }
919+ },
920+ "node_modules/@types/react-dom": {
921+ "version": "17.0.17",
922+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz",
923+ "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==",
924+ "dev": true,
925+ "dependencies": {
926+ "@types/react": "^17"
927+ }
928+ },
929+ "node_modules/@types/scheduler": {
930+ "version": "0.16.2",
931+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
932+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
933+ "devOptional": true
934+ },
935+ "node_modules/@urbit/api": {
936+ "version": "2.1.1",
937+ "resolved": "https://registry.npmjs.org/@urbit/api/-/api-2.1.1.tgz",
938+ "integrity": "sha512-QRlqhtJ73q+pgMdSwuOO62HlxA7/2c5ylCcOUT01LXkJ2LTVCl5u+QnejdDvUmqjOuN2PyZk7df30xJVg6rC2A==",
939+ "dependencies": {
940+ "@babel/runtime": "^7.16.0",
941+ "big-integer": "^1.6.48",
942+ "core-js": "^3.19.1",
943+ "immer": "^9.0.1",
944+ "urbit-ob": "^5.0.1"
945+ }
946+ },
947+ "node_modules/@urbit/http-api": {
948+ "version": "2.1.3",
949+ "resolved": "https://registry.npmjs.org/@urbit/http-api/-/http-api-2.1.3.tgz",
950+ "integrity": "sha512-/wL7kQ/b2m24+cJiQ/3bFoU4jq3Qbl9h+JCb3H/1yovhFSUI7RPUbV20ONhCPTryXch6CC5QbgCALStJYHvKJg==",
951+ "dependencies": {
952+ "@babel/runtime": "^7.12.5",
953+ "@microsoft/fetch-event-source": "^2.0.0",
954+ "browser-or-node": "^1.3.0",
955+ "core-js": "^3.19.1"
956+ }
957+ },
958+ "node_modules/@urbit/vite-plugin-urbit": {
959+ "version": "0.8.0",
960+ "resolved": "https://registry.npmjs.org/@urbit/vite-plugin-urbit/-/vite-plugin-urbit-0.8.0.tgz",
961+ "integrity": "sha512-cx540xZBuHfzud/kOuYU4xPpsFcgE7mF0heac5uXVutDqjySvVXimEuZgBN23ULC7l60R/bAJ2jOWygBwWen4A==",
962+ "dev": true,
963+ "dependencies": {
964+ "vite-plugin-html-config": "^1.0.6",
965+ "vite-plugin-rewrite-all": "^0.1.2"
966+ }
967+ },
968+ "node_modules/@vitejs/plugin-react-refresh": {
969+ "version": "1.3.6",
970+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz",
971+ "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==",
972+ "deprecated": "This package has been deprecated in favor of @vitejs/plugin-react",
973+ "dev": true,
974+ "dependencies": {
975+ "@babel/core": "^7.14.8",
976+ "@babel/plugin-transform-react-jsx-self": "^7.14.5",
977+ "@babel/plugin-transform-react-jsx-source": "^7.14.5",
978+ "@rollup/pluginutils": "^4.1.1",
979+ "react-refresh": "^0.10.0"
980+ },
981+ "engines": {
982+ "node": ">=12.0.0"
983+ }
984+ },
985+ "node_modules/acorn": {
986+ "version": "7.4.1",
987+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
988+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
989+ "dev": true,
990+ "bin": {
991+ "acorn": "bin/acorn"
992+ },
993+ "engines": {
994+ "node": ">=0.4.0"
995+ }
996+ },
997+ "node_modules/acorn-node": {
998+ "version": "1.8.2",
999+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
1000+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
1001+ "dev": true,
1002+ "dependencies": {
1003+ "acorn": "^7.0.0",
1004+ "acorn-walk": "^7.0.0",
1005+ "xtend": "^4.0.2"
1006+ }
1007+ },
1008+ "node_modules/acorn-walk": {
1009+ "version": "7.2.0",
1010+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
1011+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
1012+ "dev": true,
1013+ "engines": {
1014+ "node": ">=0.4.0"
1015+ }
1016+ },
1017+ "node_modules/ansi-styles": {
1018+ "version": "3.2.1",
1019+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1020+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1021+ "dev": true,
1022+ "dependencies": {
1023+ "color-convert": "^1.9.0"
1024+ },
1025+ "engines": {
1026+ "node": ">=4"
1027+ }
1028+ },
1029+ "node_modules/anymatch": {
1030+ "version": "3.1.2",
1031+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
1032+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
1033+ "dev": true,
1034+ "dependencies": {
1035+ "normalize-path": "^3.0.0",
1036+ "picomatch": "^2.0.4"
1037+ },
1038+ "engines": {
1039+ "node": ">= 8"
1040+ }
1041+ },
1042+ "node_modules/arg": {
1043+ "version": "5.0.2",
1044+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1045+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1046+ "dev": true
1047+ },
1048+ "node_modules/aria-hidden": {
1049+ "version": "1.1.3",
1050+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz",
1051+ "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==",
1052+ "dependencies": {
1053+ "tslib": "^1.0.0"
1054+ },
1055+ "engines": {
1056+ "node": ">=8.5.0"
1057+ }
1058+ },
1059+ "node_modules/autoprefixer": {
1060+ "version": "10.4.7",
1061+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz",
1062+ "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==",
1063+ "dev": true,
1064+ "funding": [
1065+ {
1066+ "type": "opencollective",
1067+ "url": "https://opencollective.com/postcss/"
1068+ },
1069+ {
1070+ "type": "tidelift",
1071+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
1072+ }
1073+ ],
1074+ "dependencies": {
1075+ "browserslist": "^4.20.3",
1076+ "caniuse-lite": "^1.0.30001335",
1077+ "fraction.js": "^4.2.0",
1078+ "normalize-range": "^0.1.2",
1079+ "picocolors": "^1.0.0",
1080+ "postcss-value-parser": "^4.2.0"
1081+ },
1082+ "bin": {
1083+ "autoprefixer": "bin/autoprefixer"
1084+ },
1085+ "engines": {
1086+ "node": "^10 || ^12 || >=14"
1087+ },
1088+ "peerDependencies": {
1089+ "postcss": "^8.1.0"
1090+ }
1091+ },
1092+ "node_modules/balanced-match": {
1093+ "version": "1.0.2",
1094+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1095+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
1096+ },
1097+ "node_modules/big-integer": {
1098+ "version": "1.6.51",
1099+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
1100+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
1101+ "engines": {
1102+ "node": ">=0.6"
1103+ }
1104+ },
1105+ "node_modules/binary-extensions": {
1106+ "version": "2.2.0",
1107+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1108+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1109+ "dev": true,
1110+ "engines": {
1111+ "node": ">=8"
1112+ }
1113+ },
1114+ "node_modules/bn.js": {
1115+ "version": "4.12.0",
1116+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
1117+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
1118+ },
1119+ "node_modules/brace-expansion": {
1120+ "version": "1.1.11",
1121+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1122+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1123+ "dependencies": {
1124+ "balanced-match": "^1.0.0",
1125+ "concat-map": "0.0.1"
1126+ }
1127+ },
1128+ "node_modules/braces": {
1129+ "version": "3.0.2",
1130+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1131+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1132+ "dev": true,
1133+ "dependencies": {
1134+ "fill-range": "^7.0.1"
1135+ },
1136+ "engines": {
1137+ "node": ">=8"
1138+ }
1139+ },
1140+ "node_modules/broadcast-channel": {
1141+ "version": "3.7.0",
1142+ "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
1143+ "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
1144+ "dependencies": {
1145+ "@babel/runtime": "^7.7.2",
1146+ "detect-node": "^2.1.0",
1147+ "js-sha3": "0.8.0",
1148+ "microseconds": "0.2.0",
1149+ "nano-time": "1.0.0",
1150+ "oblivious-set": "1.0.0",
1151+ "rimraf": "3.0.2",
1152+ "unload": "2.2.0"
1153+ }
1154+ },
1155+ "node_modules/browser-or-node": {
1156+ "version": "1.3.0",
1157+ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz",
1158+ "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg=="
1159+ },
1160+ "node_modules/browserslist": {
1161+ "version": "4.21.1",
1162+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
1163+ "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
1164+ "dev": true,
1165+ "funding": [
1166+ {
1167+ "type": "opencollective",
1168+ "url": "https://opencollective.com/browserslist"
1169+ },
1170+ {
1171+ "type": "tidelift",
1172+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1173+ }
1174+ ],
1175+ "dependencies": {
1176+ "caniuse-lite": "^1.0.30001359",
1177+ "electron-to-chromium": "^1.4.172",
1178+ "node-releases": "^2.0.5",
1179+ "update-browserslist-db": "^1.0.4"
1180+ },
1181+ "bin": {
1182+ "browserslist": "cli.js"
1183+ },
1184+ "engines": {
1185+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1186+ }
1187+ },
1188+ "node_modules/camelcase-css": {
1189+ "version": "2.0.1",
1190+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1191+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1192+ "dev": true,
1193+ "engines": {
1194+ "node": ">= 6"
1195+ }
1196+ },
1197+ "node_modules/caniuse-lite": {
1198+ "version": "1.0.30001361",
1199+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
1200+ "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==",
1201+ "dev": true,
1202+ "funding": [
1203+ {
1204+ "type": "opencollective",
1205+ "url": "https://opencollective.com/browserslist"
1206+ },
1207+ {
1208+ "type": "tidelift",
1209+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1210+ }
1211+ ]
1212+ },
1213+ "node_modules/chalk": {
1214+ "version": "2.4.2",
1215+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1216+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1217+ "dev": true,
1218+ "dependencies": {
1219+ "ansi-styles": "^3.2.1",
1220+ "escape-string-regexp": "^1.0.5",
1221+ "supports-color": "^5.3.0"
1222+ },
1223+ "engines": {
1224+ "node": ">=4"
1225+ }
1226+ },
1227+ "node_modules/chokidar": {
1228+ "version": "3.5.3",
1229+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1230+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1231+ "dev": true,
1232+ "funding": [
1233+ {
1234+ "type": "individual",
1235+ "url": "https://paulmillr.com/funding/"
1236+ }
1237+ ],
1238+ "dependencies": {
1239+ "anymatch": "~3.1.2",
1240+ "braces": "~3.0.2",
1241+ "glob-parent": "~5.1.2",
1242+ "is-binary-path": "~2.1.0",
1243+ "is-glob": "~4.0.1",
1244+ "normalize-path": "~3.0.0",
1245+ "readdirp": "~3.6.0"
1246+ },
1247+ "engines": {
1248+ "node": ">= 8.10.0"
1249+ },
1250+ "optionalDependencies": {
1251+ "fsevents": "~2.3.2"
1252+ }
1253+ },
1254+ "node_modules/chokidar/node_modules/glob-parent": {
1255+ "version": "5.1.2",
1256+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1257+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1258+ "dev": true,
1259+ "dependencies": {
1260+ "is-glob": "^4.0.1"
1261+ },
1262+ "engines": {
1263+ "node": ">= 6"
1264+ }
1265+ },
1266+ "node_modules/classnames": {
1267+ "version": "2.3.1",
1268+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
1269+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
1270+ },
1271+ "node_modules/color-convert": {
1272+ "version": "1.9.3",
1273+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1274+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1275+ "dev": true,
1276+ "dependencies": {
1277+ "color-name": "1.1.3"
1278+ }
1279+ },
1280+ "node_modules/color-name": {
1281+ "version": "1.1.3",
1282+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1283+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1284+ "dev": true
1285+ },
1286+ "node_modules/concat-map": {
1287+ "version": "0.0.1",
1288+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1289+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
1290+ },
1291+ "node_modules/connect-history-api-fallback": {
1292+ "version": "1.6.0",
1293+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
1294+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
1295+ "dev": true,
1296+ "engines": {
1297+ "node": ">=0.8"
1298+ }
1299+ },
1300+ "node_modules/convert-source-map": {
1301+ "version": "1.8.0",
1302+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
1303+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
1304+ "dev": true,
1305+ "dependencies": {
1306+ "safe-buffer": "~5.1.1"
1307+ }
1308+ },
1309+ "node_modules/core-js": {
1310+ "version": "3.23.3",
1311+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
1312+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==",
1313+ "hasInstallScript": true,
1314+ "funding": {
1315+ "type": "opencollective",
1316+ "url": "https://opencollective.com/core-js"
1317+ }
1318+ },
1319+ "node_modules/cssesc": {
1320+ "version": "3.0.0",
1321+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1322+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1323+ "dev": true,
1324+ "bin": {
1325+ "cssesc": "bin/cssesc"
1326+ },
1327+ "engines": {
1328+ "node": ">=4"
1329+ }
1330+ },
1331+ "node_modules/csstype": {
1332+ "version": "3.1.0",
1333+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
1334+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
1335+ },
1336+ "node_modules/debug": {
1337+ "version": "4.3.4",
1338+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1339+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1340+ "dev": true,
1341+ "dependencies": {
1342+ "ms": "2.1.2"
1343+ },
1344+ "engines": {
1345+ "node": ">=6.0"
1346+ },
1347+ "peerDependenciesMeta": {
1348+ "supports-color": {
1349+ "optional": true
1350+ }
1351+ }
1352+ },
1353+ "node_modules/defined": {
1354+ "version": "1.0.0",
1355+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1356+ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
1357+ "dev": true
1358+ },
1359+ "node_modules/detect-node": {
1360+ "version": "2.1.0",
1361+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
1362+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
1363+ },
1364+ "node_modules/detect-node-es": {
1365+ "version": "1.1.0",
1366+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
1367+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
1368+ },
1369+ "node_modules/detective": {
1370+ "version": "5.2.1",
1371+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
1372+ "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
1373+ "dev": true,
1374+ "dependencies": {
1375+ "acorn-node": "^1.8.2",
1376+ "defined": "^1.0.0",
1377+ "minimist": "^1.2.6"
1378+ },
1379+ "bin": {
1380+ "detective": "bin/detective.js"
1381+ },
1382+ "engines": {
1383+ "node": ">=0.8.0"
1384+ }
1385+ },
1386+ "node_modules/didyoumean": {
1387+ "version": "1.2.2",
1388+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1389+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1390+ "dev": true
1391+ },
1392+ "node_modules/dlv": {
1393+ "version": "1.1.3",
1394+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1395+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1396+ "dev": true
1397+ },
1398+ "node_modules/electron-to-chromium": {
1399+ "version": "1.4.176",
1400+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
1401+ "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw==",
1402+ "dev": true
1403+ },
1404+ "node_modules/esbuild": {
1405+ "version": "0.14.48",
1406+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz",
1407+ "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==",
1408+ "dev": true,
1409+ "hasInstallScript": true,
1410+ "bin": {
1411+ "esbuild": "bin/esbuild"
1412+ },
1413+ "engines": {
1414+ "node": ">=12"
1415+ },
1416+ "optionalDependencies": {
1417+ "esbuild-android-64": "0.14.48",
1418+ "esbuild-android-arm64": "0.14.48",
1419+ "esbuild-darwin-64": "0.14.48",
1420+ "esbuild-darwin-arm64": "0.14.48",
1421+ "esbuild-freebsd-64": "0.14.48",
1422+ "esbuild-freebsd-arm64": "0.14.48",
1423+ "esbuild-linux-32": "0.14.48",
1424+ "esbuild-linux-64": "0.14.48",
1425+ "esbuild-linux-arm": "0.14.48",
1426+ "esbuild-linux-arm64": "0.14.48",
1427+ "esbuild-linux-mips64le": "0.14.48",
1428+ "esbuild-linux-ppc64le": "0.14.48",
1429+ "esbuild-linux-riscv64": "0.14.48",
1430+ "esbuild-linux-s390x": "0.14.48",
1431+ "esbuild-netbsd-64": "0.14.48",
1432+ "esbuild-openbsd-64": "0.14.48",
1433+ "esbuild-sunos-64": "0.14.48",
1434+ "esbuild-windows-32": "0.14.48",
1435+ "esbuild-windows-64": "0.14.48",
1436+ "esbuild-windows-arm64": "0.14.48"
1437+ }
1438+ },
1439+ "node_modules/esbuild-android-64": {
1440+ "version": "0.14.48",
1441+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz",
1442+ "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==",
1443+ "cpu": [
1444+ "x64"
1445+ ],
1446+ "dev": true,
1447+ "optional": true,
1448+ "os": [
1449+ "android"
1450+ ],
1451+ "engines": {
1452+ "node": ">=12"
1453+ }
1454+ },
1455+ "node_modules/esbuild-android-arm64": {
1456+ "version": "0.14.48",
1457+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz",
1458+ "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==",
1459+ "cpu": [
1460+ "arm64"
1461+ ],
1462+ "dev": true,
1463+ "optional": true,
1464+ "os": [
1465+ "android"
1466+ ],
1467+ "engines": {
1468+ "node": ">=12"
1469+ }
1470+ },
1471+ "node_modules/esbuild-darwin-64": {
1472+ "version": "0.14.48",
1473+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz",
1474+ "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==",
1475+ "cpu": [
1476+ "x64"
1477+ ],
1478+ "dev": true,
1479+ "optional": true,
1480+ "os": [
1481+ "darwin"
1482+ ],
1483+ "engines": {
1484+ "node": ">=12"
1485+ }
1486+ },
1487+ "node_modules/esbuild-darwin-arm64": {
1488+ "version": "0.14.48",
1489+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz",
1490+ "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==",
1491+ "cpu": [
1492+ "arm64"
1493+ ],
1494+ "dev": true,
1495+ "optional": true,
1496+ "os": [
1497+ "darwin"
1498+ ],
1499+ "engines": {
1500+ "node": ">=12"
1501+ }
1502+ },
1503+ "node_modules/esbuild-freebsd-64": {
1504+ "version": "0.14.48",
1505+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz",
1506+ "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==",
1507+ "cpu": [
1508+ "x64"
1509+ ],
1510+ "dev": true,
1511+ "optional": true,
1512+ "os": [
1513+ "freebsd"
1514+ ],
1515+ "engines": {
1516+ "node": ">=12"
1517+ }
1518+ },
1519+ "node_modules/esbuild-freebsd-arm64": {
1520+ "version": "0.14.48",
1521+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz",
1522+ "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==",
1523+ "cpu": [
1524+ "arm64"
1525+ ],
1526+ "dev": true,
1527+ "optional": true,
1528+ "os": [
1529+ "freebsd"
1530+ ],
1531+ "engines": {
1532+ "node": ">=12"
1533+ }
1534+ },
1535+ "node_modules/esbuild-linux-32": {
1536+ "version": "0.14.48",
1537+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz",
1538+ "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==",
1539+ "cpu": [
1540+ "ia32"
1541+ ],
1542+ "dev": true,
1543+ "optional": true,
1544+ "os": [
1545+ "linux"
1546+ ],
1547+ "engines": {
1548+ "node": ">=12"
1549+ }
1550+ },
1551+ "node_modules/esbuild-linux-64": {
1552+ "version": "0.14.48",
1553+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz",
1554+ "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==",
1555+ "cpu": [
1556+ "x64"
1557+ ],
1558+ "dev": true,
1559+ "optional": true,
1560+ "os": [
1561+ "linux"
1562+ ],
1563+ "engines": {
1564+ "node": ">=12"
1565+ }
1566+ },
1567+ "node_modules/esbuild-linux-arm": {
1568+ "version": "0.14.48",
1569+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz",
1570+ "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==",
1571+ "cpu": [
1572+ "arm"
1573+ ],
1574+ "dev": true,
1575+ "optional": true,
1576+ "os": [
1577+ "linux"
1578+ ],
1579+ "engines": {
1580+ "node": ">=12"
1581+ }
1582+ },
1583+ "node_modules/esbuild-linux-arm64": {
1584+ "version": "0.14.48",
1585+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz",
1586+ "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==",
1587+ "cpu": [
1588+ "arm64"
1589+ ],
1590+ "dev": true,
1591+ "optional": true,
1592+ "os": [
1593+ "linux"
1594+ ],
1595+ "engines": {
1596+ "node": ">=12"
1597+ }
1598+ },
1599+ "node_modules/esbuild-linux-mips64le": {
1600+ "version": "0.14.48",
1601+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz",
1602+ "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==",
1603+ "cpu": [
1604+ "mips64el"
1605+ ],
1606+ "dev": true,
1607+ "optional": true,
1608+ "os": [
1609+ "linux"
1610+ ],
1611+ "engines": {
1612+ "node": ">=12"
1613+ }
1614+ },
1615+ "node_modules/esbuild-linux-ppc64le": {
1616+ "version": "0.14.48",
1617+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz",
1618+ "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==",
1619+ "cpu": [
1620+ "ppc64"
1621+ ],
1622+ "dev": true,
1623+ "optional": true,
1624+ "os": [
1625+ "linux"
1626+ ],
1627+ "engines": {
1628+ "node": ">=12"
1629+ }
1630+ },
1631+ "node_modules/esbuild-linux-riscv64": {
1632+ "version": "0.14.48",
1633+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz",
1634+ "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==",
1635+ "cpu": [
1636+ "riscv64"
1637+ ],
1638+ "dev": true,
1639+ "optional": true,
1640+ "os": [
1641+ "linux"
1642+ ],
1643+ "engines": {
1644+ "node": ">=12"
1645+ }
1646+ },
1647+ "node_modules/esbuild-linux-s390x": {
1648+ "version": "0.14.48",
1649+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz",
1650+ "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==",
1651+ "cpu": [
1652+ "s390x"
1653+ ],
1654+ "dev": true,
1655+ "optional": true,
1656+ "os": [
1657+ "linux"
1658+ ],
1659+ "engines": {
1660+ "node": ">=12"
1661+ }
1662+ },
1663+ "node_modules/esbuild-netbsd-64": {
1664+ "version": "0.14.48",
1665+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz",
1666+ "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==",
1667+ "cpu": [
1668+ "x64"
1669+ ],
1670+ "dev": true,
1671+ "optional": true,
1672+ "os": [
1673+ "netbsd"
1674+ ],
1675+ "engines": {
1676+ "node": ">=12"
1677+ }
1678+ },
1679+ "node_modules/esbuild-openbsd-64": {
1680+ "version": "0.14.48",
1681+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz",
1682+ "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==",
1683+ "cpu": [
1684+ "x64"
1685+ ],
1686+ "dev": true,
1687+ "optional": true,
1688+ "os": [
1689+ "openbsd"
1690+ ],
1691+ "engines": {
1692+ "node": ">=12"
1693+ }
1694+ },
1695+ "node_modules/esbuild-sunos-64": {
1696+ "version": "0.14.48",
1697+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz",
1698+ "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==",
1699+ "cpu": [
1700+ "x64"
1701+ ],
1702+ "dev": true,
1703+ "optional": true,
1704+ "os": [
1705+ "sunos"
1706+ ],
1707+ "engines": {
1708+ "node": ">=12"
1709+ }
1710+ },
1711+ "node_modules/esbuild-windows-32": {
1712+ "version": "0.14.48",
1713+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz",
1714+ "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==",
1715+ "cpu": [
1716+ "ia32"
1717+ ],
1718+ "dev": true,
1719+ "optional": true,
1720+ "os": [
1721+ "win32"
1722+ ],
1723+ "engines": {
1724+ "node": ">=12"
1725+ }
1726+ },
1727+ "node_modules/esbuild-windows-64": {
1728+ "version": "0.14.48",
1729+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz",
1730+ "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==",
1731+ "cpu": [
1732+ "x64"
1733+ ],
1734+ "dev": true,
1735+ "optional": true,
1736+ "os": [
1737+ "win32"
1738+ ],
1739+ "engines": {
1740+ "node": ">=12"
1741+ }
1742+ },
1743+ "node_modules/esbuild-windows-arm64": {
1744+ "version": "0.14.48",
1745+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz",
1746+ "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==",
1747+ "cpu": [
1748+ "arm64"
1749+ ],
1750+ "dev": true,
1751+ "optional": true,
1752+ "os": [
1753+ "win32"
1754+ ],
1755+ "engines": {
1756+ "node": ">=12"
1757+ }
1758+ },
1759+ "node_modules/escalade": {
1760+ "version": "3.1.1",
1761+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1762+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1763+ "dev": true,
1764+ "engines": {
1765+ "node": ">=6"
1766+ }
1767+ },
1768+ "node_modules/escape-string-regexp": {
1769+ "version": "1.0.5",
1770+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1771+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1772+ "dev": true,
1773+ "engines": {
1774+ "node": ">=0.8.0"
1775+ }
1776+ },
1777+ "node_modules/estree-walker": {
1778+ "version": "2.0.2",
1779+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1780+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1781+ "dev": true
1782+ },
1783+ "node_modules/fast-glob": {
1784+ "version": "3.2.11",
1785+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
1786+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
1787+ "dev": true,
1788+ "dependencies": {
1789+ "@nodelib/fs.stat": "^2.0.2",
1790+ "@nodelib/fs.walk": "^1.2.3",
1791+ "glob-parent": "^5.1.2",
1792+ "merge2": "^1.3.0",
1793+ "micromatch": "^4.0.4"
1794+ },
1795+ "engines": {
1796+ "node": ">=8.6.0"
1797+ }
1798+ },
1799+ "node_modules/fast-glob/node_modules/glob-parent": {
1800+ "version": "5.1.2",
1801+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1802+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1803+ "dev": true,
1804+ "dependencies": {
1805+ "is-glob": "^4.0.1"
1806+ },
1807+ "engines": {
1808+ "node": ">= 6"
1809+ }
1810+ },
1811+ "node_modules/fastq": {
1812+ "version": "1.13.0",
1813+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
1814+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
1815+ "dev": true,
1816+ "dependencies": {
1817+ "reusify": "^1.0.4"
1818+ }
1819+ },
1820+ "node_modules/fill-range": {
1821+ "version": "7.0.1",
1822+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1823+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1824+ "dev": true,
1825+ "dependencies": {
1826+ "to-regex-range": "^5.0.1"
1827+ },
1828+ "engines": {
1829+ "node": ">=8"
1830+ }
1831+ },
1832+ "node_modules/fraction.js": {
1833+ "version": "4.2.0",
1834+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
1835+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
1836+ "dev": true,
1837+ "engines": {
1838+ "node": "*"
1839+ },
1840+ "funding": {
1841+ "type": "patreon",
1842+ "url": "https://www.patreon.com/infusion"
1843+ }
1844+ },
1845+ "node_modules/fs.realpath": {
1846+ "version": "1.0.0",
1847+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1848+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
1849+ },
1850+ "node_modules/fsevents": {
1851+ "version": "2.3.2",
1852+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1853+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1854+ "dev": true,
1855+ "hasInstallScript": true,
1856+ "optional": true,
1857+ "os": [
1858+ "darwin"
1859+ ],
1860+ "engines": {
1861+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1862+ }
1863+ },
1864+ "node_modules/function-bind": {
1865+ "version": "1.1.1",
1866+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1867+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1868+ "dev": true
1869+ },
1870+ "node_modules/gensync": {
1871+ "version": "1.0.0-beta.2",
1872+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1873+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1874+ "dev": true,
1875+ "engines": {
1876+ "node": ">=6.9.0"
1877+ }
1878+ },
1879+ "node_modules/get-nonce": {
1880+ "version": "1.0.1",
1881+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
1882+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
1883+ "engines": {
1884+ "node": ">=6"
1885+ }
1886+ },
1887+ "node_modules/glob": {
1888+ "version": "7.2.3",
1889+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1890+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1891+ "dependencies": {
1892+ "fs.realpath": "^1.0.0",
1893+ "inflight": "^1.0.4",
1894+ "inherits": "2",
1895+ "minimatch": "^3.1.1",
1896+ "once": "^1.3.0",
1897+ "path-is-absolute": "^1.0.0"
1898+ },
1899+ "engines": {
1900+ "node": "*"
1901+ },
1902+ "funding": {
1903+ "url": "https://github.com/sponsors/isaacs"
1904+ }
1905+ },
1906+ "node_modules/glob-parent": {
1907+ "version": "6.0.2",
1908+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1909+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1910+ "dev": true,
1911+ "dependencies": {
1912+ "is-glob": "^4.0.3"
1913+ },
1914+ "engines": {
1915+ "node": ">=10.13.0"
1916+ }
1917+ },
1918+ "node_modules/globals": {
1919+ "version": "11.12.0",
1920+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1921+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1922+ "dev": true,
1923+ "engines": {
1924+ "node": ">=4"
1925+ }
1926+ },
1927+ "node_modules/has": {
1928+ "version": "1.0.3",
1929+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1930+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1931+ "dev": true,
1932+ "dependencies": {
1933+ "function-bind": "^1.1.1"
1934+ },
1935+ "engines": {
1936+ "node": ">= 0.4.0"
1937+ }
1938+ },
1939+ "node_modules/has-flag": {
1940+ "version": "3.0.0",
1941+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1942+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1943+ "dev": true,
1944+ "engines": {
1945+ "node": ">=4"
1946+ }
1947+ },
1948+ "node_modules/history": {
1949+ "version": "5.3.0",
1950+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
1951+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
1952+ "dependencies": {
1953+ "@babel/runtime": "^7.7.6"
1954+ }
1955+ },
1956+ "node_modules/immer": {
1957+ "version": "9.0.15",
1958+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
1959+ "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==",
1960+ "funding": {
1961+ "type": "opencollective",
1962+ "url": "https://opencollective.com/immer"
1963+ }
1964+ },
1965+ "node_modules/inflight": {
1966+ "version": "1.0.6",
1967+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1968+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1969+ "dependencies": {
1970+ "once": "^1.3.0",
1971+ "wrappy": "1"
1972+ }
1973+ },
1974+ "node_modules/inherits": {
1975+ "version": "2.0.4",
1976+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1977+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1978+ },
1979+ "node_modules/invariant": {
1980+ "version": "2.2.4",
1981+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
1982+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
1983+ "dependencies": {
1984+ "loose-envify": "^1.0.0"
1985+ }
1986+ },
1987+ "node_modules/is-binary-path": {
1988+ "version": "2.1.0",
1989+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1990+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1991+ "dev": true,
1992+ "dependencies": {
1993+ "binary-extensions": "^2.0.0"
1994+ },
1995+ "engines": {
1996+ "node": ">=8"
1997+ }
1998+ },
1999+ "node_modules/is-core-module": {
2000+ "version": "2.9.0",
2001+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
2002+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
2003+ "dev": true,
2004+ "dependencies": {
2005+ "has": "^1.0.3"
2006+ },
2007+ "funding": {
2008+ "url": "https://github.com/sponsors/ljharb"
2009+ }
2010+ },
2011+ "node_modules/is-extglob": {
2012+ "version": "2.1.1",
2013+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2014+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2015+ "dev": true,
2016+ "engines": {
2017+ "node": ">=0.10.0"
2018+ }
2019+ },
2020+ "node_modules/is-glob": {
2021+ "version": "4.0.3",
2022+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2023+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2024+ "dev": true,
2025+ "dependencies": {
2026+ "is-extglob": "^2.1.1"
2027+ },
2028+ "engines": {
2029+ "node": ">=0.10.0"
2030+ }
2031+ },
2032+ "node_modules/is-number": {
2033+ "version": "7.0.0",
2034+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2035+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2036+ "dev": true,
2037+ "engines": {
2038+ "node": ">=0.12.0"
2039+ }
2040+ },
2041+ "node_modules/js-sha3": {
2042+ "version": "0.8.0",
2043+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
2044+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
2045+ },
2046+ "node_modules/js-tokens": {
2047+ "version": "4.0.0",
2048+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
2049+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2050+ },
2051+ "node_modules/jsesc": {
2052+ "version": "2.5.2",
2053+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
2054+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
2055+ "dev": true,
2056+ "bin": {
2057+ "jsesc": "bin/jsesc"
2058+ },
2059+ "engines": {
2060+ "node": ">=4"
2061+ }
2062+ },
2063+ "node_modules/json5": {
2064+ "version": "2.2.1",
2065+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
2066+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
2067+ "dev": true,
2068+ "bin": {
2069+ "json5": "lib/cli.js"
2070+ },
2071+ "engines": {
2072+ "node": ">=6"
2073+ }
2074+ },
2075+ "node_modules/lilconfig": {
2076+ "version": "2.0.5",
2077+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
2078+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
2079+ "dev": true,
2080+ "engines": {
2081+ "node": ">=10"
2082+ }
2083+ },
2084+ "node_modules/lodash.chunk": {
2085+ "version": "4.2.0",
2086+ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
2087+ "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w=="
2088+ },
2089+ "node_modules/lodash.debounce": {
2090+ "version": "4.0.8",
2091+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
2092+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
2093+ },
2094+ "node_modules/lodash.isequal": {
2095+ "version": "4.5.0",
2096+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
2097+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
2098+ },
2099+ "node_modules/loose-envify": {
2100+ "version": "1.4.0",
2101+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
2102+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
2103+ "dependencies": {
2104+ "js-tokens": "^3.0.0 || ^4.0.0"
2105+ },
2106+ "bin": {
2107+ "loose-envify": "cli.js"
2108+ }
2109+ },
2110+ "node_modules/match-sorter": {
2111+ "version": "6.3.1",
2112+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
2113+ "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
2114+ "dependencies": {
2115+ "@babel/runtime": "^7.12.5",
2116+ "remove-accents": "0.4.2"
2117+ }
2118+ },
2119+ "node_modules/merge2": {
2120+ "version": "1.4.1",
2121+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
2122+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
2123+ "dev": true,
2124+ "engines": {
2125+ "node": ">= 8"
2126+ }
2127+ },
2128+ "node_modules/micromatch": {
2129+ "version": "4.0.5",
2130+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
2131+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
2132+ "dev": true,
2133+ "dependencies": {
2134+ "braces": "^3.0.2",
2135+ "picomatch": "^2.3.1"
2136+ },
2137+ "engines": {
2138+ "node": ">=8.6"
2139+ }
2140+ },
2141+ "node_modules/microseconds": {
2142+ "version": "0.2.0",
2143+ "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
2144+ "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
2145+ },
2146+ "node_modules/minimatch": {
2147+ "version": "3.1.2",
2148+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2149+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2150+ "dependencies": {
2151+ "brace-expansion": "^1.1.7"
2152+ },
2153+ "engines": {
2154+ "node": "*"
2155+ }
2156+ },
2157+ "node_modules/minimist": {
2158+ "version": "1.2.6",
2159+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2160+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2161+ "dev": true
2162+ },
2163+ "node_modules/ms": {
2164+ "version": "2.1.2",
2165+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2166+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2167+ "dev": true
2168+ },
2169+ "node_modules/nano-time": {
2170+ "version": "1.0.0",
2171+ "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
2172+ "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
2173+ "dependencies": {
2174+ "big-integer": "^1.6.16"
2175+ }
2176+ },
2177+ "node_modules/nanoid": {
2178+ "version": "3.3.4",
2179+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
2180+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
2181+ "dev": true,
2182+ "bin": {
2183+ "nanoid": "bin/nanoid.cjs"
2184+ },
2185+ "engines": {
2186+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2187+ }
2188+ },
2189+ "node_modules/node-releases": {
2190+ "version": "2.0.5",
2191+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
2192+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
2193+ "dev": true
2194+ },
2195+ "node_modules/normalize-path": {
2196+ "version": "3.0.0",
2197+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2198+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2199+ "dev": true,
2200+ "engines": {
2201+ "node": ">=0.10.0"
2202+ }
2203+ },
2204+ "node_modules/normalize-range": {
2205+ "version": "0.1.2",
2206+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
2207+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
2208+ "dev": true,
2209+ "engines": {
2210+ "node": ">=0.10.0"
2211+ }
2212+ },
2213+ "node_modules/object-assign": {
2214+ "version": "4.1.1",
2215+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2216+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2217+ "engines": {
2218+ "node": ">=0.10.0"
2219+ }
2220+ },
2221+ "node_modules/object-hash": {
2222+ "version": "3.0.0",
2223+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
2224+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
2225+ "dev": true,
2226+ "engines": {
2227+ "node": ">= 6"
2228+ }
2229+ },
2230+ "node_modules/oblivious-set": {
2231+ "version": "1.0.0",
2232+ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
2233+ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
2234+ },
2235+ "node_modules/once": {
2236+ "version": "1.4.0",
2237+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2238+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2239+ "dependencies": {
2240+ "wrappy": "1"
2241+ }
2242+ },
2243+ "node_modules/path-is-absolute": {
2244+ "version": "1.0.1",
2245+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2246+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2247+ "engines": {
2248+ "node": ">=0.10.0"
2249+ }
2250+ },
2251+ "node_modules/path-parse": {
2252+ "version": "1.0.7",
2253+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2254+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2255+ "dev": true
2256+ },
2257+ "node_modules/picocolors": {
2258+ "version": "1.0.0",
2259+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
2260+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
2261+ "dev": true
2262+ },
2263+ "node_modules/picomatch": {
2264+ "version": "2.3.1",
2265+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
2266+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
2267+ "dev": true,
2268+ "engines": {
2269+ "node": ">=8.6"
2270+ },
2271+ "funding": {
2272+ "url": "https://github.com/sponsors/jonschlinkert"
2273+ }
2274+ },
2275+ "node_modules/pify": {
2276+ "version": "2.3.0",
2277+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2278+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
2279+ "dev": true,
2280+ "engines": {
2281+ "node": ">=0.10.0"
2282+ }
2283+ },
2284+ "node_modules/postcss": {
2285+ "version": "8.4.14",
2286+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
2287+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
2288+ "dev": true,
2289+ "funding": [
2290+ {
2291+ "type": "opencollective",
2292+ "url": "https://opencollective.com/postcss/"
2293+ },
2294+ {
2295+ "type": "tidelift",
2296+ "url": "https://tidelift.com/funding/github/npm/postcss"
2297+ }
2298+ ],
2299+ "dependencies": {
2300+ "nanoid": "^3.3.4",
2301+ "picocolors": "^1.0.0",
2302+ "source-map-js": "^1.0.2"
2303+ },
2304+ "engines": {
2305+ "node": "^10 || ^12 || >=14"
2306+ }
2307+ },
2308+ "node_modules/postcss-import": {
2309+ "version": "14.1.0",
2310+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
2311+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
2312+ "dev": true,
2313+ "dependencies": {
2314+ "postcss-value-parser": "^4.0.0",
2315+ "read-cache": "^1.0.0",
2316+ "resolve": "^1.1.7"
2317+ },
2318+ "engines": {
2319+ "node": ">=10.0.0"
2320+ },
2321+ "peerDependencies": {
2322+ "postcss": "^8.0.0"
2323+ }
2324+ },
2325+ "node_modules/postcss-js": {
2326+ "version": "4.0.0",
2327+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
2328+ "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
2329+ "dev": true,
2330+ "dependencies": {
2331+ "camelcase-css": "^2.0.1"
2332+ },
2333+ "engines": {
2334+ "node": "^12 || ^14 || >= 16"
2335+ },
2336+ "funding": {
2337+ "type": "opencollective",
2338+ "url": "https://opencollective.com/postcss/"
2339+ },
2340+ "peerDependencies": {
2341+ "postcss": "^8.3.3"
2342+ }
2343+ },
2344+ "node_modules/postcss-load-config": {
2345+ "version": "3.1.4",
2346+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
2347+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
2348+ "dev": true,
2349+ "dependencies": {
2350+ "lilconfig": "^2.0.5",
2351+ "yaml": "^1.10.2"
2352+ },
2353+ "engines": {
2354+ "node": ">= 10"
2355+ },
2356+ "funding": {
2357+ "type": "opencollective",
2358+ "url": "https://opencollective.com/postcss/"
2359+ },
2360+ "peerDependencies": {
2361+ "postcss": ">=8.0.9",
2362+ "ts-node": ">=9.0.0"
2363+ },
2364+ "peerDependenciesMeta": {
2365+ "postcss": {
2366+ "optional": true
2367+ },
2368+ "ts-node": {
2369+ "optional": true
2370+ }
2371+ }
2372+ },
2373+ "node_modules/postcss-nested": {
2374+ "version": "5.0.6",
2375+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
2376+ "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
2377+ "dev": true,
2378+ "dependencies": {
2379+ "postcss-selector-parser": "^6.0.6"
2380+ },
2381+ "engines": {
2382+ "node": ">=12.0"
2383+ },
2384+ "funding": {
2385+ "type": "opencollective",
2386+ "url": "https://opencollective.com/postcss/"
2387+ },
2388+ "peerDependencies": {
2389+ "postcss": "^8.2.14"
2390+ }
2391+ },
2392+ "node_modules/postcss-selector-parser": {
2393+ "version": "6.0.10",
2394+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
2395+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
2396+ "dev": true,
2397+ "dependencies": {
2398+ "cssesc": "^3.0.0",
2399+ "util-deprecate": "^1.0.2"
2400+ },
2401+ "engines": {
2402+ "node": ">=4"
2403+ }
2404+ },
2405+ "node_modules/postcss-value-parser": {
2406+ "version": "4.2.0",
2407+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2408+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2409+ "dev": true
2410+ },
2411+ "node_modules/queue-microtask": {
2412+ "version": "1.2.3",
2413+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2414+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2415+ "dev": true,
2416+ "funding": [
2417+ {
2418+ "type": "github",
2419+ "url": "https://github.com/sponsors/feross"
2420+ },
2421+ {
2422+ "type": "patreon",
2423+ "url": "https://www.patreon.com/feross"
2424+ },
2425+ {
2426+ "type": "consulting",
2427+ "url": "https://feross.org/support"
2428+ }
2429+ ]
2430+ },
2431+ "node_modules/quick-lru": {
2432+ "version": "5.1.1",
2433+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
2434+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
2435+ "dev": true,
2436+ "engines": {
2437+ "node": ">=10"
2438+ },
2439+ "funding": {
2440+ "url": "https://github.com/sponsors/sindresorhus"
2441+ }
2442+ },
2443+ "node_modules/react": {
2444+ "version": "17.0.2",
2445+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
2446+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
2447+ "dependencies": {
2448+ "loose-envify": "^1.1.0",
2449+ "object-assign": "^4.1.1"
2450+ },
2451+ "engines": {
2452+ "node": ">=0.10.0"
2453+ }
2454+ },
2455+ "node_modules/react-dom": {
2456+ "version": "17.0.2",
2457+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
2458+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
2459+ "dependencies": {
2460+ "loose-envify": "^1.1.0",
2461+ "object-assign": "^4.1.1",
2462+ "scheduler": "^0.20.2"
2463+ },
2464+ "peerDependencies": {
2465+ "react": "17.0.2"
2466+ }
2467+ },
2468+ "node_modules/react-query": {
2469+ "version": "3.39.1",
2470+ "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.1.tgz",
2471+ "integrity": "sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A==",
2472+ "dependencies": {
2473+ "@babel/runtime": "^7.5.5",
2474+ "broadcast-channel": "^3.4.1",
2475+ "match-sorter": "^6.0.2"
2476+ },
2477+ "funding": {
2478+ "type": "github",
2479+ "url": "https://github.com/sponsors/tannerlinsley"
2480+ },
2481+ "peerDependencies": {
2482+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2483+ },
2484+ "peerDependenciesMeta": {
2485+ "react-dom": {
2486+ "optional": true
2487+ },
2488+ "react-native": {
2489+ "optional": true
2490+ }
2491+ }
2492+ },
2493+ "node_modules/react-refresh": {
2494+ "version": "0.10.0",
2495+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz",
2496+ "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==",
2497+ "dev": true,
2498+ "engines": {
2499+ "node": ">=0.10.0"
2500+ }
2501+ },
2502+ "node_modules/react-remove-scroll": {
2503+ "version": "2.5.4",
2504+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
2505+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
2506+ "dependencies": {
2507+ "react-remove-scroll-bar": "^2.3.3",
2508+ "react-style-singleton": "^2.2.1",
2509+ "tslib": "^2.1.0",
2510+ "use-callback-ref": "^1.3.0",
2511+ "use-sidecar": "^1.1.2"
2512+ },
2513+ "engines": {
2514+ "node": ">=10"
2515+ },
2516+ "peerDependencies": {
2517+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2518+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2519+ },
2520+ "peerDependenciesMeta": {
2521+ "@types/react": {
2522+ "optional": true
2523+ }
2524+ }
2525+ },
2526+ "node_modules/react-remove-scroll-bar": {
2527+ "version": "2.3.3",
2528+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz",
2529+ "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==",
2530+ "dependencies": {
2531+ "react-style-singleton": "^2.2.1",
2532+ "tslib": "^2.0.0"
2533+ },
2534+ "engines": {
2535+ "node": ">=10"
2536+ },
2537+ "peerDependencies": {
2538+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2539+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2540+ },
2541+ "peerDependenciesMeta": {
2542+ "@types/react": {
2543+ "optional": true
2544+ }
2545+ }
2546+ },
2547+ "node_modules/react-remove-scroll-bar/node_modules/tslib": {
2548+ "version": "2.4.0",
2549+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2550+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2551+ },
2552+ "node_modules/react-remove-scroll/node_modules/tslib": {
2553+ "version": "2.4.0",
2554+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2555+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2556+ },
2557+ "node_modules/react-router": {
2558+ "version": "6.3.0",
2559+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
2560+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
2561+ "dependencies": {
2562+ "history": "^5.2.0"
2563+ },
2564+ "peerDependencies": {
2565+ "react": ">=16.8"
2566+ }
2567+ },
2568+ "node_modules/react-router-dom": {
2569+ "version": "6.3.0",
2570+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
2571+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
2572+ "dependencies": {
2573+ "history": "^5.2.0",
2574+ "react-router": "6.3.0"
2575+ },
2576+ "peerDependencies": {
2577+ "react": ">=16.8",
2578+ "react-dom": ">=16.8"
2579+ }
2580+ },
2581+ "node_modules/react-style-singleton": {
2582+ "version": "2.2.1",
2583+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
2584+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
2585+ "dependencies": {
2586+ "get-nonce": "^1.0.0",
2587+ "invariant": "^2.2.4",
2588+ "tslib": "^2.0.0"
2589+ },
2590+ "engines": {
2591+ "node": ">=10"
2592+ },
2593+ "peerDependencies": {
2594+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2595+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2596+ },
2597+ "peerDependenciesMeta": {
2598+ "@types/react": {
2599+ "optional": true
2600+ }
2601+ }
2602+ },
2603+ "node_modules/react-style-singleton/node_modules/tslib": {
2604+ "version": "2.4.0",
2605+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2606+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2607+ },
2608+ "node_modules/read-cache": {
2609+ "version": "1.0.0",
2610+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2611+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2612+ "dev": true,
2613+ "dependencies": {
2614+ "pify": "^2.3.0"
2615+ }
2616+ },
2617+ "node_modules/readdirp": {
2618+ "version": "3.6.0",
2619+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2620+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2621+ "dev": true,
2622+ "dependencies": {
2623+ "picomatch": "^2.2.1"
2624+ },
2625+ "engines": {
2626+ "node": ">=8.10.0"
2627+ }
2628+ },
2629+ "node_modules/regenerator-runtime": {
2630+ "version": "0.13.9",
2631+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
2632+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
2633+ },
2634+ "node_modules/remove-accents": {
2635+ "version": "0.4.2",
2636+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
2637+ "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
2638+ },
2639+ "node_modules/resolve": {
2640+ "version": "1.22.1",
2641+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
2642+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
2643+ "dev": true,
2644+ "dependencies": {
2645+ "is-core-module": "^2.9.0",
2646+ "path-parse": "^1.0.7",
2647+ "supports-preserve-symlinks-flag": "^1.0.0"
2648+ },
2649+ "bin": {
2650+ "resolve": "bin/resolve"
2651+ },
2652+ "funding": {
2653+ "url": "https://github.com/sponsors/ljharb"
2654+ }
2655+ },
2656+ "node_modules/reusify": {
2657+ "version": "1.0.4",
2658+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
2659+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
2660+ "dev": true,
2661+ "engines": {
2662+ "iojs": ">=1.0.0",
2663+ "node": ">=0.10.0"
2664+ }
2665+ },
2666+ "node_modules/rimraf": {
2667+ "version": "3.0.2",
2668+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2669+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2670+ "dependencies": {
2671+ "glob": "^7.1.3"
2672+ },
2673+ "bin": {
2674+ "rimraf": "bin.js"
2675+ },
2676+ "funding": {
2677+ "url": "https://github.com/sponsors/isaacs"
2678+ }
2679+ },
2680+ "node_modules/rollup": {
2681+ "version": "2.75.7",
2682+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
2683+ "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
2684+ "dev": true,
2685+ "bin": {
2686+ "rollup": "dist/bin/rollup"
2687+ },
2688+ "engines": {
2689+ "node": ">=10.0.0"
2690+ },
2691+ "optionalDependencies": {
2692+ "fsevents": "~2.3.2"
2693+ }
2694+ },
2695+ "node_modules/run-parallel": {
2696+ "version": "1.2.0",
2697+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2698+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2699+ "dev": true,
2700+ "funding": [
2701+ {
2702+ "type": "github",
2703+ "url": "https://github.com/sponsors/feross"
2704+ },
2705+ {
2706+ "type": "patreon",
2707+ "url": "https://www.patreon.com/feross"
2708+ },
2709+ {
2710+ "type": "consulting",
2711+ "url": "https://feross.org/support"
2712+ }
2713+ ],
2714+ "dependencies": {
2715+ "queue-microtask": "^1.2.2"
2716+ }
2717+ },
2718+ "node_modules/safe-buffer": {
2719+ "version": "5.1.2",
2720+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2721+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2722+ "dev": true
2723+ },
2724+ "node_modules/scheduler": {
2725+ "version": "0.20.2",
2726+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
2727+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
2728+ "dependencies": {
2729+ "loose-envify": "^1.1.0",
2730+ "object-assign": "^4.1.1"
2731+ }
2732+ },
2733+ "node_modules/semver": {
2734+ "version": "6.3.0",
2735+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2736+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2737+ "dev": true,
2738+ "bin": {
2739+ "semver": "bin/semver.js"
2740+ }
2741+ },
2742+ "node_modules/source-map-js": {
2743+ "version": "1.0.2",
2744+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
2745+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
2746+ "dev": true,
2747+ "engines": {
2748+ "node": ">=0.10.0"
2749+ }
2750+ },
2751+ "node_modules/supports-color": {
2752+ "version": "5.5.0",
2753+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
2754+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
2755+ "dev": true,
2756+ "dependencies": {
2757+ "has-flag": "^3.0.0"
2758+ },
2759+ "engines": {
2760+ "node": ">=4"
2761+ }
2762+ },
2763+ "node_modules/supports-preserve-symlinks-flag": {
2764+ "version": "1.0.0",
2765+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2766+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2767+ "dev": true,
2768+ "engines": {
2769+ "node": ">= 0.4"
2770+ },
2771+ "funding": {
2772+ "url": "https://github.com/sponsors/ljharb"
2773+ }
2774+ },
2775+ "node_modules/tailwindcss": {
2776+ "version": "3.1.4",
2777+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
2778+ "integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
2779+ "dev": true,
2780+ "dependencies": {
2781+ "arg": "^5.0.2",
2782+ "chokidar": "^3.5.3",
2783+ "color-name": "^1.1.4",
2784+ "detective": "^5.2.1",
2785+ "didyoumean": "^1.2.2",
2786+ "dlv": "^1.1.3",
2787+ "fast-glob": "^3.2.11",
2788+ "glob-parent": "^6.0.2",
2789+ "is-glob": "^4.0.3",
2790+ "lilconfig": "^2.0.5",
2791+ "normalize-path": "^3.0.0",
2792+ "object-hash": "^3.0.0",
2793+ "picocolors": "^1.0.0",
2794+ "postcss": "^8.4.14",
2795+ "postcss-import": "^14.1.0",
2796+ "postcss-js": "^4.0.0",
2797+ "postcss-load-config": "^3.1.4",
2798+ "postcss-nested": "5.0.6",
2799+ "postcss-selector-parser": "^6.0.10",
2800+ "postcss-value-parser": "^4.2.0",
2801+ "quick-lru": "^5.1.1",
2802+ "resolve": "^1.22.0"
2803+ },
2804+ "bin": {
2805+ "tailwind": "lib/cli.js",
2806+ "tailwindcss": "lib/cli.js"
2807+ },
2808+ "engines": {
2809+ "node": ">=12.13.0"
2810+ },
2811+ "peerDependencies": {
2812+ "postcss": "^8.0.9"
2813+ }
2814+ },
2815+ "node_modules/tailwindcss/node_modules/color-name": {
2816+ "version": "1.1.4",
2817+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2818+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2819+ "dev": true
2820+ },
2821+ "node_modules/to-fast-properties": {
2822+ "version": "2.0.0",
2823+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2824+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2825+ "dev": true,
2826+ "engines": {
2827+ "node": ">=4"
2828+ }
2829+ },
2830+ "node_modules/to-regex-range": {
2831+ "version": "5.0.1",
2832+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2833+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2834+ "dev": true,
2835+ "dependencies": {
2836+ "is-number": "^7.0.0"
2837+ },
2838+ "engines": {
2839+ "node": ">=8.0"
2840+ }
2841+ },
2842+ "node_modules/tslib": {
2843+ "version": "1.14.1",
2844+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
2845+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
2846+ },
2847+ "node_modules/typescript": {
2848+ "version": "4.7.4",
2849+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
2850+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
2851+ "dev": true,
2852+ "bin": {
2853+ "tsc": "bin/tsc",
2854+ "tsserver": "bin/tsserver"
2855+ },
2856+ "engines": {
2857+ "node": ">=4.2.0"
2858+ }
2859+ },
2860+ "node_modules/unload": {
2861+ "version": "2.2.0",
2862+ "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
2863+ "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
2864+ "dependencies": {
2865+ "@babel/runtime": "^7.6.2",
2866+ "detect-node": "^2.0.4"
2867+ }
2868+ },
2869+ "node_modules/update-browserslist-db": {
2870+ "version": "1.0.4",
2871+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
2872+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
2873+ "dev": true,
2874+ "funding": [
2875+ {
2876+ "type": "opencollective",
2877+ "url": "https://opencollective.com/browserslist"
2878+ },
2879+ {
2880+ "type": "tidelift",
2881+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2882+ }
2883+ ],
2884+ "dependencies": {
2885+ "escalade": "^3.1.1",
2886+ "picocolors": "^1.0.0"
2887+ },
2888+ "bin": {
2889+ "browserslist-lint": "cli.js"
2890+ },
2891+ "peerDependencies": {
2892+ "browserslist": ">= 4.21.0"
2893+ }
2894+ },
2895+ "node_modules/urbit-ob": {
2896+ "version": "5.0.1",
2897+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-5.0.1.tgz",
2898+ "integrity": "sha512-qGNAwu87XNkW3g8ah4fUwmh2EKXtsdhEbyEiE5qX4Op17rhLH3HSkvu8g9z+MhqX51Uz9sf8ktvqJj/IRwETIQ==",
2899+ "dependencies": {
2900+ "bn.js": "^4.11.8",
2901+ "lodash.chunk": "^4.2.0",
2902+ "lodash.isequal": "^4.5.0"
2903+ }
2904+ },
2905+ "node_modules/use-callback-ref": {
2906+ "version": "1.3.0",
2907+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
2908+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
2909+ "dependencies": {
2910+ "tslib": "^2.0.0"
2911+ },
2912+ "engines": {
2913+ "node": ">=10"
2914+ },
2915+ "peerDependencies": {
2916+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
2917+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2918+ },
2919+ "peerDependenciesMeta": {
2920+ "@types/react": {
2921+ "optional": true
2922+ }
2923+ }
2924+ },
2925+ "node_modules/use-callback-ref/node_modules/tslib": {
2926+ "version": "2.4.0",
2927+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2928+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2929+ },
2930+ "node_modules/use-sidecar": {
2931+ "version": "1.1.2",
2932+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
2933+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
2934+ "dependencies": {
2935+ "detect-node-es": "^1.1.0",
2936+ "tslib": "^2.0.0"
2937+ },
2938+ "engines": {
2939+ "node": ">=10"
2940+ },
2941+ "peerDependencies": {
2942+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
2943+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
2944+ },
2945+ "peerDependenciesMeta": {
2946+ "@types/react": {
2947+ "optional": true
2948+ }
2949+ }
2950+ },
2951+ "node_modules/use-sidecar/node_modules/tslib": {
2952+ "version": "2.4.0",
2953+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
2954+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
2955+ },
2956+ "node_modules/util-deprecate": {
2957+ "version": "1.0.2",
2958+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2959+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2960+ "dev": true
2961+ },
2962+ "node_modules/vite": {
2963+ "version": "2.9.13",
2964+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz",
2965+ "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==",
2966+ "dev": true,
2967+ "dependencies": {
2968+ "esbuild": "^0.14.27",
2969+ "postcss": "^8.4.13",
2970+ "resolve": "^1.22.0",
2971+ "rollup": "^2.59.0"
2972+ },
2973+ "bin": {
2974+ "vite": "bin/vite.js"
2975+ },
2976+ "engines": {
2977+ "node": ">=12.2.0"
2978+ },
2979+ "optionalDependencies": {
2980+ "fsevents": "~2.3.2"
2981+ },
2982+ "peerDependencies": {
2983+ "less": "*",
2984+ "sass": "*",
2985+ "stylus": "*"
2986+ },
2987+ "peerDependenciesMeta": {
2988+ "less": {
2989+ "optional": true
2990+ },
2991+ "sass": {
2992+ "optional": true
2993+ },
2994+ "stylus": {
2995+ "optional": true
2996+ }
2997+ }
2998+ },
2999+ "node_modules/vite-plugin-html-config": {
3000+ "version": "1.0.8",
3001+ "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-1.0.8.tgz",
3002+ "integrity": "sha512-3tTtBQO+6zpC8uzAAfj3FWygj+V6H6F9fEt5KtB3j5UHsRYP0yLpTHsMvubXtqCXbKDp1oOakYYSjprqYcbrpA==",
3003+ "dev": true,
3004+ "engines": {
3005+ "node": ">=12.0.0"
3006+ },
3007+ "peerDependencies": {
3008+ "vite": "^2.0.5"
3009+ }
3010+ },
3011+ "node_modules/vite-plugin-rewrite-all": {
3012+ "version": "0.1.2",
3013+ "resolved": "https://registry.npmjs.org/vite-plugin-rewrite-all/-/vite-plugin-rewrite-all-0.1.2.tgz",
3014+ "integrity": "sha512-hBFuG043kbixgZ/ke9SzKhkO6P8a5ryxD0CmZTe+/Cz17RIKi7uSeNUJy79V4FgavZ7pWVRg0tqVwJ7lP/A2/Q==",
3015+ "dev": true,
3016+ "dependencies": {
3017+ "connect-history-api-fallback": "^1.6.0"
3018+ },
3019+ "engines": {
3020+ "node": ">=12.0.0"
3021+ },
3022+ "peerDependencies": {
3023+ "vite": "^2.0.2"
3024+ }
3025+ },
3026+ "node_modules/wrappy": {
3027+ "version": "1.0.2",
3028+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3029+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
3030+ },
3031+ "node_modules/xtend": {
3032+ "version": "4.0.2",
3033+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
3034+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
3035+ "dev": true,
3036+ "engines": {
3037+ "node": ">=0.4"
3038+ }
3039+ },
3040+ "node_modules/yaml": {
3041+ "version": "1.10.2",
3042+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
3043+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
3044+ "dev": true,
3045+ "engines": {
3046+ "node": ">= 6"
3047+ }
3048+ }
3049+ },
3050+ "dependencies": {
3051+ "@ampproject/remapping": {
3052+ "version": "2.2.0",
3053+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
3054+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
3055+ "dev": true,
3056+ "requires": {
3057+ "@jridgewell/gen-mapping": "^0.1.0",
3058+ "@jridgewell/trace-mapping": "^0.3.9"
3059+ }
3060+ },
3061+ "@babel/code-frame": {
3062+ "version": "7.18.6",
3063+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
3064+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
3065+ "dev": true,
3066+ "requires": {
3067+ "@babel/highlight": "^7.18.6"
3068+ }
3069+ },
3070+ "@babel/compat-data": {
3071+ "version": "7.18.6",
3072+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz",
3073+ "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==",
3074+ "dev": true
3075+ },
3076+ "@babel/core": {
3077+ "version": "7.18.6",
3078+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz",
3079+ "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==",
3080+ "dev": true,
3081+ "requires": {
3082+ "@ampproject/remapping": "^2.1.0",
3083+ "@babel/code-frame": "^7.18.6",
3084+ "@babel/generator": "^7.18.6",
3085+ "@babel/helper-compilation-targets": "^7.18.6",
3086+ "@babel/helper-module-transforms": "^7.18.6",
3087+ "@babel/helpers": "^7.18.6",
3088+ "@babel/parser": "^7.18.6",
3089+ "@babel/template": "^7.18.6",
3090+ "@babel/traverse": "^7.18.6",
3091+ "@babel/types": "^7.18.6",
3092+ "convert-source-map": "^1.7.0",
3093+ "debug": "^4.1.0",
3094+ "gensync": "^1.0.0-beta.2",
3095+ "json5": "^2.2.1",
3096+ "semver": "^6.3.0"
3097+ }
3098+ },
3099+ "@babel/generator": {
3100+ "version": "7.18.7",
3101+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz",
3102+ "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==",
3103+ "dev": true,
3104+ "requires": {
3105+ "@babel/types": "^7.18.7",
3106+ "@jridgewell/gen-mapping": "^0.3.2",
3107+ "jsesc": "^2.5.1"
3108+ },
3109+ "dependencies": {
3110+ "@jridgewell/gen-mapping": {
3111+ "version": "0.3.2",
3112+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
3113+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
3114+ "dev": true,
3115+ "requires": {
3116+ "@jridgewell/set-array": "^1.0.1",
3117+ "@jridgewell/sourcemap-codec": "^1.4.10",
3118+ "@jridgewell/trace-mapping": "^0.3.9"
3119+ }
3120+ }
3121+ }
3122+ },
3123+ "@babel/helper-compilation-targets": {
3124+ "version": "7.18.6",
3125+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz",
3126+ "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==",
3127+ "dev": true,
3128+ "requires": {
3129+ "@babel/compat-data": "^7.18.6",
3130+ "@babel/helper-validator-option": "^7.18.6",
3131+ "browserslist": "^4.20.2",
3132+ "semver": "^6.3.0"
3133+ }
3134+ },
3135+ "@babel/helper-environment-visitor": {
3136+ "version": "7.18.6",
3137+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz",
3138+ "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==",
3139+ "dev": true
3140+ },
3141+ "@babel/helper-function-name": {
3142+ "version": "7.18.6",
3143+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz",
3144+ "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==",
3145+ "dev": true,
3146+ "requires": {
3147+ "@babel/template": "^7.18.6",
3148+ "@babel/types": "^7.18.6"
3149+ }
3150+ },
3151+ "@babel/helper-hoist-variables": {
3152+ "version": "7.18.6",
3153+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
3154+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
3155+ "dev": true,
3156+ "requires": {
3157+ "@babel/types": "^7.18.6"
3158+ }
3159+ },
3160+ "@babel/helper-module-imports": {
3161+ "version": "7.18.6",
3162+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
3163+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
3164+ "dev": true,
3165+ "requires": {
3166+ "@babel/types": "^7.18.6"
3167+ }
3168+ },
3169+ "@babel/helper-module-transforms": {
3170+ "version": "7.18.6",
3171+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz",
3172+ "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==",
3173+ "dev": true,
3174+ "requires": {
3175+ "@babel/helper-environment-visitor": "^7.18.6",
3176+ "@babel/helper-module-imports": "^7.18.6",
3177+ "@babel/helper-simple-access": "^7.18.6",
3178+ "@babel/helper-split-export-declaration": "^7.18.6",
3179+ "@babel/helper-validator-identifier": "^7.18.6",
3180+ "@babel/template": "^7.18.6",
3181+ "@babel/traverse": "^7.18.6",
3182+ "@babel/types": "^7.18.6"
3183+ }
3184+ },
3185+ "@babel/helper-plugin-utils": {
3186+ "version": "7.18.6",
3187+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz",
3188+ "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==",
3189+ "dev": true
3190+ },
3191+ "@babel/helper-simple-access": {
3192+ "version": "7.18.6",
3193+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz",
3194+ "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==",
3195+ "dev": true,
3196+ "requires": {
3197+ "@babel/types": "^7.18.6"
3198+ }
3199+ },
3200+ "@babel/helper-split-export-declaration": {
3201+ "version": "7.18.6",
3202+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
3203+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
3204+ "dev": true,
3205+ "requires": {
3206+ "@babel/types": "^7.18.6"
3207+ }
3208+ },
3209+ "@babel/helper-validator-identifier": {
3210+ "version": "7.18.6",
3211+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
3212+ "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
3213+ "dev": true
3214+ },
3215+ "@babel/helper-validator-option": {
3216+ "version": "7.18.6",
3217+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
3218+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
3219+ "dev": true
3220+ },
3221+ "@babel/helpers": {
3222+ "version": "7.18.6",
3223+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz",
3224+ "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==",
3225+ "dev": true,
3226+ "requires": {
3227+ "@babel/template": "^7.18.6",
3228+ "@babel/traverse": "^7.18.6",
3229+ "@babel/types": "^7.18.6"
3230+ }
3231+ },
3232+ "@babel/highlight": {
3233+ "version": "7.18.6",
3234+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
3235+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
3236+ "dev": true,
3237+ "requires": {
3238+ "@babel/helper-validator-identifier": "^7.18.6",
3239+ "chalk": "^2.0.0",
3240+ "js-tokens": "^4.0.0"
3241+ }
3242+ },
3243+ "@babel/parser": {
3244+ "version": "7.18.6",
3245+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz",
3246+ "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==",
3247+ "dev": true
3248+ },
3249+ "@babel/plugin-transform-react-jsx-self": {
3250+ "version": "7.18.6",
3251+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
3252+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
3253+ "dev": true,
3254+ "requires": {
3255+ "@babel/helper-plugin-utils": "^7.18.6"
3256+ }
3257+ },
3258+ "@babel/plugin-transform-react-jsx-source": {
3259+ "version": "7.18.6",
3260+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz",
3261+ "integrity": "sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==",
3262+ "dev": true,
3263+ "requires": {
3264+ "@babel/helper-plugin-utils": "^7.18.6"
3265+ }
3266+ },
3267+ "@babel/runtime": {
3268+ "version": "7.18.6",
3269+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz",
3270+ "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==",
3271+ "requires": {
3272+ "regenerator-runtime": "^0.13.4"
3273+ }
3274+ },
3275+ "@babel/template": {
3276+ "version": "7.18.6",
3277+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz",
3278+ "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==",
3279+ "dev": true,
3280+ "requires": {
3281+ "@babel/code-frame": "^7.18.6",
3282+ "@babel/parser": "^7.18.6",
3283+ "@babel/types": "^7.18.6"
3284+ }
3285+ },
3286+ "@babel/traverse": {
3287+ "version": "7.18.6",
3288+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz",
3289+ "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==",
3290+ "dev": true,
3291+ "requires": {
3292+ "@babel/code-frame": "^7.18.6",
3293+ "@babel/generator": "^7.18.6",
3294+ "@babel/helper-environment-visitor": "^7.18.6",
3295+ "@babel/helper-function-name": "^7.18.6",
3296+ "@babel/helper-hoist-variables": "^7.18.6",
3297+ "@babel/helper-split-export-declaration": "^7.18.6",
3298+ "@babel/parser": "^7.18.6",
3299+ "@babel/types": "^7.18.6",
3300+ "debug": "^4.1.0",
3301+ "globals": "^11.1.0"
3302+ }
3303+ },
3304+ "@babel/types": {
3305+ "version": "7.18.7",
3306+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz",
3307+ "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==",
3308+ "dev": true,
3309+ "requires": {
3310+ "@babel/helper-validator-identifier": "^7.18.6",
3311+ "to-fast-properties": "^2.0.0"
3312+ }
3313+ },
3314+ "@heroicons/react": {
3315+ "version": "1.0.6",
3316+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz",
3317+ "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==",
3318+ "requires": {}
3319+ },
3320+ "@jridgewell/gen-mapping": {
3321+ "version": "0.1.1",
3322+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
3323+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
3324+ "dev": true,
3325+ "requires": {
3326+ "@jridgewell/set-array": "^1.0.0",
3327+ "@jridgewell/sourcemap-codec": "^1.4.10"
3328+ }
3329+ },
3330+ "@jridgewell/resolve-uri": {
3331+ "version": "3.0.8",
3332+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
3333+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
3334+ "dev": true
3335+ },
3336+ "@jridgewell/set-array": {
3337+ "version": "1.1.2",
3338+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
3339+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
3340+ "dev": true
3341+ },
3342+ "@jridgewell/sourcemap-codec": {
3343+ "version": "1.4.14",
3344+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
3345+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
3346+ "dev": true
3347+ },
3348+ "@jridgewell/trace-mapping": {
3349+ "version": "0.3.14",
3350+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
3351+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
3352+ "dev": true,
3353+ "requires": {
3354+ "@jridgewell/resolve-uri": "^3.0.3",
3355+ "@jridgewell/sourcemap-codec": "^1.4.10"
3356+ }
3357+ },
3358+ "@microsoft/fetch-event-source": {
3359+ "version": "2.0.1",
3360+ "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz",
3361+ "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="
3362+ },
3363+ "@nodelib/fs.scandir": {
3364+ "version": "2.1.5",
3365+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
3366+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
3367+ "dev": true,
3368+ "requires": {
3369+ "@nodelib/fs.stat": "2.0.5",
3370+ "run-parallel": "^1.1.9"
3371+ }
3372+ },
3373+ "@nodelib/fs.stat": {
3374+ "version": "2.0.5",
3375+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
3376+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
3377+ "dev": true
3378+ },
3379+ "@nodelib/fs.walk": {
3380+ "version": "1.2.8",
3381+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
3382+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
3383+ "dev": true,
3384+ "requires": {
3385+ "@nodelib/fs.scandir": "2.1.5",
3386+ "fastq": "^1.6.0"
3387+ }
3388+ },
3389+ "@radix-ui/popper": {
3390+ "version": "0.1.0",
3391+ "resolved": "https://registry.npmjs.org/@radix-ui/popper/-/popper-0.1.0.tgz",
3392+ "integrity": "sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==",
3393+ "requires": {
3394+ "@babel/runtime": "^7.13.10",
3395+ "csstype": "^3.0.4"
3396+ }
3397+ },
3398+ "@radix-ui/primitive": {
3399+ "version": "0.1.0",
3400+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-0.1.0.tgz",
3401+ "integrity": "sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==",
3402+ "requires": {
3403+ "@babel/runtime": "^7.13.10"
3404+ }
3405+ },
3406+ "@radix-ui/react-arrow": {
3407+ "version": "0.1.4",
3408+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-0.1.4.tgz",
3409+ "integrity": "sha512-BB6XzAb7Ml7+wwpFdYVtZpK1BlMgqyafSQNGzhIpSZ4uXvXOHPlR5GP8M449JkeQzgQjv9Mp1AsJxFC0KuOtuA==",
3410+ "requires": {
3411+ "@babel/runtime": "^7.13.10",
3412+ "@radix-ui/react-primitive": "0.1.4"
3413+ }
3414+ },
3415+ "@radix-ui/react-collection": {
3416+ "version": "0.1.4",
3417+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-0.1.4.tgz",
3418+ "integrity": "sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==",
3419+ "requires": {
3420+ "@babel/runtime": "^7.13.10",
3421+ "@radix-ui/react-compose-refs": "0.1.0",
3422+ "@radix-ui/react-context": "0.1.1",
3423+ "@radix-ui/react-primitive": "0.1.4",
3424+ "@radix-ui/react-slot": "0.1.2"
3425+ }
3426+ },
3427+ "@radix-ui/react-compose-refs": {
3428+ "version": "0.1.0",
3429+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz",
3430+ "integrity": "sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==",
3431+ "requires": {
3432+ "@babel/runtime": "^7.13.10"
3433+ }
3434+ },
3435+ "@radix-ui/react-context": {
3436+ "version": "0.1.1",
3437+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-0.1.1.tgz",
3438+ "integrity": "sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==",
3439+ "requires": {
3440+ "@babel/runtime": "^7.13.10"
3441+ }
3442+ },
3443+ "@radix-ui/react-dismissable-layer": {
3444+ "version": "0.1.5",
3445+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-0.1.5.tgz",
3446+ "integrity": "sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==",
3447+ "requires": {
3448+ "@babel/runtime": "^7.13.10",
3449+ "@radix-ui/primitive": "0.1.0",
3450+ "@radix-ui/react-compose-refs": "0.1.0",
3451+ "@radix-ui/react-primitive": "0.1.4",
3452+ "@radix-ui/react-use-body-pointer-events": "0.1.1",
3453+ "@radix-ui/react-use-callback-ref": "0.1.0",
3454+ "@radix-ui/react-use-escape-keydown": "0.1.0"
3455+ }
3456+ },
3457+ "@radix-ui/react-dropdown-menu": {
3458+ "version": "0.1.6",
3459+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-0.1.6.tgz",
3460+ "integrity": "sha512-RZhtzjWwJ4ZBN7D8ek4Zn+ilHzYuYta9yIxFnbC0pfqMnSi67IQNONo1tuuNqtFh9SRHacPKc65zo+kBBlxtdg==",
3461+ "requires": {
3462+ "@babel/runtime": "^7.13.10",
3463+ "@radix-ui/primitive": "0.1.0",
3464+ "@radix-ui/react-compose-refs": "0.1.0",
3465+ "@radix-ui/react-context": "0.1.1",
3466+ "@radix-ui/react-id": "0.1.5",
3467+ "@radix-ui/react-menu": "0.1.6",
3468+ "@radix-ui/react-primitive": "0.1.4",
3469+ "@radix-ui/react-use-controllable-state": "0.1.0"
3470+ }
3471+ },
3472+ "@radix-ui/react-focus-guards": {
3473+ "version": "0.1.0",
3474+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-0.1.0.tgz",
3475+ "integrity": "sha512-kRx/swAjEfBpQ3ns7J3H4uxpXuWCqN7MpALiSDOXiyo2vkWv0L9sxvbpZeTulINuE3CGMzicVMuNc/VWXjFKOg==",
3476+ "requires": {
3477+ "@babel/runtime": "^7.13.10"
3478+ }
3479+ },
3480+ "@radix-ui/react-focus-scope": {
3481+ "version": "0.1.4",
3482+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-0.1.4.tgz",
3483+ "integrity": "sha512-fbA4ES3H4Wkxp+OeLhvN6SwL7mXNn/aBtUf7DRYxY9+Akrf7dRxl2ck4lgcpPsSg3zSDsEwLcY+h5cmj5yvlug==",
3484+ "requires": {
3485+ "@babel/runtime": "^7.13.10",
3486+ "@radix-ui/react-compose-refs": "0.1.0",
3487+ "@radix-ui/react-primitive": "0.1.4",
3488+ "@radix-ui/react-use-callback-ref": "0.1.0"
3489+ }
3490+ },
3491+ "@radix-ui/react-id": {
3492+ "version": "0.1.5",
3493+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-0.1.5.tgz",
3494+ "integrity": "sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==",
3495+ "requires": {
3496+ "@babel/runtime": "^7.13.10",
3497+ "@radix-ui/react-use-layout-effect": "0.1.0"
3498+ }
3499+ },
3500+ "@radix-ui/react-menu": {
3501+ "version": "0.1.6",
3502+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-0.1.6.tgz",
3503+ "integrity": "sha512-ho3+bhpr3oAFkOBJ8VkUb1BcGoiZBB3OmcWPqa6i5RTUKrzNX/d6rauochu2xDlWjiRtpVuiAcsTVOeIC4FbYQ==",
3504+ "requires": {
3505+ "@babel/runtime": "^7.13.10",
3506+ "@radix-ui/primitive": "0.1.0",
3507+ "@radix-ui/react-collection": "0.1.4",
3508+ "@radix-ui/react-compose-refs": "0.1.0",
3509+ "@radix-ui/react-context": "0.1.1",
3510+ "@radix-ui/react-dismissable-layer": "0.1.5",
3511+ "@radix-ui/react-focus-guards": "0.1.0",
3512+ "@radix-ui/react-focus-scope": "0.1.4",
3513+ "@radix-ui/react-id": "0.1.5",
3514+ "@radix-ui/react-popper": "0.1.4",
3515+ "@radix-ui/react-portal": "0.1.4",
3516+ "@radix-ui/react-presence": "0.1.2",
3517+ "@radix-ui/react-primitive": "0.1.4",
3518+ "@radix-ui/react-roving-focus": "0.1.5",
3519+ "@radix-ui/react-use-callback-ref": "0.1.0",
3520+ "@radix-ui/react-use-direction": "0.1.0",
3521+ "aria-hidden": "^1.1.1",
3522+ "react-remove-scroll": "^2.4.0"
3523+ }
3524+ },
3525+ "@radix-ui/react-popper": {
3526+ "version": "0.1.4",
3527+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-0.1.4.tgz",
3528+ "integrity": "sha512-18gDYof97t8UQa7zwklG1Dr8jIdj3u+rVOQLzPi9f5i1YQak/pVGkaqw8aY+iDUknKKuZniTk/7jbAJUYlKyOw==",
3529+ "requires": {
3530+ "@babel/runtime": "^7.13.10",
3531+ "@radix-ui/popper": "0.1.0",
3532+ "@radix-ui/react-arrow": "0.1.4",
3533+ "@radix-ui/react-compose-refs": "0.1.0",
3534+ "@radix-ui/react-context": "0.1.1",
3535+ "@radix-ui/react-primitive": "0.1.4",
3536+ "@radix-ui/react-use-rect": "0.1.1",
3537+ "@radix-ui/react-use-size": "0.1.1",
3538+ "@radix-ui/rect": "0.1.1"
3539+ }
3540+ },
3541+ "@radix-ui/react-portal": {
3542+ "version": "0.1.4",
3543+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-0.1.4.tgz",
3544+ "integrity": "sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==",
3545+ "requires": {
3546+ "@babel/runtime": "^7.13.10",
3547+ "@radix-ui/react-primitive": "0.1.4",
3548+ "@radix-ui/react-use-layout-effect": "0.1.0"
3549+ }
3550+ },
3551+ "@radix-ui/react-presence": {
3552+ "version": "0.1.2",
3553+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-0.1.2.tgz",
3554+ "integrity": "sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==",
3555+ "requires": {
3556+ "@babel/runtime": "^7.13.10",
3557+ "@radix-ui/react-compose-refs": "0.1.0",
3558+ "@radix-ui/react-use-layout-effect": "0.1.0"
3559+ }
3560+ },
3561+ "@radix-ui/react-primitive": {
3562+ "version": "0.1.4",
3563+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz",
3564+ "integrity": "sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==",
3565+ "requires": {
3566+ "@babel/runtime": "^7.13.10",
3567+ "@radix-ui/react-slot": "0.1.2"
3568+ }
3569+ },
3570+ "@radix-ui/react-roving-focus": {
3571+ "version": "0.1.5",
3572+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz",
3573+ "integrity": "sha512-ClwKPS5JZE+PaHCoW7eu1onvE61pDv4kO8W4t5Ra3qMFQiTJLZMdpBQUhksN//DaVygoLirz4Samdr5Y1x1FSA==",
3574+ "requires": {
3575+ "@babel/runtime": "^7.13.10",
3576+ "@radix-ui/primitive": "0.1.0",
3577+ "@radix-ui/react-collection": "0.1.4",
3578+ "@radix-ui/react-compose-refs": "0.1.0",
3579+ "@radix-ui/react-context": "0.1.1",
3580+ "@radix-ui/react-id": "0.1.5",
3581+ "@radix-ui/react-primitive": "0.1.4",
3582+ "@radix-ui/react-use-callback-ref": "0.1.0",
3583+ "@radix-ui/react-use-controllable-state": "0.1.0"
3584+ }
3585+ },
3586+ "@radix-ui/react-slot": {
3587+ "version": "0.1.2",
3588+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-0.1.2.tgz",
3589+ "integrity": "sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==",
3590+ "requires": {
3591+ "@babel/runtime": "^7.13.10",
3592+ "@radix-ui/react-compose-refs": "0.1.0"
3593+ }
3594+ },
3595+ "@radix-ui/react-toggle": {
3596+ "version": "0.1.4",
3597+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-0.1.4.tgz",
3598+ "integrity": "sha512-gxUq6NgMc4ChV8VJnwdYqueeoblspwXHAexYo+jM9N2hFLbI1C587jLjdTHzIcUa9q68Xaw4jtiImWDOokEhRw==",
3599+ "requires": {
3600+ "@babel/runtime": "^7.13.10",
3601+ "@radix-ui/primitive": "0.1.0",
3602+ "@radix-ui/react-primitive": "0.1.4",
3603+ "@radix-ui/react-use-controllable-state": "0.1.0"
3604+ }
3605+ },
3606+ "@radix-ui/react-toggle-group": {
3607+ "version": "0.1.5",
3608+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-0.1.5.tgz",
3609+ "integrity": "sha512-Yp14wFiqe00azF+sG5CCJz4JGOP/f5Jj+CxLlZCmMpG5qhVTWeaeG4YH6pvX4KL41fS8x9FAaLb8wW9y01o67g==",
3610+ "requires": {
3611+ "@babel/runtime": "^7.13.10",
3612+ "@radix-ui/primitive": "0.1.0",
3613+ "@radix-ui/react-context": "0.1.1",
3614+ "@radix-ui/react-primitive": "0.1.4",
3615+ "@radix-ui/react-roving-focus": "0.1.5",
3616+ "@radix-ui/react-toggle": "0.1.4",
3617+ "@radix-ui/react-use-controllable-state": "0.1.0"
3618+ }
3619+ },
3620+ "@radix-ui/react-use-body-pointer-events": {
3621+ "version": "0.1.1",
3622+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-body-pointer-events/-/react-use-body-pointer-events-0.1.1.tgz",
3623+ "integrity": "sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==",
3624+ "requires": {
3625+ "@babel/runtime": "^7.13.10",
3626+ "@radix-ui/react-use-layout-effect": "0.1.0"
3627+ }
3628+ },
3629+ "@radix-ui/react-use-callback-ref": {
3630+ "version": "0.1.0",
3631+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz",
3632+ "integrity": "sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==",
3633+ "requires": {
3634+ "@babel/runtime": "^7.13.10"
3635+ }
3636+ },
3637+ "@radix-ui/react-use-controllable-state": {
3638+ "version": "0.1.0",
3639+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz",
3640+ "integrity": "sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==",
3641+ "requires": {
3642+ "@babel/runtime": "^7.13.10",
3643+ "@radix-ui/react-use-callback-ref": "0.1.0"
3644+ }
3645+ },
3646+ "@radix-ui/react-use-direction": {
3647+ "version": "0.1.0",
3648+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-direction/-/react-use-direction-0.1.0.tgz",
3649+ "integrity": "sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==",
3650+ "requires": {
3651+ "@babel/runtime": "^7.13.10"
3652+ }
3653+ },
3654+ "@radix-ui/react-use-escape-keydown": {
3655+ "version": "0.1.0",
3656+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz",
3657+ "integrity": "sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==",
3658+ "requires": {
3659+ "@babel/runtime": "^7.13.10",
3660+ "@radix-ui/react-use-callback-ref": "0.1.0"
3661+ }
3662+ },
3663+ "@radix-ui/react-use-layout-effect": {
3664+ "version": "0.1.0",
3665+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz",
3666+ "integrity": "sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==",
3667+ "requires": {
3668+ "@babel/runtime": "^7.13.10"
3669+ }
3670+ },
3671+ "@radix-ui/react-use-rect": {
3672+ "version": "0.1.1",
3673+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz",
3674+ "integrity": "sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==",
3675+ "requires": {
3676+ "@babel/runtime": "^7.13.10",
3677+ "@radix-ui/rect": "0.1.1"
3678+ }
3679+ },
3680+ "@radix-ui/react-use-size": {
3681+ "version": "0.1.1",
3682+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-0.1.1.tgz",
3683+ "integrity": "sha512-pTgWM5qKBu6C7kfKxrKPoBI2zZYZmp2cSXzpUiGM3qEBQlMLtYhaY2JXdXUCxz+XmD1YEjc8oRwvyfsD4AG4WA==",
3684+ "requires": {
3685+ "@babel/runtime": "^7.13.10"
3686+ }
3687+ },
3688+ "@radix-ui/rect": {
3689+ "version": "0.1.1",
3690+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-0.1.1.tgz",
3691+ "integrity": "sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==",
3692+ "requires": {
3693+ "@babel/runtime": "^7.13.10"
3694+ }
3695+ },
3696+ "@rollup/pluginutils": {
3697+ "version": "4.2.1",
3698+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
3699+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
3700+ "dev": true,
3701+ "requires": {
3702+ "estree-walker": "^2.0.1",
3703+ "picomatch": "^2.2.2"
3704+ }
3705+ },
3706+ "@types/lodash": {
3707+ "version": "4.14.182",
3708+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
3709+ "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==",
3710+ "dev": true
3711+ },
3712+ "@types/lodash.debounce": {
3713+ "version": "4.0.7",
3714+ "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.7.tgz",
3715+ "integrity": "sha512-X1T4wMZ+gT000M2/91SYj0d/7JfeNZ9PeeOldSNoE/lunLeQXKvkmIumI29IaKMotU/ln/McOIvgzZcQ/3TrSA==",
3716+ "dev": true,
3717+ "requires": {
3718+ "@types/lodash": "*"
3719+ }
3720+ },
3721+ "@types/prop-types": {
3722+ "version": "15.7.5",
3723+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
3724+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
3725+ "devOptional": true
3726+ },
3727+ "@types/react": {
3728+ "version": "17.0.47",
3729+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.47.tgz",
3730+ "integrity": "sha512-mk0BL8zBinf2ozNr3qPnlu1oyVTYq+4V7WA76RgxUAtf0Em/Wbid38KN6n4abEkvO4xMTBWmnP1FtQzgkEiJoA==",
3731+ "devOptional": true,
3732+ "requires": {
3733+ "@types/prop-types": "*",
3734+ "@types/scheduler": "*",
3735+ "csstype": "^3.0.2"
3736+ }
3737+ },
3738+ "@types/react-dom": {
3739+ "version": "17.0.17",
3740+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.17.tgz",
3741+ "integrity": "sha512-VjnqEmqGnasQKV0CWLevqMTXBYG9GbwuE6x3VetERLh0cq2LTptFE73MrQi2S7GkKXCf2GgwItB/melLnxfnsg==",
3742+ "dev": true,
3743+ "requires": {
3744+ "@types/react": "^17"
3745+ }
3746+ },
3747+ "@types/scheduler": {
3748+ "version": "0.16.2",
3749+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
3750+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
3751+ "devOptional": true
3752+ },
3753+ "@urbit/api": {
3754+ "version": "2.1.1",
3755+ "resolved": "https://registry.npmjs.org/@urbit/api/-/api-2.1.1.tgz",
3756+ "integrity": "sha512-QRlqhtJ73q+pgMdSwuOO62HlxA7/2c5ylCcOUT01LXkJ2LTVCl5u+QnejdDvUmqjOuN2PyZk7df30xJVg6rC2A==",
3757+ "requires": {
3758+ "@babel/runtime": "^7.16.0",
3759+ "big-integer": "^1.6.48",
3760+ "core-js": "^3.19.1",
3761+ "immer": "^9.0.1",
3762+ "urbit-ob": "^5.0.1"
3763+ }
3764+ },
3765+ "@urbit/http-api": {
3766+ "version": "2.1.3",
3767+ "resolved": "https://registry.npmjs.org/@urbit/http-api/-/http-api-2.1.3.tgz",
3768+ "integrity": "sha512-/wL7kQ/b2m24+cJiQ/3bFoU4jq3Qbl9h+JCb3H/1yovhFSUI7RPUbV20ONhCPTryXch6CC5QbgCALStJYHvKJg==",
3769+ "requires": {
3770+ "@babel/runtime": "^7.12.5",
3771+ "@microsoft/fetch-event-source": "^2.0.0",
3772+ "browser-or-node": "^1.3.0",
3773+ "core-js": "^3.19.1"
3774+ }
3775+ },
3776+ "@urbit/vite-plugin-urbit": {
3777+ "version": "0.8.0",
3778+ "resolved": "https://registry.npmjs.org/@urbit/vite-plugin-urbit/-/vite-plugin-urbit-0.8.0.tgz",
3779+ "integrity": "sha512-cx540xZBuHfzud/kOuYU4xPpsFcgE7mF0heac5uXVutDqjySvVXimEuZgBN23ULC7l60R/bAJ2jOWygBwWen4A==",
3780+ "dev": true,
3781+ "requires": {
3782+ "vite-plugin-html-config": "^1.0.6",
3783+ "vite-plugin-rewrite-all": "^0.1.2"
3784+ }
3785+ },
3786+ "@vitejs/plugin-react-refresh": {
3787+ "version": "1.3.6",
3788+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz",
3789+ "integrity": "sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==",
3790+ "dev": true,
3791+ "requires": {
3792+ "@babel/core": "^7.14.8",
3793+ "@babel/plugin-transform-react-jsx-self": "^7.14.5",
3794+ "@babel/plugin-transform-react-jsx-source": "^7.14.5",
3795+ "@rollup/pluginutils": "^4.1.1",
3796+ "react-refresh": "^0.10.0"
3797+ }
3798+ },
3799+ "acorn": {
3800+ "version": "7.4.1",
3801+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
3802+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
3803+ "dev": true
3804+ },
3805+ "acorn-node": {
3806+ "version": "1.8.2",
3807+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
3808+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
3809+ "dev": true,
3810+ "requires": {
3811+ "acorn": "^7.0.0",
3812+ "acorn-walk": "^7.0.0",
3813+ "xtend": "^4.0.2"
3814+ }
3815+ },
3816+ "acorn-walk": {
3817+ "version": "7.2.0",
3818+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
3819+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
3820+ "dev": true
3821+ },
3822+ "ansi-styles": {
3823+ "version": "3.2.1",
3824+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
3825+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
3826+ "dev": true,
3827+ "requires": {
3828+ "color-convert": "^1.9.0"
3829+ }
3830+ },
3831+ "anymatch": {
3832+ "version": "3.1.2",
3833+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
3834+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
3835+ "dev": true,
3836+ "requires": {
3837+ "normalize-path": "^3.0.0",
3838+ "picomatch": "^2.0.4"
3839+ }
3840+ },
3841+ "arg": {
3842+ "version": "5.0.2",
3843+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
3844+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
3845+ "dev": true
3846+ },
3847+ "aria-hidden": {
3848+ "version": "1.1.3",
3849+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.1.3.tgz",
3850+ "integrity": "sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA==",
3851+ "requires": {
3852+ "tslib": "^1.0.0"
3853+ }
3854+ },
3855+ "autoprefixer": {
3856+ "version": "10.4.7",
3857+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz",
3858+ "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==",
3859+ "dev": true,
3860+ "requires": {
3861+ "browserslist": "^4.20.3",
3862+ "caniuse-lite": "^1.0.30001335",
3863+ "fraction.js": "^4.2.0",
3864+ "normalize-range": "^0.1.2",
3865+ "picocolors": "^1.0.0",
3866+ "postcss-value-parser": "^4.2.0"
3867+ }
3868+ },
3869+ "balanced-match": {
3870+ "version": "1.0.2",
3871+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
3872+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
3873+ },
3874+ "big-integer": {
3875+ "version": "1.6.51",
3876+ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
3877+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
3878+ },
3879+ "binary-extensions": {
3880+ "version": "2.2.0",
3881+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
3882+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
3883+ "dev": true
3884+ },
3885+ "bn.js": {
3886+ "version": "4.12.0",
3887+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
3888+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
3889+ },
3890+ "brace-expansion": {
3891+ "version": "1.1.11",
3892+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
3893+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
3894+ "requires": {
3895+ "balanced-match": "^1.0.0",
3896+ "concat-map": "0.0.1"
3897+ }
3898+ },
3899+ "braces": {
3900+ "version": "3.0.2",
3901+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
3902+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
3903+ "dev": true,
3904+ "requires": {
3905+ "fill-range": "^7.0.1"
3906+ }
3907+ },
3908+ "broadcast-channel": {
3909+ "version": "3.7.0",
3910+ "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz",
3911+ "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==",
3912+ "requires": {
3913+ "@babel/runtime": "^7.7.2",
3914+ "detect-node": "^2.1.0",
3915+ "js-sha3": "0.8.0",
3916+ "microseconds": "0.2.0",
3917+ "nano-time": "1.0.0",
3918+ "oblivious-set": "1.0.0",
3919+ "rimraf": "3.0.2",
3920+ "unload": "2.2.0"
3921+ }
3922+ },
3923+ "browser-or-node": {
3924+ "version": "1.3.0",
3925+ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-1.3.0.tgz",
3926+ "integrity": "sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg=="
3927+ },
3928+ "browserslist": {
3929+ "version": "4.21.1",
3930+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz",
3931+ "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==",
3932+ "dev": true,
3933+ "requires": {
3934+ "caniuse-lite": "^1.0.30001359",
3935+ "electron-to-chromium": "^1.4.172",
3936+ "node-releases": "^2.0.5",
3937+ "update-browserslist-db": "^1.0.4"
3938+ }
3939+ },
3940+ "camelcase-css": {
3941+ "version": "2.0.1",
3942+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
3943+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
3944+ "dev": true
3945+ },
3946+ "caniuse-lite": {
3947+ "version": "1.0.30001361",
3948+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz",
3949+ "integrity": "sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==",
3950+ "dev": true
3951+ },
3952+ "chalk": {
3953+ "version": "2.4.2",
3954+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
3955+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
3956+ "dev": true,
3957+ "requires": {
3958+ "ansi-styles": "^3.2.1",
3959+ "escape-string-regexp": "^1.0.5",
3960+ "supports-color": "^5.3.0"
3961+ }
3962+ },
3963+ "chokidar": {
3964+ "version": "3.5.3",
3965+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
3966+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
3967+ "dev": true,
3968+ "requires": {
3969+ "anymatch": "~3.1.2",
3970+ "braces": "~3.0.2",
3971+ "fsevents": "~2.3.2",
3972+ "glob-parent": "~5.1.2",
3973+ "is-binary-path": "~2.1.0",
3974+ "is-glob": "~4.0.1",
3975+ "normalize-path": "~3.0.0",
3976+ "readdirp": "~3.6.0"
3977+ },
3978+ "dependencies": {
3979+ "glob-parent": {
3980+ "version": "5.1.2",
3981+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
3982+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
3983+ "dev": true,
3984+ "requires": {
3985+ "is-glob": "^4.0.1"
3986+ }
3987+ }
3988+ }
3989+ },
3990+ "classnames": {
3991+ "version": "2.3.1",
3992+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
3993+ "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
3994+ },
3995+ "color-convert": {
3996+ "version": "1.9.3",
3997+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
3998+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
3999+ "dev": true,
4000+ "requires": {
4001+ "color-name": "1.1.3"
4002+ }
4003+ },
4004+ "color-name": {
4005+ "version": "1.1.3",
4006+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
4007+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
4008+ "dev": true
4009+ },
4010+ "concat-map": {
4011+ "version": "0.0.1",
4012+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
4013+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
4014+ },
4015+ "connect-history-api-fallback": {
4016+ "version": "1.6.0",
4017+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
4018+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
4019+ "dev": true
4020+ },
4021+ "convert-source-map": {
4022+ "version": "1.8.0",
4023+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
4024+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
4025+ "dev": true,
4026+ "requires": {
4027+ "safe-buffer": "~5.1.1"
4028+ }
4029+ },
4030+ "core-js": {
4031+ "version": "3.23.3",
4032+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.23.3.tgz",
4033+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q=="
4034+ },
4035+ "cssesc": {
4036+ "version": "3.0.0",
4037+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
4038+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
4039+ "dev": true
4040+ },
4041+ "csstype": {
4042+ "version": "3.1.0",
4043+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz",
4044+ "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA=="
4045+ },
4046+ "debug": {
4047+ "version": "4.3.4",
4048+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
4049+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
4050+ "dev": true,
4051+ "requires": {
4052+ "ms": "2.1.2"
4053+ }
4054+ },
4055+ "defined": {
4056+ "version": "1.0.0",
4057+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
4058+ "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
4059+ "dev": true
4060+ },
4061+ "detect-node": {
4062+ "version": "2.1.0",
4063+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
4064+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
4065+ },
4066+ "detect-node-es": {
4067+ "version": "1.1.0",
4068+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
4069+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
4070+ },
4071+ "detective": {
4072+ "version": "5.2.1",
4073+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
4074+ "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
4075+ "dev": true,
4076+ "requires": {
4077+ "acorn-node": "^1.8.2",
4078+ "defined": "^1.0.0",
4079+ "minimist": "^1.2.6"
4080+ }
4081+ },
4082+ "didyoumean": {
4083+ "version": "1.2.2",
4084+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
4085+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
4086+ "dev": true
4087+ },
4088+ "dlv": {
4089+ "version": "1.1.3",
4090+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
4091+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
4092+ "dev": true
4093+ },
4094+ "electron-to-chromium": {
4095+ "version": "1.4.176",
4096+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz",
4097+ "integrity": "sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw==",
4098+ "dev": true
4099+ },
4100+ "esbuild": {
4101+ "version": "0.14.48",
4102+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz",
4103+ "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==",
4104+ "dev": true,
4105+ "requires": {
4106+ "esbuild-android-64": "0.14.48",
4107+ "esbuild-android-arm64": "0.14.48",
4108+ "esbuild-darwin-64": "0.14.48",
4109+ "esbuild-darwin-arm64": "0.14.48",
4110+ "esbuild-freebsd-64": "0.14.48",
4111+ "esbuild-freebsd-arm64": "0.14.48",
4112+ "esbuild-linux-32": "0.14.48",
4113+ "esbuild-linux-64": "0.14.48",
4114+ "esbuild-linux-arm": "0.14.48",
4115+ "esbuild-linux-arm64": "0.14.48",
4116+ "esbuild-linux-mips64le": "0.14.48",
4117+ "esbuild-linux-ppc64le": "0.14.48",
4118+ "esbuild-linux-riscv64": "0.14.48",
4119+ "esbuild-linux-s390x": "0.14.48",
4120+ "esbuild-netbsd-64": "0.14.48",
4121+ "esbuild-openbsd-64": "0.14.48",
4122+ "esbuild-sunos-64": "0.14.48",
4123+ "esbuild-windows-32": "0.14.48",
4124+ "esbuild-windows-64": "0.14.48",
4125+ "esbuild-windows-arm64": "0.14.48"
4126+ }
4127+ },
4128+ "esbuild-android-64": {
4129+ "version": "0.14.48",
4130+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz",
4131+ "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==",
4132+ "dev": true,
4133+ "optional": true
4134+ },
4135+ "esbuild-android-arm64": {
4136+ "version": "0.14.48",
4137+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz",
4138+ "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==",
4139+ "dev": true,
4140+ "optional": true
4141+ },
4142+ "esbuild-darwin-64": {
4143+ "version": "0.14.48",
4144+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz",
4145+ "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==",
4146+ "dev": true,
4147+ "optional": true
4148+ },
4149+ "esbuild-darwin-arm64": {
4150+ "version": "0.14.48",
4151+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz",
4152+ "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==",
4153+ "dev": true,
4154+ "optional": true
4155+ },
4156+ "esbuild-freebsd-64": {
4157+ "version": "0.14.48",
4158+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz",
4159+ "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==",
4160+ "dev": true,
4161+ "optional": true
4162+ },
4163+ "esbuild-freebsd-arm64": {
4164+ "version": "0.14.48",
4165+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz",
4166+ "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==",
4167+ "dev": true,
4168+ "optional": true
4169+ },
4170+ "esbuild-linux-32": {
4171+ "version": "0.14.48",
4172+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz",
4173+ "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==",
4174+ "dev": true,
4175+ "optional": true
4176+ },
4177+ "esbuild-linux-64": {
4178+ "version": "0.14.48",
4179+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz",
4180+ "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==",
4181+ "dev": true,
4182+ "optional": true
4183+ },
4184+ "esbuild-linux-arm": {
4185+ "version": "0.14.48",
4186+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz",
4187+ "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==",
4188+ "dev": true,
4189+ "optional": true
4190+ },
4191+ "esbuild-linux-arm64": {
4192+ "version": "0.14.48",
4193+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz",
4194+ "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==",
4195+ "dev": true,
4196+ "optional": true
4197+ },
4198+ "esbuild-linux-mips64le": {
4199+ "version": "0.14.48",
4200+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz",
4201+ "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==",
4202+ "dev": true,
4203+ "optional": true
4204+ },
4205+ "esbuild-linux-ppc64le": {
4206+ "version": "0.14.48",
4207+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz",
4208+ "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==",
4209+ "dev": true,
4210+ "optional": true
4211+ },
4212+ "esbuild-linux-riscv64": {
4213+ "version": "0.14.48",
4214+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz",
4215+ "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==",
4216+ "dev": true,
4217+ "optional": true
4218+ },
4219+ "esbuild-linux-s390x": {
4220+ "version": "0.14.48",
4221+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz",
4222+ "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==",
4223+ "dev": true,
4224+ "optional": true
4225+ },
4226+ "esbuild-netbsd-64": {
4227+ "version": "0.14.48",
4228+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz",
4229+ "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==",
4230+ "dev": true,
4231+ "optional": true
4232+ },
4233+ "esbuild-openbsd-64": {
4234+ "version": "0.14.48",
4235+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz",
4236+ "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==",
4237+ "dev": true,
4238+ "optional": true
4239+ },
4240+ "esbuild-sunos-64": {
4241+ "version": "0.14.48",
4242+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz",
4243+ "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==",
4244+ "dev": true,
4245+ "optional": true
4246+ },
4247+ "esbuild-windows-32": {
4248+ "version": "0.14.48",
4249+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz",
4250+ "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==",
4251+ "dev": true,
4252+ "optional": true
4253+ },
4254+ "esbuild-windows-64": {
4255+ "version": "0.14.48",
4256+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz",
4257+ "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==",
4258+ "dev": true,
4259+ "optional": true
4260+ },
4261+ "esbuild-windows-arm64": {
4262+ "version": "0.14.48",
4263+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz",
4264+ "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==",
4265+ "dev": true,
4266+ "optional": true
4267+ },
4268+ "escalade": {
4269+ "version": "3.1.1",
4270+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
4271+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
4272+ "dev": true
4273+ },
4274+ "escape-string-regexp": {
4275+ "version": "1.0.5",
4276+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
4277+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
4278+ "dev": true
4279+ },
4280+ "estree-walker": {
4281+ "version": "2.0.2",
4282+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
4283+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
4284+ "dev": true
4285+ },
4286+ "fast-glob": {
4287+ "version": "3.2.11",
4288+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
4289+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
4290+ "dev": true,
4291+ "requires": {
4292+ "@nodelib/fs.stat": "^2.0.2",
4293+ "@nodelib/fs.walk": "^1.2.3",
4294+ "glob-parent": "^5.1.2",
4295+ "merge2": "^1.3.0",
4296+ "micromatch": "^4.0.4"
4297+ },
4298+ "dependencies": {
4299+ "glob-parent": {
4300+ "version": "5.1.2",
4301+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4302+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4303+ "dev": true,
4304+ "requires": {
4305+ "is-glob": "^4.0.1"
4306+ }
4307+ }
4308+ }
4309+ },
4310+ "fastq": {
4311+ "version": "1.13.0",
4312+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
4313+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
4314+ "dev": true,
4315+ "requires": {
4316+ "reusify": "^1.0.4"
4317+ }
4318+ },
4319+ "fill-range": {
4320+ "version": "7.0.1",
4321+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
4322+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
4323+ "dev": true,
4324+ "requires": {
4325+ "to-regex-range": "^5.0.1"
4326+ }
4327+ },
4328+ "fraction.js": {
4329+ "version": "4.2.0",
4330+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
4331+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
4332+ "dev": true
4333+ },
4334+ "fs.realpath": {
4335+ "version": "1.0.0",
4336+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
4337+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
4338+ },
4339+ "fsevents": {
4340+ "version": "2.3.2",
4341+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
4342+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
4343+ "dev": true,
4344+ "optional": true
4345+ },
4346+ "function-bind": {
4347+ "version": "1.1.1",
4348+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
4349+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
4350+ "dev": true
4351+ },
4352+ "gensync": {
4353+ "version": "1.0.0-beta.2",
4354+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
4355+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
4356+ "dev": true
4357+ },
4358+ "get-nonce": {
4359+ "version": "1.0.1",
4360+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
4361+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
4362+ },
4363+ "glob": {
4364+ "version": "7.2.3",
4365+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
4366+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
4367+ "requires": {
4368+ "fs.realpath": "^1.0.0",
4369+ "inflight": "^1.0.4",
4370+ "inherits": "2",
4371+ "minimatch": "^3.1.1",
4372+ "once": "^1.3.0",
4373+ "path-is-absolute": "^1.0.0"
4374+ }
4375+ },
4376+ "glob-parent": {
4377+ "version": "6.0.2",
4378+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
4379+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
4380+ "dev": true,
4381+ "requires": {
4382+ "is-glob": "^4.0.3"
4383+ }
4384+ },
4385+ "globals": {
4386+ "version": "11.12.0",
4387+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
4388+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
4389+ "dev": true
4390+ },
4391+ "has": {
4392+ "version": "1.0.3",
4393+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
4394+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
4395+ "dev": true,
4396+ "requires": {
4397+ "function-bind": "^1.1.1"
4398+ }
4399+ },
4400+ "has-flag": {
4401+ "version": "3.0.0",
4402+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
4403+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
4404+ "dev": true
4405+ },
4406+ "history": {
4407+ "version": "5.3.0",
4408+ "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz",
4409+ "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==",
4410+ "requires": {
4411+ "@babel/runtime": "^7.7.6"
4412+ }
4413+ },
4414+ "immer": {
4415+ "version": "9.0.15",
4416+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz",
4417+ "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ=="
4418+ },
4419+ "inflight": {
4420+ "version": "1.0.6",
4421+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
4422+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
4423+ "requires": {
4424+ "once": "^1.3.0",
4425+ "wrappy": "1"
4426+ }
4427+ },
4428+ "inherits": {
4429+ "version": "2.0.4",
4430+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
4431+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
4432+ },
4433+ "invariant": {
4434+ "version": "2.2.4",
4435+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
4436+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
4437+ "requires": {
4438+ "loose-envify": "^1.0.0"
4439+ }
4440+ },
4441+ "is-binary-path": {
4442+ "version": "2.1.0",
4443+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
4444+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
4445+ "dev": true,
4446+ "requires": {
4447+ "binary-extensions": "^2.0.0"
4448+ }
4449+ },
4450+ "is-core-module": {
4451+ "version": "2.9.0",
4452+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
4453+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
4454+ "dev": true,
4455+ "requires": {
4456+ "has": "^1.0.3"
4457+ }
4458+ },
4459+ "is-extglob": {
4460+ "version": "2.1.1",
4461+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
4462+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
4463+ "dev": true
4464+ },
4465+ "is-glob": {
4466+ "version": "4.0.3",
4467+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
4468+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
4469+ "dev": true,
4470+ "requires": {
4471+ "is-extglob": "^2.1.1"
4472+ }
4473+ },
4474+ "is-number": {
4475+ "version": "7.0.0",
4476+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
4477+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
4478+ "dev": true
4479+ },
4480+ "js-sha3": {
4481+ "version": "0.8.0",
4482+ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz",
4483+ "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q=="
4484+ },
4485+ "js-tokens": {
4486+ "version": "4.0.0",
4487+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
4488+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
4489+ },
4490+ "jsesc": {
4491+ "version": "2.5.2",
4492+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
4493+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
4494+ "dev": true
4495+ },
4496+ "json5": {
4497+ "version": "2.2.1",
4498+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
4499+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
4500+ "dev": true
4501+ },
4502+ "lilconfig": {
4503+ "version": "2.0.5",
4504+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
4505+ "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
4506+ "dev": true
4507+ },
4508+ "lodash.chunk": {
4509+ "version": "4.2.0",
4510+ "resolved": "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz",
4511+ "integrity": "sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w=="
4512+ },
4513+ "lodash.debounce": {
4514+ "version": "4.0.8",
4515+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
4516+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
4517+ },
4518+ "lodash.isequal": {
4519+ "version": "4.5.0",
4520+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
4521+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
4522+ },
4523+ "loose-envify": {
4524+ "version": "1.4.0",
4525+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
4526+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
4527+ "requires": {
4528+ "js-tokens": "^3.0.0 || ^4.0.0"
4529+ }
4530+ },
4531+ "match-sorter": {
4532+ "version": "6.3.1",
4533+ "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz",
4534+ "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==",
4535+ "requires": {
4536+ "@babel/runtime": "^7.12.5",
4537+ "remove-accents": "0.4.2"
4538+ }
4539+ },
4540+ "merge2": {
4541+ "version": "1.4.1",
4542+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
4543+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
4544+ "dev": true
4545+ },
4546+ "micromatch": {
4547+ "version": "4.0.5",
4548+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
4549+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
4550+ "dev": true,
4551+ "requires": {
4552+ "braces": "^3.0.2",
4553+ "picomatch": "^2.3.1"
4554+ }
4555+ },
4556+ "microseconds": {
4557+ "version": "0.2.0",
4558+ "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz",
4559+ "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA=="
4560+ },
4561+ "minimatch": {
4562+ "version": "3.1.2",
4563+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
4564+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
4565+ "requires": {
4566+ "brace-expansion": "^1.1.7"
4567+ }
4568+ },
4569+ "minimist": {
4570+ "version": "1.2.6",
4571+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
4572+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
4573+ "dev": true
4574+ },
4575+ "ms": {
4576+ "version": "2.1.2",
4577+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
4578+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
4579+ "dev": true
4580+ },
4581+ "nano-time": {
4582+ "version": "1.0.0",
4583+ "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz",
4584+ "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==",
4585+ "requires": {
4586+ "big-integer": "^1.6.16"
4587+ }
4588+ },
4589+ "nanoid": {
4590+ "version": "3.3.4",
4591+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
4592+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
4593+ "dev": true
4594+ },
4595+ "node-releases": {
4596+ "version": "2.0.5",
4597+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz",
4598+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
4599+ "dev": true
4600+ },
4601+ "normalize-path": {
4602+ "version": "3.0.0",
4603+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
4604+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
4605+ "dev": true
4606+ },
4607+ "normalize-range": {
4608+ "version": "0.1.2",
4609+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
4610+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
4611+ "dev": true
4612+ },
4613+ "object-assign": {
4614+ "version": "4.1.1",
4615+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
4616+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
4617+ },
4618+ "object-hash": {
4619+ "version": "3.0.0",
4620+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
4621+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
4622+ "dev": true
4623+ },
4624+ "oblivious-set": {
4625+ "version": "1.0.0",
4626+ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz",
4627+ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw=="
4628+ },
4629+ "once": {
4630+ "version": "1.4.0",
4631+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
4632+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
4633+ "requires": {
4634+ "wrappy": "1"
4635+ }
4636+ },
4637+ "path-is-absolute": {
4638+ "version": "1.0.1",
4639+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
4640+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
4641+ },
4642+ "path-parse": {
4643+ "version": "1.0.7",
4644+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
4645+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
4646+ "dev": true
4647+ },
4648+ "picocolors": {
4649+ "version": "1.0.0",
4650+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
4651+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
4652+ "dev": true
4653+ },
4654+ "picomatch": {
4655+ "version": "2.3.1",
4656+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
4657+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
4658+ "dev": true
4659+ },
4660+ "pify": {
4661+ "version": "2.3.0",
4662+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
4663+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
4664+ "dev": true
4665+ },
4666+ "postcss": {
4667+ "version": "8.4.14",
4668+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
4669+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
4670+ "dev": true,
4671+ "requires": {
4672+ "nanoid": "^3.3.4",
4673+ "picocolors": "^1.0.0",
4674+ "source-map-js": "^1.0.2"
4675+ }
4676+ },
4677+ "postcss-import": {
4678+ "version": "14.1.0",
4679+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
4680+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
4681+ "dev": true,
4682+ "requires": {
4683+ "postcss-value-parser": "^4.0.0",
4684+ "read-cache": "^1.0.0",
4685+ "resolve": "^1.1.7"
4686+ }
4687+ },
4688+ "postcss-js": {
4689+ "version": "4.0.0",
4690+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
4691+ "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
4692+ "dev": true,
4693+ "requires": {
4694+ "camelcase-css": "^2.0.1"
4695+ }
4696+ },
4697+ "postcss-load-config": {
4698+ "version": "3.1.4",
4699+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
4700+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
4701+ "dev": true,
4702+ "requires": {
4703+ "lilconfig": "^2.0.5",
4704+ "yaml": "^1.10.2"
4705+ }
4706+ },
4707+ "postcss-nested": {
4708+ "version": "5.0.6",
4709+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
4710+ "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
4711+ "dev": true,
4712+ "requires": {
4713+ "postcss-selector-parser": "^6.0.6"
4714+ }
4715+ },
4716+ "postcss-selector-parser": {
4717+ "version": "6.0.10",
4718+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
4719+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
4720+ "dev": true,
4721+ "requires": {
4722+ "cssesc": "^3.0.0",
4723+ "util-deprecate": "^1.0.2"
4724+ }
4725+ },
4726+ "postcss-value-parser": {
4727+ "version": "4.2.0",
4728+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
4729+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
4730+ "dev": true
4731+ },
4732+ "queue-microtask": {
4733+ "version": "1.2.3",
4734+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
4735+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
4736+ "dev": true
4737+ },
4738+ "quick-lru": {
4739+ "version": "5.1.1",
4740+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
4741+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
4742+ "dev": true
4743+ },
4744+ "react": {
4745+ "version": "17.0.2",
4746+ "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
4747+ "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
4748+ "requires": {
4749+ "loose-envify": "^1.1.0",
4750+ "object-assign": "^4.1.1"
4751+ }
4752+ },
4753+ "react-dom": {
4754+ "version": "17.0.2",
4755+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
4756+ "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
4757+ "requires": {
4758+ "loose-envify": "^1.1.0",
4759+ "object-assign": "^4.1.1",
4760+ "scheduler": "^0.20.2"
4761+ }
4762+ },
4763+ "react-query": {
4764+ "version": "3.39.1",
4765+ "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.1.tgz",
4766+ "integrity": "sha512-qYKT1bavdDiQZbngWZyPotlBVzcBjDYEJg5RQLBa++5Ix5jjfbEYJmHSZRZD+USVHUSvl/ey9Hu+QfF1QAK80A==",
4767+ "requires": {
4768+ "@babel/runtime": "^7.5.5",
4769+ "broadcast-channel": "^3.4.1",
4770+ "match-sorter": "^6.0.2"
4771+ }
4772+ },
4773+ "react-refresh": {
4774+ "version": "0.10.0",
4775+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.10.0.tgz",
4776+ "integrity": "sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==",
4777+ "dev": true
4778+ },
4779+ "react-remove-scroll": {
4780+ "version": "2.5.4",
4781+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz",
4782+ "integrity": "sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==",
4783+ "requires": {
4784+ "react-remove-scroll-bar": "^2.3.3",
4785+ "react-style-singleton": "^2.2.1",
4786+ "tslib": "^2.1.0",
4787+ "use-callback-ref": "^1.3.0",
4788+ "use-sidecar": "^1.1.2"
4789+ },
4790+ "dependencies": {
4791+ "tslib": {
4792+ "version": "2.4.0",
4793+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
4794+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
4795+ }
4796+ }
4797+ },
4798+ "react-remove-scroll-bar": {
4799+ "version": "2.3.3",
4800+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.3.tgz",
4801+ "integrity": "sha512-i9GMNWwpz8XpUpQ6QlevUtFjHGqnPG4Hxs+wlIJntu/xcsZVEpJcIV71K3ZkqNy2q3GfgvkD7y6t/Sv8ofYSbw==",
4802+ "requires": {
4803+ "react-style-singleton": "^2.2.1",
4804+ "tslib": "^2.0.0"
4805+ },
4806+ "dependencies": {
4807+ "tslib": {
4808+ "version": "2.4.0",
4809+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
4810+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
4811+ }
4812+ }
4813+ },
4814+ "react-router": {
4815+ "version": "6.3.0",
4816+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.3.0.tgz",
4817+ "integrity": "sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==",
4818+ "requires": {
4819+ "history": "^5.2.0"
4820+ }
4821+ },
4822+ "react-router-dom": {
4823+ "version": "6.3.0",
4824+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.3.0.tgz",
4825+ "integrity": "sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==",
4826+ "requires": {
4827+ "history": "^5.2.0",
4828+ "react-router": "6.3.0"
4829+ }
4830+ },
4831+ "react-style-singleton": {
4832+ "version": "2.2.1",
4833+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
4834+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
4835+ "requires": {
4836+ "get-nonce": "^1.0.0",
4837+ "invariant": "^2.2.4",
4838+ "tslib": "^2.0.0"
4839+ },
4840+ "dependencies": {
4841+ "tslib": {
4842+ "version": "2.4.0",
4843+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
4844+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
4845+ }
4846+ }
4847+ },
4848+ "read-cache": {
4849+ "version": "1.0.0",
4850+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
4851+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
4852+ "dev": true,
4853+ "requires": {
4854+ "pify": "^2.3.0"
4855+ }
4856+ },
4857+ "readdirp": {
4858+ "version": "3.6.0",
4859+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
4860+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
4861+ "dev": true,
4862+ "requires": {
4863+ "picomatch": "^2.2.1"
4864+ }
4865+ },
4866+ "regenerator-runtime": {
4867+ "version": "0.13.9",
4868+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
4869+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
4870+ },
4871+ "remove-accents": {
4872+ "version": "0.4.2",
4873+ "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
4874+ "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA=="
4875+ },
4876+ "resolve": {
4877+ "version": "1.22.1",
4878+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
4879+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
4880+ "dev": true,
4881+ "requires": {
4882+ "is-core-module": "^2.9.0",
4883+ "path-parse": "^1.0.7",
4884+ "supports-preserve-symlinks-flag": "^1.0.0"
4885+ }
4886+ },
4887+ "reusify": {
4888+ "version": "1.0.4",
4889+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
4890+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
4891+ "dev": true
4892+ },
4893+ "rimraf": {
4894+ "version": "3.0.2",
4895+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
4896+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
4897+ "requires": {
4898+ "glob": "^7.1.3"
4899+ }
4900+ },
4901+ "rollup": {
4902+ "version": "2.75.7",
4903+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
4904+ "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
4905+ "dev": true,
4906+ "requires": {
4907+ "fsevents": "~2.3.2"
4908+ }
4909+ },
4910+ "run-parallel": {
4911+ "version": "1.2.0",
4912+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
4913+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
4914+ "dev": true,
4915+ "requires": {
4916+ "queue-microtask": "^1.2.2"
4917+ }
4918+ },
4919+ "safe-buffer": {
4920+ "version": "5.1.2",
4921+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
4922+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
4923+ "dev": true
4924+ },
4925+ "scheduler": {
4926+ "version": "0.20.2",
4927+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
4928+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
4929+ "requires": {
4930+ "loose-envify": "^1.1.0",
4931+ "object-assign": "^4.1.1"
4932+ }
4933+ },
4934+ "semver": {
4935+ "version": "6.3.0",
4936+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
4937+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
4938+ "dev": true
4939+ },
4940+ "source-map-js": {
4941+ "version": "1.0.2",
4942+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
4943+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
4944+ "dev": true
4945+ },
4946+ "supports-color": {
4947+ "version": "5.5.0",
4948+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
4949+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
4950+ "dev": true,
4951+ "requires": {
4952+ "has-flag": "^3.0.0"
4953+ }
4954+ },
4955+ "supports-preserve-symlinks-flag": {
4956+ "version": "1.0.0",
4957+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
4958+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
4959+ "dev": true
4960+ },
4961+ "tailwindcss": {
4962+ "version": "3.1.4",
4963+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.1.4.tgz",
4964+ "integrity": "sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==",
4965+ "dev": true,
4966+ "requires": {
4967+ "arg": "^5.0.2",
4968+ "chokidar": "^3.5.3",
4969+ "color-name": "^1.1.4",
4970+ "detective": "^5.2.1",
4971+ "didyoumean": "^1.2.2",
4972+ "dlv": "^1.1.3",
4973+ "fast-glob": "^3.2.11",
4974+ "glob-parent": "^6.0.2",
4975+ "is-glob": "^4.0.3",
4976+ "lilconfig": "^2.0.5",
4977+ "normalize-path": "^3.0.0",
4978+ "object-hash": "^3.0.0",
4979+ "picocolors": "^1.0.0",
4980+ "postcss": "^8.4.14",
4981+ "postcss-import": "^14.1.0",
4982+ "postcss-js": "^4.0.0",
4983+ "postcss-load-config": "^3.1.4",
4984+ "postcss-nested": "5.0.6",
4985+ "postcss-selector-parser": "^6.0.10",
4986+ "postcss-value-parser": "^4.2.0",
4987+ "quick-lru": "^5.1.1",
4988+ "resolve": "^1.22.0"
4989+ },
4990+ "dependencies": {
4991+ "color-name": {
4992+ "version": "1.1.4",
4993+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
4994+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
4995+ "dev": true
4996+ }
4997+ }
4998+ },
4999+ "to-fast-properties": {
5000+ "version": "2.0.0",
5001+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
5002+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
5003+ "dev": true
5004+ },
5005+ "to-regex-range": {
5006+ "version": "5.0.1",
5007+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
5008+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
5009+ "dev": true,
5010+ "requires": {
5011+ "is-number": "^7.0.0"
5012+ }
5013+ },
5014+ "tslib": {
5015+ "version": "1.14.1",
5016+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
5017+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
5018+ },
5019+ "typescript": {
5020+ "version": "4.7.4",
5021+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
5022+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
5023+ "dev": true
5024+ },
5025+ "unload": {
5026+ "version": "2.2.0",
5027+ "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz",
5028+ "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==",
5029+ "requires": {
5030+ "@babel/runtime": "^7.6.2",
5031+ "detect-node": "^2.0.4"
5032+ }
5033+ },
5034+ "update-browserslist-db": {
5035+ "version": "1.0.4",
5036+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
5037+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
5038+ "dev": true,
5039+ "requires": {
5040+ "escalade": "^3.1.1",
5041+ "picocolors": "^1.0.0"
5042+ }
5043+ },
5044+ "urbit-ob": {
5045+ "version": "5.0.1",
5046+ "resolved": "https://registry.npmjs.org/urbit-ob/-/urbit-ob-5.0.1.tgz",
5047+ "integrity": "sha512-qGNAwu87XNkW3g8ah4fUwmh2EKXtsdhEbyEiE5qX4Op17rhLH3HSkvu8g9z+MhqX51Uz9sf8ktvqJj/IRwETIQ==",
5048+ "requires": {
5049+ "bn.js": "^4.11.8",
5050+ "lodash.chunk": "^4.2.0",
5051+ "lodash.isequal": "^4.5.0"
5052+ }
5053+ },
5054+ "use-callback-ref": {
5055+ "version": "1.3.0",
5056+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
5057+ "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
5058+ "requires": {
5059+ "tslib": "^2.0.0"
5060+ },
5061+ "dependencies": {
5062+ "tslib": {
5063+ "version": "2.4.0",
5064+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5065+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5066+ }
5067+ }
5068+ },
5069+ "use-sidecar": {
5070+ "version": "1.1.2",
5071+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
5072+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
5073+ "requires": {
5074+ "detect-node-es": "^1.1.0",
5075+ "tslib": "^2.0.0"
5076+ },
5077+ "dependencies": {
5078+ "tslib": {
5079+ "version": "2.4.0",
5080+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
5081+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
5082+ }
5083+ }
5084+ },
5085+ "util-deprecate": {
5086+ "version": "1.0.2",
5087+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5088+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
5089+ "dev": true
5090+ },
5091+ "vite": {
5092+ "version": "2.9.13",
5093+ "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.13.tgz",
5094+ "integrity": "sha512-AsOBAaT0AD7Mhe8DuK+/kE4aWYFMx/i0ZNi98hJclxb4e0OhQcZYUrvLjIaQ8e59Ui7txcvKMiJC1yftqpQoDw==",
5095+ "dev": true,
5096+ "requires": {
5097+ "esbuild": "^0.14.27",
5098+ "fsevents": "~2.3.2",
5099+ "postcss": "^8.4.13",
5100+ "resolve": "^1.22.0",
5101+ "rollup": "^2.59.0"
5102+ }
5103+ },
5104+ "vite-plugin-html-config": {
5105+ "version": "1.0.8",
5106+ "resolved": "https://registry.npmjs.org/vite-plugin-html-config/-/vite-plugin-html-config-1.0.8.tgz",
5107+ "integrity": "sha512-3tTtBQO+6zpC8uzAAfj3FWygj+V6H6F9fEt5KtB3j5UHsRYP0yLpTHsMvubXtqCXbKDp1oOakYYSjprqYcbrpA==",
5108+ "dev": true,
5109+ "requires": {}
5110+ },
5111+ "vite-plugin-rewrite-all": {
5112+ "version": "0.1.2",
5113+ "resolved": "https://registry.npmjs.org/vite-plugin-rewrite-all/-/vite-plugin-rewrite-all-0.1.2.tgz",
5114+ "integrity": "sha512-hBFuG043kbixgZ/ke9SzKhkO6P8a5ryxD0CmZTe+/Cz17RIKi7uSeNUJy79V4FgavZ7pWVRg0tqVwJ7lP/A2/Q==",
5115+ "dev": true,
5116+ "requires": {
5117+ "connect-history-api-fallback": "^1.6.0"
5118+ }
5119+ },
5120+ "wrappy": {
5121+ "version": "1.0.2",
5122+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
5123+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
5124+ },
5125+ "xtend": {
5126+ "version": "4.0.2",
5127+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
5128+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
5129+ "dev": true
5130+ },
5131+ "yaml": {
5132+ "version": "1.10.2",
5133+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
5134+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
5135+ "dev": true
5136+ }
5137+ }
5138+}
ui/package.json+14−5
@@ -10,20 +10,29 @@
1010 "tsc": "tsc --noEmit"
1111 },
1212 "dependencies": {
13+ "@heroicons/react": "^1.0.6",
14+ "@radix-ui/react-dropdown-menu": "^0.1.6",
15+ "@radix-ui/react-toggle-group": "^0.1.5",
1316 "@urbit/api": "^2.0.0",
1417 "@urbit/http-api": "^2.0.0",
18+ "big-integer": "^1.6.51",
19+ "classnames": "^2.3.1",
20+ "lodash.debounce": "^4.0.8",
1521 "react": "^17.0.2",
16− "react-dom": "^17.0.2"
22+ "react-dom": "^17.0.2",
23+ "react-query": "^3.39.1",
24+ "react-router-dom": "^6.3.0"
1725 },
1826 "devDependencies": {
27+ "@types/lodash.debounce": "^4.0.7",
1928 "@types/react": "^17.0.0",
2029 "@types/react-dom": "^17.0.0",
2130 "@urbit/vite-plugin-urbit": "^0.8.0",
2231 "@vitejs/plugin-react-refresh": "^1.3.1",
23− "autoprefixer": "^10.3.7",
24− "postcss": "^8.3.9",
25− "tailwindcss": "^2.2.16",
32+ "autoprefixer": "^10.4.7",
33+ "postcss": "^8.4.14",
34+ "tailwindcss": "^3.1.4",
2635 "typescript": "^4.3.2",
27− "vite": "^2.6.7"
36+ "vite": "^2.9.13"
2837 }
2938}
ui/src/api.tsnew file+6
@@ -0,0 +1,6 @@
1+import Urbit from "@urbit/http-api";
2+
3+const api = new Urbit('', '', window.desk);
4+api.ship = window.ship;
5+
6+export default api;
ui/src/app.tsx+21−39
@@ -1,44 +1,26 @@
1−import React, { useEffect, useState } from 'react';
2−import Urbit from '@urbit/http-api';
3−import { Charges, ChargeUpdateInitial, scryCharges } from '@urbit/api';
4−import { AppTile } from './components/AppTile';
1+import React from 'react';
2+import { QueryClient, QueryClientProvider } from 'react-query';
3+import { BrowserRouter, Route, Routes } from 'react-router-dom';
4+import { Search } from './pages/Search';
55
6−const api = new Urbit('', '', window.desk);
7−api.ship = window.ship;
8−
9−export function App() {
10− const [apps, setApps] = useState<Charges>();
11−
12− useEffect(() => {
13− async function init() {
14− const charges = (await api.scry<ChargeUpdateInitial>(scryCharges)).initial;
15− setApps(charges);
16− }
17−
18− init();
19− }, []);
6+const queryClient = new QueryClient();
207
8+function Main() {
219 return (
22− <main className="flex items-center justify-center min-h-screen">
23− <div className="max-w-md space-y-6 py-20">
24− <h1 className="text-3xl font-bold">Welcome to seek</h1>
25− <p>Here&apos;s your urbit&apos;s installed apps:</p>
26− {apps && (
27− <ul className="space-y-4">
28− {Object.entries(apps).map(([desk, app]) => (
29− <li key={desk} className="flex items-center space-x-3 text-sm leading-tight">
30− <AppTile {...app} />
31− <div className="flex-1 text-black">
32− <p>
33− <strong>{app.title || desk}</strong>
34− </p>
35− {app.info && <p>{app.info}</p>}
36− </div>
37− </li>
38− ))}
39− </ul>
40− )}
41− </div>
42− </main>
10+ <Routes>
11+ <Route path="/" element={<Search />} />
12+ <Route path="/:lookup" element={<Search />} />
13+ <Route path="/:lookup/:limit/:page" element={<Search />} />
14+ </Routes>
4315 );
4416}
17+
18+export function App() {
19+ return (
20+ <QueryClientProvider client={queryClient}>
21+ <BrowserRouter basename='/apps/seek'>
22+ <Main />
23+ </BrowserRouter>
24+ </QueryClientProvider>
25+ )
26+}
ui/src/components/AppTile.tsxdeleted−29
@@ -1,29 +0,0 @@
1−import { Charge } from '@urbit/api';
2−import React, { useState } from 'react';
3−
4−function normalizeUrbitColor(color: string): string {
5− if (color.startsWith('#')) {
6− return color;
7− }
8− return `#${color.slice(2).replace('.', '').toUpperCase()}`;
9−}
10−
11−export const AppTile = ({ image, color }: Charge) => {
12− const [imageError, setImageError] = useState(false);
13−
14− return (
15− <div
16− className="flex-none relative w-12 h-12 mr-3 rounded-lg bg-gray-200 overflow-hidden"
17− style={{ backgroundColor: normalizeUrbitColor(color) }}
18− >
19− {image && !imageError && (
20− <img
21− className="absolute top-0 left-0 h-full w-full object-cover"
22− src={image}
23− alt=""
24− onError={() => setImageError(true)}
25− />
26− )}
27− </div>
28− );
29−};
ui/src/components/Paginator.tsxnew file+129
@@ -0,0 +1,129 @@
1+import { ArrowNarrowLeftIcon, ArrowNarrowRightIcon, DotsHorizontalIcon } from '@heroicons/react/solid';
2+import cn from 'classnames';
3+import React from 'react';
4+import { Link } from 'react-router-dom';
5+
6+interface PaginatorProps {
7+ linkBuilder: (page: number | null) => string | null;
8+ currentPage: number;
9+ pages: number;
10+ showNextPrev?: boolean;
11+ pagesShownLimit?: number;
12+ className?: string;
13+}
14+
15+interface Page {
16+ number: number;
17+ active?: boolean;
18+ ellipsis?: boolean;
19+}
20+
21+function calculateShownPages(currentPage: number, pages: number, pagesShownLimit: number): Page[] {
22+ const first = 1;
23+ const last = pages;
24+ const gap = Math.floor(pagesShownLimit / 2);
25+ const start = Math.max(1, Math.min(pages - pagesShownLimit, currentPage - gap));
26+ const end = Math.min(last, Math.max(first + pagesShownLimit, currentPage + gap));
27+ const firstEllipsis = (currentPage - first) > gap + 1 && start !== first;
28+ const lastEllipsis = (last - currentPage) > gap + 1 && end !== last;
29+
30+ const pageSet: Page[] = [];
31+
32+ if (start !== first) {
33+ pageSet.push({
34+ number: first,
35+ active: currentPage === first
36+ });
37+ }
38+
39+ if (firstEllipsis) {
40+ pageSet.push({
41+ number: 0,
42+ ellipsis: true,
43+ active: false
44+ });
45+ }
46+
47+ for (let number=start; number<=end; number++) {
48+ pageSet.push({ number, active: currentPage === number });
49+ }
50+
51+ if (lastEllipsis) {
52+ pageSet.push({
53+ number: 0,
54+ ellipsis: true,
55+ active: false
56+ });
57+ }
58+
59+ if (last !== end) {
60+ pageSet.push({
61+ number: last,
62+ active: currentPage === last
63+ })
64+ }
65+
66+ return pageSet;
67+}
68+
69+export const Paginator = ({ className, linkBuilder, currentPage, pages, showNextPrev = false, pagesShownLimit = 3 }: PaginatorProps) => {
70+ const normCurrent = currentPage + 1; //shift for 0 based indexing
71+ if (pages <= 1)
72+ return null;
73+
74+ const pageSet = calculateShownPages(normCurrent, pages, pagesShownLimit);
75+ const prevUrl = linkBuilder(currentPage - 1 >= 0 ? normCurrent - 1 : null);
76+ const nextUrl = linkBuilder(currentPage + 1 <= pages - 1 ? normCurrent + 1 : null);
77+
78+ return (
79+ <>
80+ {showNextPrev && (
81+ <div className="-mt-px w-0 flex-1 flex">
82+ {!prevUrl && (
83+ <span className='border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-300'>
84+ <ArrowNarrowLeftIcon className="mr-3 h-5 w-5" />
85+ Previous
86+ </span>
87+ )}
88+ {prevUrl && <Link to={prevUrl} className="border-t-2 border-transparent pt-2 pr-1 inline-flex items-center text-sm font-medium text-zinc-500 hover:text-zinc-700 hover:border-zinc-300">
89+ <ArrowNarrowLeftIcon className="mr-3 h-5 w-5 text-zinc-400" />
90+ Previous
91+ </Link>}
92+ </div>
93+ )}
94+ {pageSet.map((page, index) => {
95+ if (page.ellipsis)
96+ return <span key={index} className="border-transparent text-zinc-500 border-t-2 pt-2 px-4 inline-flex items-center text-sm font-medium"><DotsHorizontalIcon className='w-3 h-3' /></span>
97+
98+ return (
99+ <Link
100+ key={index}
101+ to={linkBuilder(page.number) || ''}
102+ className={cn(
103+ 'border-t-2 pt-2 px-4 inline-flex items-center text-sm font-medium',
104+ page.active && 'border-lavender/80 text-lavender',
105+ !page.active && 'border-transparent text-zinc-500 hover:text-zinc-700 hover:border-zinc-300'
106+ )}
107+ aria-current={page.active ? 'page' : undefined}
108+ >
109+ {page.number}
110+ </Link>
111+ )
112+ })}
113+ {showNextPrev && (
114+ <div className="-mt-px w-0 flex-1 flex justify-end">
115+ {!nextUrl && (
116+ <span className='border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-300'>
117+ Next
118+ <ArrowNarrowRightIcon className="ml-3 h-5 w-5" />
119+ </span>
120+ )}
121+ {nextUrl && <Link to={nextUrl} className="border-t-2 border-transparent pt-2 pl-1 inline-flex items-center text-sm font-medium text-zinc-500 hover:text-zinc-700 hover:border-zinc-300">
122+ Next
123+ <ArrowNarrowRightIcon className="ml-3 h-5 w-5 text-zinc-400" />
124+ </Link>}
125+ </div>
126+ )}
127+ </>
128+ );
129+};
ui/src/components/SearchInput.tsxnew file+29
@@ -0,0 +1,29 @@
1+import { SearchIcon } from '@heroicons/react/solid';
2+import cn from 'classnames';
3+import React, { ChangeEvent, useCallback } from 'react';
4+
5+interface SearchInputProps {
6+ lookup: string;
7+ className?: string;
8+ onChange: (value: string) => void;
9+}
10+
11+export const SearchInput = ({ lookup, className, onChange }: SearchInputProps) => {
12+ const onInput = useCallback((event: ChangeEvent<HTMLInputElement>) => {
13+ const { value } = event.target;
14+ onChange(value);
15+ }, [onChange]);
16+
17+ return (
18+ <div className='relative flex items-center'>
19+ <SearchIcon className='flip absolute left-2 h-5 w-5' />
20+ <input
21+ type='text'
22+ value={lookup}
23+ onChange={onInput}
24+ placeholder="Search"
25+ className={cn('w-full py-1 pl-9 pr-2 bg-fawn/30 focus:outline-none focus:ring-2 ring-lavender rounded-lg', className)}
26+ />
27+ </div>
28+ )
29+}
ui/src/components/SearchList.tsxnew file+37
@@ -0,0 +1,37 @@
1+import cn from 'classnames';
2+import React from 'react';
3+import { Listing } from '../types/seek';
4+
5+interface SearchListProps {
6+ listings: Listing[];
7+ className?: string;
8+}
9+
10+export const SearchList = ({ listings, className }: SearchListProps) => {
11+ return (
12+ <ul className={cn('px-2 space-y-6', className)}>
13+ {listings && listings.map(l => (
14+ <li key={l.hash}>
15+ <article className='group relative flex w-full'>
16+ {l.post.image ? (
17+ <img src={l.post.image} className="absolute -left-28 w-24 h-24 object-cover" />
18+ ) : <div className='absolute -left-28 w-24 h-24' />}
19+ <div className='flex-1'>
20+ <a className='block w-full mb-2 hover:text-rosy transition-colors' href={l.post.link}>
21+ <h2 className='block font-semibold text-lg leading-none mb-1'>{l.post.title}</h2>
22+ <span className='block font-mono text-xs'>{l.post.link.replace('web+urbitgraph://', '')}</span>
23+ </a>
24+ <p className='mb-2 text-sm'>{l.post.description}</p>
25+ <div className='flex font-mono text-xs text-zinc-500 space-x-3 opacity-0 group-hover:opacity-100 transition-opacity'>
26+ <span><span className='font-semibold font-sans'>by:</span> {l.source}</span>
27+ <time dateTime={(new Date(l.time)).toISOString()}>
28+ {(new Date(l.time)).toLocaleString()}
29+ </time>
30+ </div>
31+ </div>
32+ </article>
33+ </li>
34+ ))}
35+ </ul>
36+ )
37+}
ui/src/index.css+5−1
@@ -1,3 +1,7 @@
11@tailwind base;
22@tailwind components;
3−@tailwind utilities;
3+@tailwind utilities;
4+
5+.flip {
6+ transform: rotateY(180deg);
7+}
ui/src/pages/Search.tsxnew file+90
@@ -0,0 +1,90 @@
1+import cn from 'classnames';
2+import React, { useCallback, useRef, useState } from 'react';
3+import debounce from 'lodash.debounce';
4+import { SearchInput } from '../components/SearchInput';
5+import { SearchList } from '../components/SearchList';
6+import { useQuery } from 'react-query';
7+import { Search as SearchType } from '../types/seek';
8+import api from '../api';
9+import { useNavigate, useParams } from 'react-router-dom';
10+import { Paginator } from '../components/Paginator';
11+import { stringToTa } from '@urbit/api';
12+
13+interface RouteParams extends Record<string, string | undefined> {
14+ lookup?: string;
15+ limit?: string;
16+ page?: string;
17+}
18+
19+function encodeLookup(value: string | undefined) {
20+ if (!value) {
21+ return '';
22+ }
23+
24+ return stringToTa(value).replace('~.', '~~');
25+}
26+
27+export const Search = () => {
28+ const navigate = useNavigate();
29+ const {
30+ lookup,
31+ limit,
32+ page
33+ } = useParams<RouteParams>();
34+ const [rawSearch, setRawSearch] = useState(lookup || '');
35+ const size = parseInt(limit || '10', 10);
36+ const pageInt = parseInt(page || '1', 10) - 1;
37+ const start = pageInt * size;
38+ const { data } = useQuery<unknown, unknown, SearchType>(`lookup-${lookup}-${size}-${start}`, () => api.scry<SearchType>({
39+ app: 'seek',
40+ path: `/lookup/${encodeLookup(lookup)}/${start}/${size}`
41+ }), {
42+ enabled: !!lookup,
43+ keepPreviousData: true
44+ });
45+
46+ const total = data?.total || 0;
47+ const pages =
48+ total % size === 0
49+ ? total / size
50+ : Math.floor(total / size) + 1;
51+
52+ const update = useRef(debounce((value: string) => {
53+ if (!value) {
54+ navigate('/');
55+ return;
56+ }
57+
58+ navigate(`/${value}/${size}/${page || '1'}`)
59+ }, 200))
60+
61+ const onChange = useCallback((value: string) => {
62+ setRawSearch(value);
63+ update.current(value);
64+ }, []);
65+
66+ const linkBuild = useCallback((page) => {
67+ if (!page) {
68+ return null;
69+ }
70+
71+ return `/${lookup}/${size}/${page || 1}`
72+ }, [lookup, size]);
73+
74+ return (
75+ <main className={cn("flex flex-col items-center min-h-screen", !data && 'justify-center')}>
76+ <div className="max-w-xl w-full p-4 sm:py-12 px-8 space-y-6">
77+ <header>
78+ <SearchInput lookup={rawSearch} onChange={onChange} />
79+ </header>
80+ {data && <div className='flex justify-end border-t border-zinc-300'>
81+ <Paginator pages={pages} currentPage={pageInt} linkBuilder={linkBuild} />
82+ </div>}
83+ <SearchList listings={data?.listings || []} />
84+ {data && pages > 1 && <div className='flex justify-end border-t border-zinc-300'>
85+ <Paginator pages={pages} currentPage={pageInt} linkBuilder={linkBuild} />
86+ </div>}
87+ </div>
88+ </main>
89+ )
90+}
ui/src/types/seek.tsnew file+23
@@ -0,0 +1,23 @@
1+export interface Post {
2+ title: string;
3+ type: 'app' | 'group' | 'content' | 'other';
4+ description: string;
5+ image: string;
6+ tags: string[];
7+ link: string;
8+}
9+
10+export interface Listing {
11+ post: Post;
12+ hash: string;
13+ source: string;
14+ time: number;
15+}
16+
17+export type Search = {
18+ listings: Listing[];
19+ start: number;
20+ limit: number;
21+ size: number;
22+ total: number;
23+}
ui/tailwind.config.js+10−7
@@ -1,13 +1,16 @@
11module.exports = {
2− mode: 'jit',
3− purge: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
4− darkMode: 'media', // or 'media' or 'class'
2+ content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
53 theme: {
6− extend: {}
4+ extend: {
5+ colors: {
6+ linen: '#FAEDE3',
7+ fawn: '#E7AB79',
8+ rosy: '#B25068',
9+ lavender: '#774360',
10+ mauve: '#4C3A51'
11+ }
12+ }
713 },
814 screens: {},
9− variants: {
10− extend: {}
11− },
1215 plugins: []
1316};