@malloy-publisher/server 0.0.82 → 0.0.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  import { BaseConnection } from "@malloydata/malloy/connection";
2
+ import { Mutex } from "async-mutex";
2
3
  import * as fs from "fs/promises";
3
4
  import * as path from "path";
4
5
  import { components } from "../api";
@@ -12,6 +13,7 @@ type ApiProject = components["schemas"]["Project"];
12
13
 
13
14
  export class Project {
14
15
  private packages: Map<string, Package> = new Map();
16
+ private packageMutexes = new Map<string, Mutex>();
15
17
  private malloyConnections: Map<string, BaseConnection>;
16
18
  private apiConnections: ApiConnection[];
17
19
  private internalConnections: InternalConnection[];
@@ -129,14 +131,15 @@ export class Project {
129
131
  .filter((file) => file.isDirectory())
130
132
  .map(async (directory) => {
131
133
  try {
132
- const _package = await this.getPackage(
133
- directory.name,
134
- false,
134
+ return (
135
+ await this.getPackage(directory.name, false)
136
+ ).getPackageMetadata();
137
+ } catch (error) {
138
+ console.log(
139
+ `Failed to load package: ${directory.name} due to : ${error}`,
135
140
  );
136
- const metadata = _package.getPackageMetadata();
137
- return metadata;
138
- } catch {
139
141
  // Directory did not contain a valid package.json file -- therefore, it's not a package.
142
+ // Or it timed out
140
143
  return undefined;
141
144
  }
142
145
  }),
@@ -155,21 +158,33 @@ export class Project {
155
158
  packageName: string,
156
159
  reload: boolean,
157
160
  ): Promise<Package> {
158
- let _package = this.packages.get(packageName);
159
- if (_package === undefined || reload) {
161
+ // We need to acquire the mutex to prevent a thundering herd of requests from creating the
162
+ // package multiple times.
163
+ let packageMutex = this.packageMutexes.get(packageName);
164
+ if (!packageMutex) {
165
+ packageMutex = new Mutex();
166
+ this.packageMutexes.set(packageName, packageMutex);
167
+ }
168
+
169
+ return await packageMutex.runExclusive(async () => {
170
+ const _package = this.packages.get(packageName);
171
+ if (_package !== undefined && !reload) {
172
+ return _package;
173
+ }
174
+
160
175
  try {
161
- _package = await Package.create(
176
+ const _package = await Package.create(
162
177
  this.projectName,
163
178
  packageName,
164
179
  path.join(this.projectPath, packageName),
165
180
  this.malloyConnections,
166
181
  );
167
182
  this.packages.set(packageName, _package);
183
+ return _package;
168
184
  } catch (error) {
169
185
  this.packages.delete(packageName);
170
186
  throw error;
171
187
  }
172
- }
173
- return _package;
188
+ });
174
189
  }
175
190
  }
@@ -1 +0,0 @@
1
- @layer priority1,priority2,priority3,priority4,priority5,priority6;@layer priority1{:root,.mly16bcggl{--mly1rtpqm4:rgba(10, 19, 23, .2);--mlywmj25p:rgba(121, 82, 255, .2);--mly1f95ebd:rgba(36, 187, 94, .2);--mly1jva6ta:rgba(3, 167, 215, .2);--mly1yr7ch6:rgba(241, 244, 247, 1);--mly1bs2mf7:rgba(0, 130, 251, .2);--mlywj8cgu:rgba(11, 153, 31, .2);--mlyhsum04:rgba(226, 164, 0, .2);--mly19gk0g3:rgba(227, 25, 59, .2);--mlyrbis2b:rgba(204, 211, 219, 1);--mly1eayp21:rgba(230, 235, 239, 1);--mly1bn1nfc:rgba(37, 54, 63, 1)}:root,.mly182du4u{--mly231nev:rgba(10, 19, 23, 1);--mly1i3blw4:rgba(78, 96, 111, 1);--mly16ir2n5:rgba(164, 176, 188, 1);--mly883cce:rgba(0, 100, 224, 1);--mlyy3jzoq:rgba(255, 255, 255, 1);--mly7qnfvx:rgba(10, 19, 23, 1);--mly3ib3qi:rgba(62, 6, 151, 1);--mlyndhcph:rgba(9, 68, 31, 1);--mlykotp7t:rgba(1, 73, 117, 1);--mlyf25c1a:rgba(66, 133, 244, 1)}:root,.mlyacbved{--mly8s4nhd:rgba(10, 19, 23, 1);--mly130oqjo:rgba(78, 96, 111, 1);--mlywh4rgx:rgba(164, 176, 188, 1);--mly1gq6bli:rgba(255, 255, 255, 1);--mly1jphivy:rgba(164, 176, 188, 1);--mly6i1qgk:rgba(121, 82, 255, 1);--mly1css67u:rgba(7, 109, 41, 1);--mly1fea1fg:rgba(2, 141, 193, 1);--mlyz9tc12:rgba(233, 175, 8, 1);--mly1dryxz7:rgba(0, 100, 224, 1);--mly176ansx:rgba(13, 134, 38, 1);--mlybq1dnb:rgba(227, 25, 59, 1)}:root,.mlyugude9{--mlyiz2tia:#0064E0;--mly1nffz32:#0082FB32;--mly1mq821i:white;--mlyz6dflh:rgba(0, 0, 0, .1);--mly4a29vv:#0000000D;--mlyhoywqa:#050505;--mly1qcfjts:#A4B0BC}:root,.mly18uf1kx{--mlynfhokh:none}:root,.mly11fl7i8{--mlyvpnzvp:none}.mly10cf5cp{--mly10mhzaa:var(--mly1f95ebd)}.mlykvi9ht{--mly10mhzaa:var(--mly1jva6ta)}.mly1rve117{--mly10mhzaa:var(--mly1rtpqm4)}.mlyihc5ie{--mly10mhzaa:var(--mlywmj25p)}.mly8bgh0r{--mly13n7235:var(--mly231nev)}.mly1r5zvhd{--mly13n7235:var(--mly3ib3qi)}.mlys5r2en{--mly13n7235:var(--mlykotp7t)}.mly1u6t2w6{--mly13n7235:var(--mlyndhcph)}.mlynu5hmx{--mly1by112x:0}.mly15rdse5{--mly1hmjrsb:var(--mly8s4nhd)}.mly5xbp4t{--mly1hpdckv:var(--mly231nev)}.mly3mt86g{--mly1hpdckv:var(--mlyy3jzoq)}.mly5deeek{--mly1ltarg1:var(--mly231nev)}.mlybcavtu{--mly1ojyoay:var(--mly231nev)}.mlywis56f{--mly1ojyoay:var(--mly3ib3qi)}.mly1eg6ybj{--mly1ojyoay:var(--mlykotp7t)}.mlyy280wj{--mly1ojyoay:var(--mlyndhcph)}.mly7ouyw2{--mly5m5edj:var(--mly1i3blw4)}.mlym9y5t7{--mlynfhokh:block}.mly28fmrt{--mlynfhokh:none}.mly1bo1i26{--mlyri8z08:0}.mly11ogjb6{--mlyvpnzvp:none}.mlyf8wvcd{--mlyvygx4q:var(--mly1css67u)}.mlyrtwgpv{--mlyvygx4q:var(--mly1fea1fg)}.mly1f8soc4{--mlyvygx4q:var(--mly6i1qgk)}.mly1izbou4{--mlyvygx4q:var(--mly8s4nhd)}.mly1n5rdk7{--mlyxo3nik:var(--mly1gq6bli)}.mlypfd894{--mlyxo3nik:var(--mly8s4nhd)}@keyframes mlyqng64z-B{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mly1z060rf:is([data-disabled]){--mly1hmjrsb:var(--mlywh4rgx)}.mly1jacekv:is([data-disabled]){--mly1ltarg1:var(--mly16ir2n5)}.mly7h4d18:is([data-disabled]){--mly5m5edj:var(--mly16ir2n5)}.mly1iu3zmn:disabled{--mly1hpdckv:var(--mly1i3blw4)}.mly13vk70h:disabled{--mly1hpdckv:var(--mlyy3jzoq)}.mly1dsjhx:disabled{--mlyxo3nik:var(--mly1gq6bli)}.mlyiv1q3g:disabled{--mlyxo3nik:var(--mlywh4rgx)}.mly1u5txqc:hover{--mly1by112x:.3}.mly1x0xcia:hover{--mlynfhokh:block}.mly1fzkygm:hover{--mlyri8z08:.3}.mly157rht3:hover{--mlyvpnzvp:inline-flex}}@layer priority2{.mly1o4sr5b{background:#0a1317}.mly3j5mvw{background:#d0d3d7}.mlyo6guvx,.mly17eh757{background:#fff}.mly5uxqc1{background:#0000}.mlyhcrij8{background:#0064e0}.mly1xnbgy5{background:#ccd3db}.mlygqa5hp{background:#e6ebef}.mlyzy8d55{background:#ffffff80}.mlyotlr4g{background:#fff}.mly1md70p1{background:transparent}.mlysu8s4a{background:var(--mly10mhzaa)}.mly1np9qvj{background:var(--mly1eayp21)}.mly1b4wx6v{background:var(--mly1mq821i)}.mly16o7sp0{background:var(--mly1nffz32)}.mlyzkdzjc{border:1px solid #CCD3DB}.mly2yh2zd{border:1px solid #e0e0e0}.mly8fuzfi{border:1px solid #efefef}.mly1dc9p4k{border:1px solid red}.mly27xtdb{border:1px solid rgb(239,239,239)}.mly520xni{border:1px solid rgba(204,211,219,1)}.mlyvckdp7{border:1px solid rgba(230,235,239,1)}.mlyfj9a5l{border:1px solid transparent}.mly1vspu6z{border:1px solid var(--malloy-composer-form-background,#efefef)}.mlyss3vti{border:1px solid var(--malloy-composer-form-border,#ececed)}.mlyv3vvaf{border:1px solid var(--malloy-composer-form-focus,#4285f4)}.mly15q0wj1{border:1px solid var(--malloy-composer-menu-border,#ececed)}.mly1gs6z28{border:none}.mly15r89dc{grid-area:1 / 1}.mly1ghz6dp{margin:0}.mlynfbntj{margin:5px 0}.mly16zck5j{margin:5px}.mlykib98w{margin:8px}.mly1bpp3o7{margin:auto}.mlywp4ipm{padding:0 24px 24px}.mlyehqz9p{padding:0 4px}.mly1l4tkcb{padding:0 8px 8px}.mly1717udv{padding:0}.mly1b4vry6{padding:10px 0}.mlyc7ga6q{padding:12px}.mly1tamke2{padding:16px}.mly1e41zw8{padding:1px 5px}.mlyfvt8nb{padding:2px 12px 2px 6px}.mlybsehbd{padding:2px 3px}.mlyxzb6uj{padding:2px 4px}.mly195ery5{padding:3.75px 7px}.mly1gqu590{padding:3px 10px}.mly34lxi1{padding:3px 3px 3px 10px}.mly92jh8x{padding:4px 0 8px}.mlyztvwtv{padding:4px 0}.mly1fut7tt{padding:4px 12px 12px}.mlytdwleo{padding:4px 12px}.mly9cpjcd,.mlydqdrvq{padding:4px 8px}.mlyfawy5m{padding:4px}.mly17qkr04{padding:5px 0}.mly36usyh{padding:5px 10px}.mly14odnwx{padding:5px}.mly153ncpu{padding:8px 12px}.mlye8ttls{padding:8px}.mly1bw6wve:is([data-highlighted]){background:#0000000d}.mlyamyxth:is([data-state=checked]){background:#0082fb33}.mlyejs3c0:is([data-highlighted]):is([data-state=checked]){background:#0082fb4d}.mly14hn1a8:hover{background:#0000000d}.mly1uceoyp:hover{background:#dde2e8}.mly1vdl2d1:hover{background:#0457cb}.mlywghvya:active{background:#0000001a}.mly1u4cpcs:active{background:#004cbc}.mly1cncicd:active{background:#ccd3db}}@layer priority3{.mly1akygb0{border-color:none}.mly1y5yj0f{border-color:#0064e0}.mly10bk7bj{border-color:var(--malloy-composer-focus,#c3d7f7)}.mly17v018m{border-color:var(--mlyrbis2b)}.mly11zuszs{border-radius:0 0 10px 10px}.mly19ctu66{border-radius:0 4px 4px 0}.mlyq516e8{border-radius:10px 10px 0 0}.mly1q4ynmn{border-radius:10px}.mly4pepcl{border-radius:12px}.mly18zih8k{border-radius:3px}.mlytah5vv{border-radius:4px 0 0 4px}.mly12oqio5{border-radius:4px}.mly1f96onm{border-radius:50px}.mly1sxf85j{border-radius:5px}.mly1kogg8i{border-radius:6px}.mlyur7f20{border-radius:8px}.mly10hpsqq{border-radius:9999px}.mly1pjcqnp{border-radius:inherit}.mlyfuqftd{border-right:1px solid #C8CCD2}.mly1roky18{border-right:1px solid rgba(204,211,219,1)}.mlyng3xce{border-style:none}.mly1y0btm7{border-style:solid}.mly77krkw{border-top:1px solid var(--malloy-composer-form-border,#ececec)}.mlyc342km{border-width:0}.mlymkeg23{border-width:1px}.mly3psx0u{flex:0 0 auto}.mly98rzlu{flex:1}.mly883omv{gap:10px}.mlyou54vl{gap:16px}.mly12mrbbr{gap:1px}.mly1665zp3{gap:24px}.mly195vfkc{gap:2px}.mly1ed6fcf{gap:3px}.mly1jnr06f{gap:4px}.mly1nejdyq{gap:5px}.mly167g77z{gap:8px}.mly1a2a7pz{outline:none}.mlyysyzu8{overflow:auto}.mlyb3r6kr{overflow:hidden}.mly1rea2x4{overflow:visible}.mly1ku5rj1{place-items:center}.mly1hl2dhg{text-decoration:none}.mly14znju7{transition:opacity .5s ease}.mly1fxp9ov:hover{border-color:var(--malloy-composer-focus,#c3d7f7)}.mlyetl2wx:focus{border-color:#4285f4}}@layer priority4{.mly1ua5tub{-webkit-box-orient:vertical}.mly1gzmk7r{-webkit-line-clamp:3}.mly6s0dn4{align-items:center}.mlypqajaz{align-items:end}.mly1cy8zhl{align-items:flex-start}.mly7a106z{align-items:start}.mly7v9bd0{animation-duration:.75s}.mlya4qsjk{animation-iteration-count:infinite}.mly8jsasv{animation-name:mlyqng64z-B}.mly1esw782{animation-timing-function:linear}.mlylp1x4z{backface-visibility:hidden}.mlygmb8sa{background-color:#e6ebef}.mly83z2og{background-color:#fff}.mly1vzefiq{background-color:#f0f6ff}.mlyy9rfsq{background-color:#e6ebef}.mly10cdfl8{background-color:#f1f4f7}.mly1gzqxud{background-color:#fff}.mly1jmk7v{background-color:#25363f}.mlyjbqb8w{background-color:transparent}.mly1jjku57{background-color:var(--malloy-composer-form-disabledBackground,#f6f6f6)}.mly6wxqrg{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mly12azwz9{background-color:var(--malloy-composer-menu-background,white)}.mlyrkwa2d{background-color:var(--mly19gk0g3)}.mly1pnbjq1{background-color:var(--mly1bs2mf7)}.mly12nb83b{background-color:var(--mly1yr7ch6)}.mly1x7w6om{background-color:var(--mlyhsum04)}.mly1x3oq6j{background-color:var(--mlywj8cgu)}.mly12peec7{background-color:#fff}.mly1mwwwfo{border-collapse:collapse}.mlygbc89k{box-shadow:0 0 0 1px #ccd3db}html:not([dir=rtl]) .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}html[dir=rtl] .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}.mlybwr872{box-shadow:0 0 0 2px #0064e0}html:not([dir=rtl]) .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html[dir=rtl] .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html:not([dir=rtl]) .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}html[dir=rtl] .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}.mly1a3rnpv{box-shadow:0 1px 5px 1px #0000001a}html:not([dir=rtl]) .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}html[dir=rtl] .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}.mlyx2l43u{box-shadow:0 2px 12px 0 var(--mlyz6dflh)}.mly1gnnqk1{box-shadow:none}.mlyg48p7p{box-shadow:#0171e34d 0 0 0 3px inset}.mly9f619{box-sizing:border-box}.mlyayvuls{color:#000}.mly1aejobo{color:#0064e0}.mly1v5ugh9{color:#505050}.mly358b0h{color:#909090}.mly1e2nbdu{color:red}.mly198oq2i{color:#3e9efb!important}.mlyizdh9v{color:#5f6368}.mlykfrnou{color:#0064e0}.mlyj5j7qc{color:#647685}.mly1rs82da{color:#dde2e8}.mly183j0n7{color:#e4e6eb}.mly1dhlylr{color:#050505}.mly19co3pv{color:transparent}.mly1pc1dlx{color:var(--malloy-composer-form-foreground,#5f6368)}.mly1r0d382{color:var(--mly130oqjo)}.mly1xre2ib{color:var(--mly13n7235)}.mlywzxoxx{color:var(--mly16ir2n5)}.mly1l99qkd{color:var(--mly176ansx)}.mly1evcnq1{color:var(--mly1css67u)}.mly1tw9ct1{color:var(--mly1dryxz7)}.mly1h091fy{color:var(--mly1fea1fg)}.mly1kiansi{color:var(--mly1gq6bli)}.mly1mguc6l{color:var(--mly1hmjrsb)}.mlyaerthn{color:var(--mly1hpdckv)}.mly9dwj6z{color:var(--mly1i3blw4)}.mlyann5r3{color:var(--mly1jphivy)}.mly12lmysb{color:var(--mly1ltarg1)}.mly1ard1hs{color:var(--mly1ojyoay)}.mly1jwwhvr{color:var(--mly1qcfjts)}.mly1ue28sr{color:var(--mly231nev)}.mlyydnxy5{color:var(--mly3ib3qi)}.mly15jt5ur{color:var(--mly5m5edj)}.mly1ywypuw{color:var(--mly6i1qgk)}.mly1p68tcb{color:var(--mly8s4nhd)}.mly109d434{color:var(--mlybq1dnb)}.mly1nwq7qm{color:var(--mlyf25c1a)}.mly1q8pm5h{color:var(--mlyhoywqa)}.mlywn9h7t{color:var(--mlyvygx4q)}.mly16un6j3{color:var(--mlywh4rgx)}.mlyuk6yi3{color:var(--mlyxo3nik)}.mly7neac5{color:var(--mlyz9tc12)}.mlyt0e3qv{cursor:default}.mly7eptgl{cursor:ew-resize}.mly1ipiool{cursor:initial}.mly1ypdohk{cursor:pointer}.mly104kibb{display:-webkit-box}.mly1lliihq{display:block}.mly78zum5{display:flex}.mlyrvj5dj{display:grid}.mly1rg5ohu{display:inline-block}.mly3nfvp2{display:inline-flex}.mlywz0xwf{display:inline-grid}.mly1s85apg{display:none}.mly1vsucm1{display:var(--mlynfhokh)}.mly2b4tyj{display:var(--mlyvpnzvp)}.mlydt5ytf{flex-direction:column}.mly1q0g3np{flex-direction:row}.mly1iyjqo2{flex-grow:1}.mly2lah0s{flex-shrink:0}.mly1a02dak{flex-wrap:wrap}.mly6icuqf{font-family:sans-serif}.mly1rj5sg5{font-family:SF Pro Text,-apple-system,system-ui,sans-serif}.mly12xrqmb{font-family:var(--malloy-composer-fontFamily,sans-serif)}.mlyfifm61{font-size:12px}.mlyif65rj{font-size:14px}.mly1j61zf2{font-size:16px}.mlymhiqyu{font-size:var(--malloy-composer-fontSize,14px)}.mly64z8l9{font-size:var(--malloy-composer-menu-fontSize,14px)}.mly1j61x8r{font-style:normal}.mlyo1l8bm{font-weight:400}.mly1s688f{font-weight:600}.mly1xlr1w8,.mly117nqv4{font-weight:700}.mly1fcty0u{font-weight:400}.mly1mt1orb{grid-auto-flow:column}.mly15396mt{grid-template-columns:100px auto 100px}.mly52fmzj{grid-template-columns:1fr auto}.mly1g3yg12{grid-template-columns:auto 1fr auto}.mlybyjr8{grid-template-columns:auto}.mly17bnpya{grid-template-columns:min-content 1fr}.mlyl56j7k{justify-content:center}.mly13a6bvl{justify-content:flex-end}.mly1nhvcw1{justify-content:flex-start}.mly1rfj78v{justify-content:left}.mly1lvf691{justify-content:right}.mly1l1ennw{justify-content:space-around}.mly1qughib{justify-content:space-between}.mlylqzeqv{justify-content:start}.mly11e9jwx{leading-trim:both}.mly1gu5id8{letter-spacing:-.24px}.mly12oo3zp{letter-spacing:0}.mly1d3mw78{line-height:16px}.mly1fc57z9{line-height:20px}.mly1o2sk6j{line-height:24px}.mly1vqud6w{opacity:70%}.mly1d3ksz1{opacity:var(--mly1by112x)}.mly15sj6ns{opacity:var(--mlyri8z08)}.mly47corl{pointer-events:none}.mly10l6tqk{position:absolute}.mlyixxii4{position:fixed}.mly1n2onr6{position:relative}.mly2b8uid{text-align:center}.mlydpxx8g{text-align:left}.mly1vqy1sf{text-edge:cap}.mlylyipyv{text-overflow:ellipsis}.mly6mezaz{text-transform:none}.mly87ps6o{user-select:none}.mlyxymvpz{vertical-align:middle}.mly1n8ftqi{vertical-align:text-top}.mly16dsc37{vertical-align:top}.mlylshs6z{visibility:hidden}.mlynpuxes{visibility:visible}.mlyuxw1ft{white-space:nowrap}.mly126k92a{white-space:pre-wrap}.mly1so62im{will-change:transform}.mly1vvkbs{word-wrap:break-word}.mly35i7{writing-mode:sideways-lr}.mly1ja2u2z{z-index:0}.mly1vjfegm{z-index:1}.mly11uqc5h{z-index:100}.mlyhtitgo{z-index:2}.mly14vaotu:is([data-state=active]){background-color:var(--mly1bs2mf7)}.mlyqweix6:is([data-disabled]){color:var(--mly1qcfjts)}.mlyb0tsu4:is([data-state=active]){color:var(--mly883cce)}.mly5ezrf1:is([data-disabled]){cursor:not-allowed}.mly1uifvsu:is([data-state=active]){font-weight:700}.mly1s07b3s:disabled{cursor:not-allowed}.mly1haqvef:hover{background-color:#dde2e8}.mlyjg9ulk:hover{background-color:#efefef}.mlyt89l8w:hover{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mlyk1j4u7:hover{background-color:var(--mly4a29vv)}.mlyk1e6ed:hover{box-shadow:#ccd3db4d 0 0 0 3px inset}.mlytw1abo:focus{background-color:#fff}}@layer priority5{.mly1ey2m1c{bottom:0}.mlyqtp20y{height:0}.mly5yr21d{height:100%}.mlypyat2d{height:100px}.mlyn866dk{height:136px}.mly1v9usgg{height:14px}.mlywrnneb{height:16.5px}.mlylup9mm{height:16px}.mlymix8c7{height:18px}.mlyjm9jq1{height:1px}.mly1m3v4wt{height:200px}.mlyk2yuxw{height:209.5px}.mly1qx5ct2{height:20px}.mlyxk0z11{height:24px}.mlyd7y6wv{height:26px}.mly1fgtraw{height:28px}.mlyc9qbxq{height:36px}.mlyng8ra{height:60px}.mlydk7pt{height:8px}.mlylo07zb{height:90px}.mlyt7dq6l{height:auto}.mly1ktj5wk{height:calc(100% - 8px)}.mlyu96u03{left:0}.mly12nagc{margin-bottom:4px}.mlyu06os2{margin-bottom:5px}.mly1e56ztr{margin-bottom:8px}.mlyj3b58b{margin-left:0}.mly1tpqehw{margin-left:12px}.mlyq1n1xh{margin-left:16px}.mly1iog12x{margin-left:4px}.mlyet2fuk{margin-left:8px}.mly1yf7rl7{margin-right:0}.mly1xmf6yo{margin-top:8px}.mly1rvw3h8{max-height:136px}.mly1hkcv85{max-height:200px}.mly1xyq3li{max-height:20em}.mlyq3t0pi{max-height:280px}.mlyuyqlj2{max-height:300px}.mly1phlbz0{max-height:400px}.mly3d5gib{max-height:50vh}.mly1kbvuzt{max-height:var(--radix-tooltip-content-available-height)}.mlyqyhut4{max-width:16.5px}.mly1pdpmub{max-width:264px}.mly1jkqq1h{max-width:280px}.mly1dc814f{max-width:350px}.mlyxc7z9f{max-width:360px}.mly1j9u4d2{max-width:400px}.mlymcgfsh{max-width:60px}.mly2lwn1j{min-height:0}.mly4x6u8j{min-width:16.5px}.mlygc0pbm{min-width:1px}.mlyt4ypqs{min-width:20px}.mlyytlacd{min-width:224px}.mlylm99nl{min-width:240px}.mly2ixbly{min-width:250px}.mlyfvyar9{min-width:60px}.mly1onzeue{min-width:95px}.mly1odjw0f{overflow-y:auto}.mly18d9i69{padding-bottom:0}.mly1l90r2v{padding-bottom:16px}.mlyjkvuk6{padding-bottom:4px}.mlywib8y2{padding-bottom:8px}.mlynm25rq{padding-left:16px}.mly6wrskw{padding-left:4px}.mly163pfp{padding-left:8px}.mlymzs88n{padding-right:4px}.mlyy13l1i{padding-right:8px}.mly1nn3v0j{padding-top:2px}.mly1iorvi4{padding-top:4px}.mly123j3cw{padding-top:5px}.mly1y1aw1k{padding-top:8px}.mly1bkpikb{right:-2px}.mly3m8u43{right:0}.mly13vifvy{top:0}.mlynalus7{width:0}.mlyh8yej3{width:100%}.mlynrytzq{width:10em}.mly6jxa94{width:14px}.mly18kybhu{width:15em}.mlyjxf2f8{width:16.5px}.mly1kky2od{width:16px}.mly1xp8n7a{width:18px}.mly1i1rx1s{width:1px}.mlyw4jnvo{width:20px}.mlyvy4d1p{width:24px}.mly1f1nlb9{width:25%}.mlyqyf9gi{width:250px}.mly1hfn5x7{width:260px}.mlygd8bvy{width:28px}.mlybl57os{width:323px}.mlyxsgkw5{width:350px}.mly869kya{width:5.5em}.mly1ftt334{width:5px}.mly1247r65{width:60px}.mly1xc55vz{width:8px}.mlym6i5cn{width:90%}.mly10lvyaf{width:calc(100% - 12px)}.mly1rxuhir{width:calc(100% - 22px)}.mly112rgfc{width:calc(100% - 40)}.mly1g65f5b{width:var(--radix-tooltip-trigger-width)}}@layer priority6{.mly1njml60::placeholder{color:#4e606f}}div[data-radix-popper-content-wrapper]{z-index:100!important}