atom.io 0.34.0 → 0.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,6 +37,9 @@ type stringified<J extends Json.Serializable> = J extends string ? `"${J}"` : J
37
37
  };
38
38
  declare const parseJson: <S extends stringified<Json.Serializable>>(str: S | string) => S extends stringified<infer J> ? J : Json.Serializable;
39
39
  declare const stringifyJson: <J extends Json.Serializable>(json: J) => stringified<J>;
40
+ /**
41
+ * Always serializes to the same string.
42
+ */
40
43
  type Canonical = primitive | ReadonlyArray<Canonical>;
41
44
  type JsonIO = (...params: Json.Serializable[]) => Json.Serializable | void;
42
45
  type JsonInterface<T, J extends Json.Serializable = Json.Serializable> = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>","transform: JsonInterface<T, J>","atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>","str: S | string","json: J","t: T","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>","transform: JsonInterface<T, J>","atomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>","str: S | string","json: J","t: T","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken:\n\t\t| AtomIO.MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, J, K>\n\t\t| AtomIO.RegularAtomFamilyToken<T, K>","transform: JsonInterface<T, J>","str: S | string","json: J","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":["import type { Count, Flat } from \"atom.io/internal\"\n\nexport type Entries<K extends PropertyKey = PropertyKey, V = any> = [K, V][]\n\nexport type KeyOfEntries<E extends Entries> = E extends [infer K, any][]\n\t? K\n\t: never\n\nexport type ValueOfEntry<E extends Entries, K extends KeyOfEntries<E>> = {\n\t[P in Count<E[`length`]>]: E[P] extends [K, infer V] ? V : never\n}[Count<E[`length`]>]\n\nexport type FromEntries<E extends Entries> = Flat<{\n\t[K in KeyOfEntries<E>]: ValueOfEntry<E, K>\n}>\n\nexport function fromEntries<E extends Entries>(entries: E): FromEntries<E> {\n\treturn Object.fromEntries(entries) as FromEntries<E>\n}\n\nexport function toEntries<T extends object>(\n\tobj: T,\n): Entries<keyof T, T[keyof T]> {\n\treturn Object.entries(obj) as Entries<keyof T, T[keyof T]>\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createStandaloneSelector, IMPLICIT } from \"atom.io/internal\"\n\nimport type { Json, JsonInterface } from \".\"\n\nexport const selectJson = <T, J extends Json.Serializable>(\n\tatom: AtomIO.AtomToken<T>,\n\ttransform: JsonInterface<T, J>,\n\tstore: Store = IMPLICIT.STORE,\n): AtomIO.WritablePureSelectorToken<J> => {\n\treturn createStandaloneSelector(store, {\n\t\tkey: `${atom.key}:JSON`,\n\t\tget: ({ get }) => transform.toJson(get(atom)),\n\t\tset: ({ set }, newValue) => {\n\t\t\tset(atom, transform.fromJson(newValue))\n\t\t},\n\t})\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store, Transceiver } from \"atom.io/internal\"\nimport { createWritablePureSelectorFamily } from \"atom.io/internal\"\n\nimport type { Canonical, Json, JsonInterface } from \".\"\n\nexport function selectJsonFamily<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K>\nexport function selectJsonFamily<\n\tT,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K>\nexport function selectJsonFamily<\n\tT,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken:\n\t\t| AtomIO.MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, J, K>\n\t\t| AtomIO.RegularAtomFamilyToken<T, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K> {\n\tconst jsonFamily = createWritablePureSelectorFamily<J, K>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `${atomFamilyToken.key}:JSON`,\n\t\t\tget:\n\t\t\t\t(key) =>\n\t\t\t\t({ get }) => {\n\t\t\t\t\tconst baseState = get(atomFamilyToken, key)\n\t\t\t\t\treturn transform.toJson(baseState)\n\t\t\t\t},\n\t\t\tset:\n\t\t\t\t(key) =>\n\t\t\t\t({ set }, newValue) => {\n\t\t\t\t\tset(atomFamilyToken, key, transform.fromJson(newValue))\n\t\t\t\t},\n\t\t},\n\t\t[`mutable`, `json`],\n\t)\n\treturn jsonFamily\n}\n","export * from \"./entries\"\nexport * from \"./select-json\"\nexport * from \"./select-json-family\"\n\nexport type primitive = boolean | number | string | null\n\nexport namespace Json {\n\texport namespace Tree {\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Array<Element = unknown> = ReadonlyArray<Element>\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Object<K extends string = string, V = unknown> = Record<K, V>\n\t\texport type Fork = Array | Object\n\t\texport type Leaf = primitive\n\t\texport type Node = Fork | Leaf\n\t}\n\n\texport type Serializable =\n\t\t| primitive\n\t\t| Readonly<{ [key: string]: Serializable }>\n\t\t| ReadonlyArray<Serializable>\n\n\texport type Object<\n\t\tKey extends string = string,\n\t\tValue extends Serializable = Serializable,\n\t> = Record<Key, Value>\n\n\texport type Array<Element extends Serializable = Serializable> =\n\t\tReadonlyArray<Element>\n}\n\nexport type stringified<J extends Json.Serializable> = J extends string\n\t? `\"${J}\"`\n\t: J extends number\n\t\t? `${J}`\n\t\t: J extends true\n\t\t\t? `true`\n\t\t\t: J extends false\n\t\t\t\t? `false`\n\t\t\t\t: J extends boolean\n\t\t\t\t\t? `false` | `true`\n\t\t\t\t\t: J extends null\n\t\t\t\t\t\t? `null`\n\t\t\t\t\t\t: string & { __json?: J }\n\nexport const parseJson = <S extends stringified<Json.Serializable>>(\n\tstr: S | string,\n): S extends stringified<infer J> ? J : Json.Serializable => JSON.parse(str)\n\nexport const stringifyJson = <J extends Json.Serializable>(\n\tjson: J,\n): stringified<J> => JSON.stringify(json) as stringified<J>\n\nexport type Canonical = primitive | ReadonlyArray<Canonical>\n\nexport type JsonIO = (...params: Json.Serializable[]) => Json.Serializable | void\n\nexport type JsonInterface<T, J extends Json.Serializable = Json.Serializable> = {\n\ttoJson: (t: T) => J\n\tfromJson: (json: J) => T\n}\n\nconst JSON_PROTOTYPES = [\n\tArray.prototype,\n\tBoolean.prototype,\n\tNumber.prototype,\n\tObject.prototype,\n\tString.prototype,\n] as const\nexport const isJson = (input: unknown): input is Json.Tree.Node => {\n\tif (input === null) return true\n\tif (input === undefined) return false\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn JSON_PROTOTYPES.includes(prototype)\n}\n\nexport const JSON_TYPE_NAMES = [\n\t`array`,\n\t`boolean`,\n\t`null`,\n\t`number`,\n\t`object`,\n\t`string`,\n] as const\n\nexport type JsonTypeName = (typeof JSON_TYPE_NAMES)[number]\n\nexport interface JsonTypes extends Record<JsonTypeName, Json.Serializable> {\n\tarray: Json.Array\n\tboolean: boolean\n\tnull: null\n\tnumber: number\n\tobject: Json.Object\n\tstring: string\n}\n\nexport const JSON_DEFAULTS: JsonTypes = {\n\tarray: [],\n\tboolean: false,\n\tnull: null,\n\tnumber: 0,\n\tobject: {},\n\tstring: ``,\n}\n"],"mappings":";;;AAgBA,SAAgB,YAA+BA,SAA4B;AAC1E,QAAO,OAAO,YAAY,QAAQ;AAClC;AAED,SAAgB,UACfC,KAC+B;AAC/B,QAAO,OAAO,QAAQ,IAAI;AAC1B;;;;AClBD,MAAa,aAAa,CACzBC,MACAC,WACAC,QAAe,SAAS,UACiB;AACzC,QAAO,yBAAyB,OAAO;EACtC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;EACvB,KAAK,CAAC,EAAE,KAAK,KAAK,UAAU,OAAO,IAAI,KAAK,CAAC;EAC7C,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa;GAC3B,IAAI,MAAM,UAAU,SAAS,SAAS,CAAC;EACvC;CACD,EAAC;AACF;;;;ACMD,SAAgB,iBAKfC,OACAC,iBAGAC,WAC+C;CAC/C,MAAM,aAAa,iCAClB,OACA;EACC,KAAK,GAAG,gBAAgB,IAAI,KAAK,CAAC;EAClC,KACC,CAAC,QACD,CAAC,EAAE,KAAK,KAAK;GACZ,MAAM,YAAY,IAAI,iBAAiB,IAAI;AAC3C,UAAO,UAAU,OAAO,UAAU;EAClC;EACF,KACC,CAAC,QACD,CAAC,EAAE,KAAK,EAAE,aAAa;GACtB,IAAI,iBAAiB,KAAK,UAAU,SAAS,SAAS,CAAC;EACvD;CACF,GACD,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,AAAC,EACnB;AACD,QAAO;AACP;;;;ACTD,MAAa,YAAY,CACxBC,QAC4D,KAAK,MAAM,IAAI;AAE5E,MAAa,gBAAgB,CAC5BC,SACoB,KAAK,UAAU,KAAK;AAWzC,MAAM,kBAAkB;CACvB,MAAM;CACN,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;AACP;AACD,MAAa,SAAS,CAACC,UAA4C;AAClE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,UAAU,OAAW,QAAO;CAChC,MAAM,YAAY,OAAO,eAAe,MAAM;AAC9C,QAAO,gBAAgB,SAAS,UAAU;AAC1C;AAED,MAAa,kBAAkB;CAC9B,CAAC,KAAK,CAAC;CACP,CAAC,OAAO,CAAC;CACT,CAAC,IAAI,CAAC;CACN,CAAC,MAAM,CAAC;CACR,CAAC,MAAM,CAAC;CACR,CAAC,MAAM,CAAC;AACR;AAaD,MAAaC,gBAA2B;CACvC,OAAO,CAAE;CACT,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ,CAAE;CACV,QAAQ,EAAE;AACV"}
1
+ {"version":3,"file":"index.js","names":["entries: E","obj: T","atom: AtomIO.AtomToken<T>","transform: JsonInterface<T, J>","store: Store","store: Store","atomFamilyToken:\n\t\t| AtomIO.MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, J, K>\n\t\t| AtomIO.RegularAtomFamilyToken<T, K>","transform: JsonInterface<T, J>","str: S | string","json: J","input: unknown","JSON_DEFAULTS: JsonTypes"],"sources":["../../src/json/entries.ts","../../src/json/select-json.ts","../../src/json/select-json-family.ts","../../src/json/index.ts"],"sourcesContent":["import type { Count, Flat } from \"atom.io/internal\"\n\nexport type Entries<K extends PropertyKey = PropertyKey, V = any> = [K, V][]\n\nexport type KeyOfEntries<E extends Entries> = E extends [infer K, any][]\n\t? K\n\t: never\n\nexport type ValueOfEntry<E extends Entries, K extends KeyOfEntries<E>> = {\n\t[P in Count<E[`length`]>]: E[P] extends [K, infer V] ? V : never\n}[Count<E[`length`]>]\n\nexport type FromEntries<E extends Entries> = Flat<{\n\t[K in KeyOfEntries<E>]: ValueOfEntry<E, K>\n}>\n\nexport function fromEntries<E extends Entries>(entries: E): FromEntries<E> {\n\treturn Object.fromEntries(entries) as FromEntries<E>\n}\n\nexport function toEntries<T extends object>(\n\tobj: T,\n): Entries<keyof T, T[keyof T]> {\n\treturn Object.entries(obj) as Entries<keyof T, T[keyof T]>\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { createStandaloneSelector, IMPLICIT } from \"atom.io/internal\"\n\nimport type { Json, JsonInterface } from \".\"\n\nexport const selectJson = <T, J extends Json.Serializable>(\n\tatom: AtomIO.AtomToken<T>,\n\ttransform: JsonInterface<T, J>,\n\tstore: Store = IMPLICIT.STORE,\n): AtomIO.WritablePureSelectorToken<J> => {\n\treturn createStandaloneSelector(store, {\n\t\tkey: `${atom.key}:JSON`,\n\t\tget: ({ get }) => transform.toJson(get(atom)),\n\t\tset: ({ set }, newValue) => {\n\t\t\tset(atom, transform.fromJson(newValue))\n\t\t},\n\t})\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store, Transceiver } from \"atom.io/internal\"\nimport { createWritablePureSelectorFamily } from \"atom.io/internal\"\n\nimport type { Canonical, Json, JsonInterface } from \".\"\n\nexport function selectJsonFamily<\n\tT extends Transceiver<any>,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken: AtomIO.MutableAtomFamilyToken<T, J, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K>\nexport function selectJsonFamily<\n\tT,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken: AtomIO.RegularAtomFamilyToken<T, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K>\nexport function selectJsonFamily<\n\tT,\n\tJ extends Json.Serializable,\n\tK extends Canonical,\n>(\n\tstore: Store,\n\tatomFamilyToken:\n\t\t| AtomIO.MutableAtomFamilyToken<T extends Transceiver<any> ? T : never, J, K>\n\t\t| AtomIO.RegularAtomFamilyToken<T, K>,\n\ttransform: JsonInterface<T, J>,\n): AtomIO.WritablePureSelectorFamilyToken<J, K> {\n\tconst jsonFamily = createWritablePureSelectorFamily<J, K>(\n\t\tstore,\n\t\t{\n\t\t\tkey: `${atomFamilyToken.key}:JSON`,\n\t\t\tget:\n\t\t\t\t(key) =>\n\t\t\t\t({ get }) => {\n\t\t\t\t\tconst baseState = get(atomFamilyToken, key)\n\t\t\t\t\treturn transform.toJson(baseState)\n\t\t\t\t},\n\t\t\tset:\n\t\t\t\t(key) =>\n\t\t\t\t({ set }, newValue) => {\n\t\t\t\t\tset(atomFamilyToken, key, transform.fromJson(newValue))\n\t\t\t\t},\n\t\t},\n\t\t[`mutable`, `json`],\n\t)\n\treturn jsonFamily\n}\n","export * from \"./entries\"\nexport * from \"./select-json\"\nexport * from \"./select-json-family\"\n\nexport type primitive = boolean | number | string | null\n\nexport namespace Json {\n\texport namespace Tree {\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Array<Element = unknown> = ReadonlyArray<Element>\n\t\t// eslint-disable-next-line @typescript-eslint/no-shadow\n\t\texport type Object<K extends string = string, V = unknown> = Record<K, V>\n\t\texport type Fork = Array | Object\n\t\texport type Leaf = primitive\n\t\texport type Node = Fork | Leaf\n\t}\n\n\texport type Serializable =\n\t\t| primitive\n\t\t| Readonly<{ [key: string]: Serializable }>\n\t\t| ReadonlyArray<Serializable>\n\n\texport type Object<\n\t\tKey extends string = string,\n\t\tValue extends Serializable = Serializable,\n\t> = Record<Key, Value>\n\n\texport type Array<Element extends Serializable = Serializable> =\n\t\tReadonlyArray<Element>\n}\n\nexport type stringified<J extends Json.Serializable> = J extends string\n\t? `\"${J}\"`\n\t: J extends number\n\t\t? `${J}`\n\t\t: J extends true\n\t\t\t? `true`\n\t\t\t: J extends false\n\t\t\t\t? `false`\n\t\t\t\t: J extends boolean\n\t\t\t\t\t? `false` | `true`\n\t\t\t\t\t: J extends null\n\t\t\t\t\t\t? `null`\n\t\t\t\t\t\t: string & { __json?: J }\n\nexport const parseJson = <S extends stringified<Json.Serializable>>(\n\tstr: S | string,\n): S extends stringified<infer J> ? J : Json.Serializable => JSON.parse(str)\n\nexport const stringifyJson = <J extends Json.Serializable>(\n\tjson: J,\n): stringified<J> => JSON.stringify(json) as stringified<J>\n\n/**\n * Always serializes to the same string.\n */\nexport type Canonical = primitive | ReadonlyArray<Canonical>\n\nexport type JsonIO = (...params: Json.Serializable[]) => Json.Serializable | void\n\nexport type JsonInterface<T, J extends Json.Serializable = Json.Serializable> = {\n\ttoJson: (t: T) => J\n\tfromJson: (json: J) => T\n}\n\nconst JSON_PROTOTYPES = [\n\tArray.prototype,\n\tBoolean.prototype,\n\tNumber.prototype,\n\tObject.prototype,\n\tString.prototype,\n] as const\nexport const isJson = (input: unknown): input is Json.Tree.Node => {\n\tif (input === null) return true\n\tif (input === undefined) return false\n\tconst prototype = Object.getPrototypeOf(input)\n\treturn JSON_PROTOTYPES.includes(prototype)\n}\n\nexport const JSON_TYPE_NAMES = [\n\t`array`,\n\t`boolean`,\n\t`null`,\n\t`number`,\n\t`object`,\n\t`string`,\n] as const\n\nexport type JsonTypeName = (typeof JSON_TYPE_NAMES)[number]\n\nexport interface JsonTypes extends Record<JsonTypeName, Json.Serializable> {\n\tarray: Json.Array\n\tboolean: boolean\n\tnull: null\n\tnumber: number\n\tobject: Json.Object\n\tstring: string\n}\n\nexport const JSON_DEFAULTS: JsonTypes = {\n\tarray: [],\n\tboolean: false,\n\tnull: null,\n\tnumber: 0,\n\tobject: {},\n\tstring: ``,\n}\n"],"mappings":";;;AAgBA,SAAgB,YAA+BA,SAA4B;AAC1E,QAAO,OAAO,YAAY,QAAQ;AAClC;AAED,SAAgB,UACfC,KAC+B;AAC/B,QAAO,OAAO,QAAQ,IAAI;AAC1B;;;;AClBD,MAAa,aAAa,CACzBC,MACAC,WACAC,QAAe,SAAS,UACiB;AACzC,QAAO,yBAAyB,OAAO;EACtC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;EACvB,KAAK,CAAC,EAAE,KAAK,KAAK,UAAU,OAAO,IAAI,KAAK,CAAC;EAC7C,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa;GAC3B,IAAI,MAAM,UAAU,SAAS,SAAS,CAAC;EACvC;CACD,EAAC;AACF;;;;ACMD,SAAgB,iBAKfC,OACAC,iBAGAC,WAC+C;CAC/C,MAAM,aAAa,iCAClB,OACA;EACC,KAAK,GAAG,gBAAgB,IAAI,KAAK,CAAC;EAClC,KACC,CAAC,QACD,CAAC,EAAE,KAAK,KAAK;GACZ,MAAM,YAAY,IAAI,iBAAiB,IAAI;AAC3C,UAAO,UAAU,OAAO,UAAU;EAClC;EACF,KACC,CAAC,QACD,CAAC,EAAE,KAAK,EAAE,aAAa;GACtB,IAAI,iBAAiB,KAAK,UAAU,SAAS,SAAS,CAAC;EACvD;CACF,GACD,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,AAAC,EACnB;AACD,QAAO;AACP;;;;ACTD,MAAa,YAAY,CACxBC,QAC4D,KAAK,MAAM,IAAI;AAE5E,MAAa,gBAAgB,CAC5BC,SACoB,KAAK,UAAU,KAAK;AAczC,MAAM,kBAAkB;CACvB,MAAM;CACN,QAAQ;CACR,OAAO;CACP,OAAO;CACP,OAAO;AACP;AACD,MAAa,SAAS,CAACC,UAA4C;AAClE,KAAI,UAAU,KAAM,QAAO;AAC3B,KAAI,UAAU,OAAW,QAAO;CAChC,MAAM,YAAY,OAAO,eAAe,MAAM;AAC9C,QAAO,gBAAgB,SAAS,UAAU;AAC1C;AAED,MAAa,kBAAkB;CAC9B,CAAC,KAAK,CAAC;CACP,CAAC,OAAO,CAAC;CACT,CAAC,IAAI,CAAC;CACN,CAAC,MAAM,CAAC;CACR,CAAC,MAAM,CAAC;CACR,CAAC,MAAM,CAAC;AACR;AAaD,MAAaC,gBAA2B;CACvC,OAAO,CAAE;CACT,SAAS;CACT,MAAM;CACN,QAAQ;CACR,QAAQ,CAAE;CACV,QAAQ,EAAE;AACV"}