@scbt-ecom/ui 0.154.2 → 0.154.3

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,2 +1,2 @@
1
- const N={NON_EMPTY:()=>"Поле обязательно для заполнения",VALUE_NO_WHITESPACE:()=>"Укажите фамилию, имя и отчество через пробел",ONLY_CYRILLIC:()=>"Данные должны быть написаны кириллицей",NAME_OR_SURNAME_NON_EMPTY:()=>"Укажите имя и фамилию",INVALID_NAME:()=>"Неверно введено имя",INVALID_SURNAME:()=>"Неверно введена фамилия",INVALID_PATRONYMIC:()=>"Неверно введено отчество"},A={ONLY_CYRILLIC:/[\u0400-\u04FF\u00CB\u00EB -]/g,CHECK_HYPHEN:/^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,PATRONYMIC:/^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i};export{N as fioDefaultMessages,A as fioRegex};
1
+ const A={NON_EMPTY:()=>"Поле обязательно для заполнения",VALUE_NO_WHITESPACE:()=>"Укажите фамилию, имя и отчество через пробел",ONLY_CYRILLIC:()=>"Данные должны быть написаны кириллицей",NAME_OR_SURNAME_NON_EMPTY:()=>"Укажите имя и фамилию",INVALID_NAME:()=>"Неверно введено имя",INVALID_SURNAME:()=>"Неверно введена фамилия",INVALID_PATRONYMIC:()=>"Неверно введено отчество",ONLY_ALLOWED_CHARS:()=>"Разрешена только кириллица, пробелы и тире"},N={ONLY_CYRILLIC:/[\u0400-\u04FF\u00CB\u00EB -]/g,ONLY_ALLOWED_CHARS:/^[а-яА-ЯёЁ\s-]+$/,CHECK_HYPHEN:/^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,PATRONYMIC:/^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i};export{A as fioDefaultMessages,N as fioRegex};
2
2
  //# sourceMappingURL=dadata.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dadata.constants.js","sources":["../../../../../lib/shared/validation/dadata/dadata.constants.ts"],"sourcesContent":["export const fioDefaultMessages = {\n NON_EMPTY: () => 'Поле обязательно для заполнения',\n VALUE_NO_WHITESPACE: () => 'Укажите фамилию, имя и отчество через пробел',\n ONLY_CYRILLIC: () => 'Данные должны быть написаны кириллицей',\n NAME_OR_SURNAME_NON_EMPTY: () => 'Укажите имя и фамилию',\n INVALID_NAME: () => 'Неверно введено имя',\n INVALID_SURNAME: () => 'Неверно введена фамилия',\n INVALID_PATRONYMIC: () => 'Неверно введено отчество'\n}\n\nexport const fioRegex = {\n ONLY_CYRILLIC: /[\\u0400-\\u04FF\\u00CB\\u00EB -]/g,\n CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,\n PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i\n}\n"],"names":["fioDefaultMessages","fioRegex"],"mappings":"AAAO,MAAMA,EAAqB,CAChC,UAAW,IAAM,kCACjB,oBAAqB,IAAM,+CAC3B,cAAe,IAAM,yCACrB,0BAA2B,IAAM,wBACjC,aAAc,IAAM,sBACpB,gBAAiB,IAAM,0BACvB,mBAAoB,IAAM,0BAC5B,EAEaC,EAAW,CACtB,cAAe,iCACf,aAAc,mCACd,WAAY,iHACd"}
1
+ {"version":3,"file":"dadata.constants.js","sources":["../../../../../lib/shared/validation/dadata/dadata.constants.ts"],"sourcesContent":["export const fioDefaultMessages = {\n NON_EMPTY: () => 'Поле обязательно для заполнения',\n VALUE_NO_WHITESPACE: () => 'Укажите фамилию, имя и отчество через пробел',\n ONLY_CYRILLIC: () => 'Данные должны быть написаны кириллицей',\n NAME_OR_SURNAME_NON_EMPTY: () => 'Укажите имя и фамилию',\n INVALID_NAME: () => 'Неверно введено имя',\n INVALID_SURNAME: () => 'Неверно введена фамилия',\n INVALID_PATRONYMIC: () => 'Неверно введено отчество',\n ONLY_ALLOWED_CHARS: () => 'Разрешена только кириллица, пробелы и тире'\n}\n\nexport const fioRegex = {\n ONLY_CYRILLIC: /[\\u0400-\\u04FF\\u00CB\\u00EB -]/g,\n ONLY_ALLOWED_CHARS: /^[а-яА-ЯёЁ\\s-]+$/,\n CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,\n PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i\n}\n"],"names":["fioDefaultMessages","fioRegex"],"mappings":"AAAO,MAAMA,EAAqB,CAChC,UAAW,IAAM,kCACjB,oBAAqB,IAAM,+CAC3B,cAAe,IAAM,yCACrB,0BAA2B,IAAM,wBACjC,aAAc,IAAM,sBACpB,gBAAiB,IAAM,0BACvB,mBAAoB,IAAM,2BAC1B,mBAAoB,IAAM,4CAC5B,EAEaC,EAAW,CACtB,cAAe,iCACf,mBAAoB,mBACpB,aAAc,mCACd,WAAY,iHACd"}
@@ -1,2 +1,2 @@
1
- import t from"zod";import{fioRegex as r,fioDefaultMessages as n}from"./dadata.constants.js";const f=s=>{const[e,i,...d]=s.trim().replace(/\s+/g," ").split(" "),m=d.join(" ");return{surname:e,name:i,patronymic:m}},l=s=>{const{message:e}=s||{},{nameOrSurnameEmpty:i,invalidSurname:d,invalidPatronymic:m,invalidName:c}=e||{};return t.string().superRefine((o,a)=>{const{name:g,surname:u,patronymic:I}=f(o);r.ONLY_CYRILLIC.test(o)||a.addIssue({code:t.ZodIssueCode.invalid_string,validation:"regex",message:n.ONLY_CYRILLIC()}),(!g||!u)&&a.addIssue({code:t.ZodIssueCode.invalid_string,validation:"regex",message:i||n.NAME_OR_SURNAME_NON_EMPTY()}),r.CHECK_HYPHEN.test(g)||a.addIssue({code:t.ZodIssueCode.invalid_string,validation:"regex",message:c||n.INVALID_NAME()}),r.CHECK_HYPHEN.test(u)||a.addIssue({code:t.ZodIssueCode.invalid_string,validation:"regex",message:d||n.INVALID_SURNAME()}),I&&(r.PATRONYMIC.test(I)||a.addIssue({code:t.ZodIssueCode.invalid_string,validation:"regex",message:m||n.INVALID_PATRONYMIC()}))}).transform(o=>o.trimEnd()).default("")},N=s=>l(s).optional().transform(e=>e?.length?e:void 0);function p(s){const{required:e=!0,...i}=s||{};return e?l(i):N(i)}export{p as getFioSchema};
1
+ import i from"zod";import{fioRegex as r,fioDefaultMessages as o}from"./dadata.constants.js";const C=s=>{const[e,a,...d]=s.trim().replace(/\s+/g," ").split(" "),m=d.join(" ");return{surname:e,name:a,patronymic:m}},_=s=>{const{message:e}=s||{},{nameOrSurnameEmpty:a,invalidSurname:d,invalidPatronymic:m,invalidName:l}=e||{};return i.string().superRefine((n,t)=>{const{name:g,surname:u,patronymic:I}=C(n);r.ONLY_CYRILLIC.test(n)||t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:o.ONLY_CYRILLIC()}),(!g||!u)&&t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:a||o.NAME_OR_SURNAME_NON_EMPTY()}),r.ONLY_ALLOWED_CHARS.test(n)||t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:o.ONLY_ALLOWED_CHARS()}),r.CHECK_HYPHEN.test(g)||t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:l||o.INVALID_NAME()}),r.CHECK_HYPHEN.test(u)||t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:d||o.INVALID_SURNAME()}),I&&(r.PATRONYMIC.test(I)||t.addIssue({code:i.ZodIssueCode.invalid_string,validation:"regex",message:m||o.INVALID_PATRONYMIC()}))}).transform(n=>n.trimEnd()).default("")},N=s=>_(s).optional().transform(e=>e?.length?e:void 0);function L(s){const{required:e=!0,...a}=s||{};return e?_(a):N(a)}export{L as getFioSchema};
2
2
  //# sourceMappingURL=fio.validators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fio.validators.js","sources":["../../../../../lib/shared/validation/dadata/fio.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n"],"names":["getFioParts","value","surname","name","patronymicParts","patronymic","getFioRequired","props","message","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","z","context","fioRegex","fioDefaultMessages","getFioOptional","getFioSchema","required","restProps"],"mappings":"4FAGA,MAAMA,EAAeC,GAAkB,CACrC,KAAM,CAACC,EAASC,EAAM,GAAGC,CAAe,EAAIH,EAAM,KAAA,EAAO,QAAQ,OAAQ,GAAG,EAAE,MAAM,GAAG,EACjFI,EAAaD,EAAgB,KAAK,GAAG,EAE3C,MAAO,CAAE,QAAAF,EAAS,KAAAC,EAAM,WAAAE,CAAA,CAC1B,EAoBMC,EAAkBC,GAAyD,CAC/E,KAAM,CAAE,QAAAC,GAAYD,GAAS,CAAA,EAEvB,CAAE,mBAAAE,EAAoB,eAAAC,EAAgB,kBAAAC,EAAmB,YAAAC,CAAA,EAAgBJ,GAAW,CAAA,EAE1F,OAAOK,EACJ,OAAA,EACA,YAAY,CAACZ,EAAOa,IAAY,CAC/B,KAAM,CAAE,KAAAX,EAAM,QAAAD,EAAS,WAAAG,CAAA,EAAeL,EAAYC,CAAK,EAElDc,EAAS,cAAc,KAAKd,CAAK,GACpCa,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASG,EAAmB,cAAA,CAAc,CAC3C,GAGC,CAACb,GAAQ,CAACD,IACZY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASJ,GAAsBO,EAAmB,0BAAA,CAA0B,CAC7E,EAGED,EAAS,aAAa,KAAKZ,CAAI,GAClCW,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASD,GAAeI,EAAmB,aAAA,CAAa,CACzD,EAGED,EAAS,aAAa,KAAKb,CAAO,GACrCY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASH,GAAkBM,EAAmB,gBAAA,CAAgB,CAC/D,EAGCX,IACGU,EAAS,WAAW,KAAKV,CAAU,GACtCS,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASF,GAAqBK,EAAmB,mBAAA,CAAmB,CACrE,EAGP,CAAC,EACA,UAAWf,GAAUA,EAAM,QAAA,CAAS,EACpC,QAAQ,EAAE,CACf,EAMMgB,EAAkBV,GACfD,EAAeC,CAAK,EACxB,SAAA,EACA,UAAWN,GAAYA,GAAO,OAAqBA,EAAZ,MAAkB,EAwBvD,SAASiB,EACdX,EACuC,CACvC,KAAM,CAAE,SAAAY,EAAW,GAAM,GAAGC,CAAA,EAAcb,GAAS,CAAA,EAEnD,OAAOY,EAAWb,EAAec,CAAS,EAAIH,EAAeG,CAAS,CACxE"}
1
+ {"version":3,"file":"fio.validators.js","sources":["../../../../../lib/shared/validation/dadata/fio.validators.ts"],"sourcesContent":["import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.ONLY_ALLOWED_CHARS.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_ALLOWED_CHARS()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n"],"names":["getFioParts","value","surname","name","patronymicParts","patronymic","getFioRequired","props","message","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","z","context","fioRegex","fioDefaultMessages","getFioOptional","getFioSchema","required","restProps"],"mappings":"4FAGA,MAAMA,EAAeC,GAAkB,CACrC,KAAM,CAACC,EAASC,EAAM,GAAGC,CAAe,EAAIH,EAAM,KAAA,EAAO,QAAQ,OAAQ,GAAG,EAAE,MAAM,GAAG,EACjFI,EAAaD,EAAgB,KAAK,GAAG,EAE3C,MAAO,CAAE,QAAAF,EAAS,KAAAC,EAAM,WAAAE,CAAA,CAC1B,EAoBMC,EAAkBC,GAAyD,CAC/E,KAAM,CAAE,QAAAC,GAAYD,GAAS,CAAA,EAEvB,CAAE,mBAAAE,EAAoB,eAAAC,EAAgB,kBAAAC,EAAmB,YAAAC,CAAA,EAAgBJ,GAAW,CAAA,EAE1F,OAAOK,EACJ,OAAA,EACA,YAAY,CAACZ,EAAOa,IAAY,CAC/B,KAAM,CAAE,KAAAX,EAAM,QAAAD,EAAS,WAAAG,CAAA,EAAeL,EAAYC,CAAK,EAElDc,EAAS,cAAc,KAAKd,CAAK,GACpCa,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASG,EAAmB,cAAA,CAAc,CAC3C,GAGC,CAACb,GAAQ,CAACD,IACZY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASJ,GAAsBO,EAAmB,0BAAA,CAA0B,CAC7E,EAGED,EAAS,mBAAmB,KAAKd,CAAK,GACzCa,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASG,EAAmB,mBAAA,CAAmB,CAChD,EAGED,EAAS,aAAa,KAAKZ,CAAI,GAClCW,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASD,GAAeI,EAAmB,aAAA,CAAa,CACzD,EAGED,EAAS,aAAa,KAAKb,CAAO,GACrCY,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASH,GAAkBM,EAAmB,gBAAA,CAAgB,CAC/D,EAGCX,IACGU,EAAS,WAAW,KAAKV,CAAU,GACtCS,EAAQ,SAAS,CACf,KAAMD,EAAE,aAAa,eACrB,WAAY,QACZ,QAASF,GAAqBK,EAAmB,mBAAA,CAAmB,CACrE,EAGP,CAAC,EACA,UAAWf,GAAUA,EAAM,QAAA,CAAS,EACpC,QAAQ,EAAE,CACf,EAMMgB,EAAkBV,GACfD,EAAeC,CAAK,EACxB,SAAA,EACA,UAAWN,GAAYA,GAAO,OAAqBA,EAAZ,MAAkB,EAwBvD,SAASiB,EACdX,EACuC,CACvC,KAAM,CAAE,SAAAY,EAAW,GAAM,GAAGC,CAAA,EAAcb,GAAS,CAAA,EAEnD,OAAOY,EAAWb,EAAec,CAAS,EAAIH,EAAeG,CAAS,CACxE"}