{"context":{"domain":"natura"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"645b823726c1280637133f0e","name":"Natura","domain":"natura","visibility":"public","settings":{"defaultAccessPolicy":"private"},"updatedAt":"2026-08-14T07:14:01.319Z","createdAt":"2023-05-10T11:38:31.612Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a8c89ebecaed5dc9a96ac21","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"FaqOperadorV2","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// FaqOperadorV2 — NASVI operator FAQ copilot, one code component.\n// Real path: d2.data('faqs').filter({busca,country,ecommerce}) + refresh -> the\n// CustomHTTPDataSource runs semanticSearch server-side; then the Nasvi assistant\n// answers with the hits injected as context (same contract as triggerCopilotFlow).\n// demo:true      -> embedded mock data, no backend, no AI cost.\n// telemetry:false -> every write is inert (default).\n\nconst MOCK_USER = { name: 'Ana Gomez', email: 'ana.gomez@natura.net', countries: ['AR', 'MX'], user_type: ['Standard'], role: 'agent' }\nconst MOCK_REGIONS = ['AR', 'MX', 'CO', 'PE', 'CL', 'EC']\nconst MOCK_FAQS = [\n  { _id: 'm1', title: 'Puntos de la consultora no actualizados', article: '10231', d2_search_score: 0.87, category: 'MODELO_COMERCIAL', content: 'Si la consultora tiene apenas 1 punto, debe actualizar su registro. Esto ocurre por alguna inconsistencia en su dirección; después de actualizar sus datos sus puntos deberían restablecerse en hasta 24 horas.' },\n  { _id: 'm2', title: 'Pedido retenido por límite de crédito', article: '10884', d2_search_score: 0.74, category: 'PEDIDOS', content: 'Si el pedido queda retenido por exceder el límite de crédito, la consultora deberá ajustar el puntaje del pedido según el crédito disponible o pagar pedidos pendientes para liberar crédito.' },\n  { _id: 'm3', title: 'Unificación ELO Natura y Avon', article: '11002', d2_search_score: 0.66, category: 'MODELO_COMERCIAL', content: 'Con el ELO México, Natura y Avon se unificaron. Los ciclos, el catálogo y la tabla de puntos pasan a ser únicos. Ante conflicto de información, siempre prevalece el contenido que habla específicamente del ELO.' },\n  { _id: 'm4', title: 'Dejar de vender / baja de consultora', article: '10077', d2_search_score: 0.52, category: 'MODELO_COMERCIAL', content: 'Para darse de baja como Consultora de Belleza Natura debe enviar un correo a atencion_consultor@natura.net adjuntando identificación oficial vigente por ambos lados y una carta con el motivo.' },\n  { _id: 'm5', title: 'Plazos de entrega por región', article: '10455', d2_search_score: 0.41, category: 'PEDIDOS', content: 'Los plazos de entrega varían por región. Capital y GBA: 3 a 5 días hábiles. Interior: 5 a 8 días hábiles contados desde la facturación del pedido.' }\n]\nconst MOCK_HISTORY = [\n  { _id: 'h1', pergunta: '¿Cómo actualizo la dirección de una consultora?', resposta: 'Querido Asesor, para actualizar la dirección ingresá en el panel de registro, sección *Datos personales*, y editá el campo Domicilio. El cambio impacta el próximo ciclo.', createdAt: Date.now() - 1080000 },\n  { _id: 'h2', pergunta: '¿Cuántos días demora un reembolso?', resposta: 'Estimado asesor, el reembolso se procesa en hasta **10 días hábiles** después de aprobada la solicitud.', createdAt: Date.now() - 5700000 },\n  { _id: 'h3', pergunta: '¿Qué pasa si el pedido llega incompleto?', resposta: 'Querido Asesor, se debe abrir un reclamo de falta de producto adjuntando el número de pedido y la foto del remito.', createdAt: Date.now() - 93600000 }\n]\nconst MOCK_ANSWER = 'Querido Asesor,\\n\\nSi la consultora visualiza **apenas 1 punto**, casi siempre se debe a una **inconsistencia en su dirección**.\\n\\nPasos a seguir:\\n\\n1. Pedíle que ingrese a *Mi registro* y revise el domicilio completo.\\n2. Que corrija calle, número y código postal.\\n3. Guardar los cambios.\\n\\nDespués de actualizar los datos, **sus puntos deberían restablecerse** automáticamente.\\n\\n> Si pasadas 24 horas el puntaje sigue igual, abrí un ticket para el área comercial.'\n\nconst HELP_MD = 'Soy **NASVI**\\n\\nTu nuevo **copiloto virtual**, listo para acompañarte en cada contacto con nuestras consultoras.\\n\\nEstoy aquí para hacer tu trabajo **más ágil, más seguro y más claro**.\\n\\n¿Cómo lo hago? Muy fácil:\\n\\n- Estoy entrenado con los procesos, protocolos y wikis actualizados de Natura y Avon.\\n- Cuando tengas una duda, yo te doy la respuesta en segundos, sin detener tu atención.\\n- Además, te llevo directo a la fuente oficial en Beedoo, para que siempre tengas información validada.\\n\\nMi misión es que puedas resolver más consultas en el primer contacto, sin errores, y con total confianza.'\n\nconst VOTE = {\n  1: ['No encontré nada útil', 'Sin respuesta o sin relevancia para la consulta'],\n  2: ['Encontré muy poca información', 'Respuesta incompleta o poco relevante'],\n  3: ['Encontré parte de la información', 'Resolvió parcialmente, se requiere buscar más'],\n  4: ['Encontré casi todo lo que buscaba', 'Útil en gran parte, pero con pequeños vacíos'],\n  5: ['Encontré exactamente lo que necesitaba', 'Respuesta clara, completa y satisfactoria']\n}\nconst ORIGENES = [['chat', 'Chat'], ['voz', 'Voz'], ['video', 'Video']]\nconst BEEDOO = { MX: 'https://naturamexico.beedoo.io/wiki/' }\nconst BEEDOO_DEFAULT = 'https://naturalatam.beedoo.io/wiki/'\nconst PROMPT = 'Operador Pergunta :  \\n\\n\"{q}\"\\n\\nContesta en espanol'\n\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\n// Spanish relative time. d2.fmt.relative follows the browser locale, which in the\n// builder preview is English — the asesor must always read Spanish.\nfunction rel(ts) {\n  const t = typeof ts === 'number' ? ts : Date.parse(ts)\n  if (!t) return ''\n  const m = Math.round((Date.now() - t) / 60000)\n  if (m < 1) return 'recién'\n  if (m < 60) return 'hace ' + m + (m === 1 ? ' minuto' : ' minutos')\n  const h = Math.round(m / 60)\n  if (h < 24) return 'hace ' + h + (h === 1 ? ' hora' : ' horas')\n  const d = Math.round(h / 24)\n  if (d === 1) return 'ayer'\n  if (d < 30) return 'hace ' + d + ' días'\n  return new Date(t).toLocaleDateString('es')\n}\n\nfunction authOf(d2) { try { return d2.auth(d2.params.autenticacion) } catch (e) { return null } }\n// \"known\" = we resolved a real operator record with markets. The builder preview is\n// authenticated but is NOT an operator, so isAuthed alone would strand the market picker.\nfunction known(d2) { if (isDemo(d2)) return true; const u = user(d2); return (u.countries || []).length > 0 }\nfunction user(d2) {\n  if (isDemo(d2)) return MOCK_USER\n  const a = authOf(d2)\n  const em = (a && a.user && a.user.email) || ''\n  if (!em) return {}\n  const ds = d2.data('usuarios')\n  const rows = ds ? ds.records() : []\n  const f = rows.filter(function (r) { return r.email === em })[0]\n  return f || { email: em }\n}\nfunction isEcom(u) { return [].concat(u.user_type || []).indexOf('E-commerce') >= 0 }\nfunction solo(u) { return (u.countries || []).length === 1 }\nfunction regionCodes(d2) {\n  if (isDemo(d2)) return MOCK_REGIONS\n  const ds = d2.data('regiones')\n  return ds ? ds.records().map(function (r) { return r.country_code }).filter(Boolean).sort() : []\n}\nfunction marketOptions(d2, u) {\n  if (!known(d2)) return regionCodes(d2)\n  return isEcom(u) ? regionCodes(d2) : (u.countries || [])\n}\nfunction showSelector(d2, u) { return !known(d2) || isEcom(u) || !solo(u) }\nfunction market(d2, u) {\n  if (known(d2) && !isEcom(u) && solo(u)) return u.countries[0]\n  return d2.state.region || marketOptions(d2, u)[0] || ''\n}\nfunction hits(d2) {\n  if (isDemo(d2)) return d2.state.hits || []\n  const ds = d2.data('faqs')\n  return ds ? ds.records() : []\n}\nfunction bot(d2) { try { return d2.assistant(d2.params.assistant) } catch (e) { return null } }\nfunction answerText(d2) { if (isDemo(d2)) return d2.state.answer || ''; const a = bot(d2); return (a && a.answer) || '' }\nfunction busy(d2) { if (isDemo(d2)) return !!d2.state.busy; const a = bot(d2); return !!(a && a.busy) }\nfunction history(d2) {\n  if (isDemo(d2)) return MOCK_HISTORY\n  const ds = d2.data('historial')\n  return ds ? ds.records() : []\n}\nfunction beedooUrl(mk, article) { return (BEEDOO[mk] || BEEDOO_DEFAULT) + String(article || '') + '/lll' }\n\nfunction card(d2, r, i, mk) {\n  const sc = typeof r.d2_search_score === 'number' ? (r.d2_search_score * 10).toFixed(1) : ''\n  return '<article class=\"src\" data-key=\"' + attr(r._id || i) + '\">'\n    + '<header class=\"src-h\"><h3 class=\"src-t\">' + esc(r.title) + '</h3>'\n    + (sc ? '<span class=\"src-s\">' + esc(sc) + '</span>' : '') + '</header>'\n    + (r.category ? '<span class=\"src-c\">' + esc(r.category) + '</span>' : '')\n    + '<p class=\"src-b\">' + esc(r.content) + '</p>'\n    + (r.article ? '<a class=\"src-l\" href=\"' + attr(beedooUrl(mk, r.article)) + '\" target=\"_blank\" rel=\"noopener\" data-article=\"' + attr(r.article) + '\">contenido en Beedoo</a>' : '')\n    + '</article>'\n}\n\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '.app{--cream:rgb(254,251,244);--ink:#162b37;--ink2:rgba(22,43,55,.62);--line:#e3ddd2;--olive:rgb(230,238,189);--ok:rgb(125,230,28);--off:rgb(200,46,0);--accent:var(--acc,#FF6C0E);display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.55 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;position:relative;overflow:hidden}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:18px;padding:14px 22px;border-bottom:1px solid var(--line);background:#fff}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}'\n    + '.brand b{font-size:22px;font-weight:700;letter-spacing:.5px}'\n    + '.brand span{font-size:12px;color:var(--ink2)}'\n    + '.chips{display:flex;gap:6px;flex:none}'\n    + '.chip{flex:none;border:0;border-radius:16px;padding:6px 14px;font:600 12px/1 inherit;color:#fff;background:var(--off);cursor:pointer;opacity:.5}'\n    + '.chip[aria-pressed=\"true\"]{background:var(--ok);color:var(--ink);opacity:1}'\n    + '.spacer{flex:1 1 auto;min-width:8px}'\n    + '.mk{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink2);flex:none}'\n    + '.mk select{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}'\n    + '.lock{flex:none;border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-weight:700;background:#faf6ef}'\n    + '.who{font-size:12px;color:var(--ink2);text-align:right;line-height:1.3;flex:none}'\n    + '.who b{display:block;color:var(--ink);font-size:13px}'\n    + '.ico{flex:none;width:34px;height:34px;padding:0;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;font:700 15px/1 inherit;display:grid;place-items:center}'\n    + '.ico:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.pv{flex:none;background:#fff6e6;border-bottom:1px solid #f0dcb4;color:#7a5a12;font-size:12px;padding:7px 22px}'\n    + '.main{flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,32%,372px);min-height:0}'\n    + '.left{display:flex;flex-direction:column;min-height:0;padding:20px 22px;gap:14px}'\n    + '.ask label{display:block;font-weight:600;margin-bottom:6px}'\n    + '.q{width:100%;height:96px;resize:none;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}'\n    + '.q:focus{outline:2px solid var(--accent);outline-offset:-1px}'\n    + '.ask-r{display:flex;align-items:center;gap:12px;margin-top:8px}'\n    + '.hint{font-size:12px;color:var(--ink2)}'\n    + '.send{flex:none;margin-left:auto;border:0;border-radius:8px;padding:10px 22px;background:var(--ink);color:#fff;font:600 14px/1 inherit;cursor:pointer}'\n    + '.send:disabled{opacity:.4;cursor:default}'\n    + '.log{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}'\n    + '.you{align-self:flex-end;max-width:82%;background:#fff;border:1px solid var(--line);border-radius:12px 12px 2px 12px;padding:10px 14px}'\n    + '.bot{display:flex;gap:10px;max-width:94%}'\n    + '.av{width:34px;height:34px;flex:none;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font:700 13px/1 inherit}'\n    + '.bub{background:var(--olive);border-radius:2px 16px 16px 16px;padding:12px 16px;min-width:0}'\n    + '.bub p{margin:0 0 8px}.bub p:last-child{margin:0}.bub ul,.bub ol{margin:6px 0;padding-left:20px}'\n    + '.bub h1,.bub h2,.bub h3{font-size:15px;margin:8px 0 4px}.bub code{background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px}'\n    + '.bub blockquote{margin:8px 0;padding-left:10px;border-left:3px solid rgba(22,43,55,.25);color:var(--ink2)}'\n    + '.cur{display:inline-block;width:7px;height:15px;background:var(--ink);vertical-align:-2px;animation:bl .9s steps(2) infinite}'\n    + '@keyframes bl{50%{opacity:0}}'\n    + '.acts{display:flex;gap:8px;margin-top:10px}'\n    + '.act{border:1px solid rgba(22,43,55,.22);background:rgba(255,255,255,.6);border-radius:7px;padding:5px 11px;font:600 12px/1.4 inherit;color:var(--ink);cursor:pointer}'\n    + '.act:hover{border-color:var(--ink)}'\n    + '.empty{margin:auto;text-align:center;color:var(--ink2);max-width:300px;font-size:13px}'\n    + '.empty b{display:block;margin-bottom:8px;opacity:.3}.empty svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.6}'\n    + '.err{background:#fff0ef;border:1px solid rgba(255,60,51,.45);color:#b3261e;border-radius:9px;padding:9px 12px;font-size:13px}'\n    + '.right{border-left:1px solid var(--line);background:#fffdf9;display:flex;flex-direction:column;min-height:0}'\n    + '.right h2{margin:0;padding:16px 18px 10px;font-size:11px;letter-spacing:1.3px;text-transform:uppercase;color:var(--ink2)}'\n    + '.srcs{flex:1;min-height:0;overflow:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:10px}'\n    + '.src{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}'\n    + '.src-h{display:flex;gap:10px;align-items:flex-start}'\n    + '.src-t{flex:1;margin:0;font-size:13.5px;font-weight:700;line-height:1.35}'\n    + '.src-s{font-size:19px;font-weight:700;color:var(--accent);line-height:1;flex:none}'\n    + '.src-c{display:inline-block;margin-top:6px;font-size:10px;letter-spacing:.6px;background:#f2ede4;border-radius:5px;padding:2px 7px;color:var(--ink2)}'\n    + '.src-b{margin:8px 0 0;font-size:12.5px;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}'\n    + '.src-l{display:inline-block;margin-top:9px;font-size:12px;font-weight:600;color:var(--accent);text-decoration:underline}'\n    + '.ft{flex:none;display:flex;align-items:center;gap:16px;padding:10px 22px;border-top:1px solid var(--line);background:#fff;font-size:12px;color:var(--ink2)}'\n    + '.hist{flex:none;margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 14px;font:600 12px/1 inherit;color:var(--ink);cursor:pointer}'\n    + '.hist:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.scrim{position:absolute;inset:0;background:rgba(0,0,0,.44);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:9}'\n    + '.dlg{background:var(--cream);border-radius:20px;box-shadow:0 18px 50px rgba(0,0,0,.28);position:relative;max-width:92%;max-height:88%;display:flex;flex-direction:column}'\n    + '.dlg-h{display:flex;align-items:center;padding:22px 24px 12px}'\n    + '.dlg-h h2{margin:0;font-size:21px;font-weight:700}'\n    + '.x{margin-left:auto;border:0;background:transparent;font:700 20px/1 inherit;color:var(--ink);cursor:pointer;padding:2px 6px}'\n    + '.dlg-b{padding:0 24px 24px;overflow:auto;min-height:0}'\n    + '.w-help{width:660px}'\n    + '.w-hist{width:1000px;height:78%;display:grid;grid-template-columns:290px 1fr;grid-template-rows:auto minmax(0,1fr);gap:14px 18px;padding:0 24px 24px;overflow:hidden}'\n    + '.hlist{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px}'\n    + '.hitem{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:11px 13px;cursor:pointer;font:inherit;color:var(--ink)}'\n    + '.hitem:hover{background:#faf6ef}'\n    + '.hitem[aria-selected=\"true\"]{background:var(--olive)}'\n    + '.hitem b{display:block;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.hitem span{font-size:11px;color:var(--ink2)}'\n    + '.hdet{overflow:auto;padding-right:6px;display:flex;flex-direction:column;gap:12px}'\n    + '.w-vote{width:700px}'\n    + '.scale{display:flex;gap:11px;margin:4px 0 12px}'\n    + '.dot{flex:none;width:42px;height:42px;padding:0;border-radius:50%;border:1px solid rgba(22,43,55,.35);background:#fff;color:var(--ink);font:700 17px/1 inherit;cursor:pointer}'\n    + '.dot[aria-pressed=\"true\"]{background:var(--ink);color:#fff}'\n    + '.vdesc{min-height:38px;font-size:13px;color:var(--ink2);white-space:pre-line}'\n    + '.vin{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff;color:var(--ink)}'\n    + '.vrow{display:flex;align-items:center;gap:12px;margin-top:14px}'\n    + '.tag{font-size:11px;border:1px dashed rgba(22,43,55,.35);border-radius:6px;padding:2px 7px;color:var(--ink2)}'\n    // The app is embedded in an iframe inside the agent desktop, so the usable width\n    // is not the monitor width. Below ~900px the sources column stacks under the chat.\n    + '@media (max-width:900px){'\n    + '.hd{gap:12px;padding:12px 16px}.who{display:none}.brand b{font-size:19px}'\n    + '.left{padding:16px}'\n    + '.main{display:flex;flex-direction:column}'\n    + '.left{flex:1 1 auto;min-height:0}'\n    + '.right{flex:0 0 auto;border-left:0;border-top:1px solid var(--line);max-height:42%}'\n    + '.right h2{padding:10px 16px 6px}'\n    + '.w-hist{width:96vw;grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr)}'\n    + '.w-help,.w-vote{width:94vw}'\n    + '.ft{gap:10px;padding:8px 16px}'\n    + '}',\n\n  render(d2) {\n    const u = user(d2)\n    const mk = market(d2, u)\n    const opts = marketOptions(d2, u)\n    const hs = hits(d2)\n    const ans = answerText(d2)\n    const bz = busy(d2)\n    const ok = known(d2)\n    const marked = d2.lib('marked@12.0.0')\n    const md = function (t) {\n      if (!t) return ''\n      if (!marked) return '<p>' + esc(t).replace(/\\n/g, '<br>') + '</p>'\n      try { return marked.parse(t) } catch (e) { return '<p>' + esc(t) + '</p>' }\n    }\n\n    const selector = showSelector(d2, u)\n      ? '<select class=\"sel\">' + opts.map(function (c) { return '<option value=\"' + attr(c) + '\"' + (c === mk ? ' selected' : '') + '>' + esc(c) + '</option>' }).join('') + '</select>'\n      : '<span class=\"lock\" title=\"Tu usuario está asignado a un solo mercado\">' + esc(mk || '--') + '</span>'\n\n    const conversa = (!d2.state.pregunta && !ans)\n      ? '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\"><path d=\"M21 12a8 8 0 0 1-8 8H7l-4 3v-5a8 8 0 0 1 8-11h2a8 8 0 0 1 8 5z\" stroke-linejoin=\"round\"/></svg></b>Escribí la duda del cliente y NASVI busca en las wikis por vos.</div>'\n      : (d2.state.pregunta ? '<div class=\"you\">' + esc(d2.state.pregunta) + '</div>' : '')\n        + ((ans || bz)\n          ? '<div class=\"bot\"><div class=\"av\">N</div><div><div class=\"bub\">' + md(ans) + (bz ? '<span class=\"cur\"></span>' : '') + '</div>'\n            + (!bz && ans ? '<div class=\"acts\"><button class=\"act copy\">Copiar</button><button class=\"act vote\">Votar</button></div>' : '')\n            + '</div></div>'\n          : '')\n\n    const fuentes = hs.length\n      ? hs.map(function (r, i) { return card(d2, r, i, mk) }).join('')\n      : '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\"><path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" stroke-linejoin=\"round\"/><path d=\"M14 3v5h5M9 13h6M9 17h4\" stroke-linecap=\"round\"/></svg></b>Realizá tu consulta para ver las wikis relacionadas aquí.</div>'\n\n    let overlay = ''\n    if (d2.state.panel === 'help') {\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-help\"><div class=\"dlg-h\"><h2>NASVI: El Agente del Agente</h2><button class=\"x\">&#215;</button></div><div class=\"dlg-b bub\" style=\"background:transparent\">' + md(HELP_MD) + '</div></div></div>'\n    } else if (d2.state.panel === 'hist') {\n      const rows = history(d2)\n      const sel = d2.state.hsel || (rows[0] && String(rows[0]._id || 0))\n      const cur = rows.filter(function (r, i) { return String(r._id || i) === String(sel) })[0] || rows[0]\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-hist\"><div class=\"dlg-h\" style=\"grid-column:1/-1;padding:20px 0 0\"><h2>Historial</h2><button class=\"x\">&#215;</button></div>'\n        + '<div class=\"hlist\">' + (rows.length ? rows.map(function (r, i) {\n          const id = String(r._id || i)\n          return '<button class=\"hitem\" data-key=\"' + attr(id) + '\" data-h=\"' + attr(id) + '\" aria-selected=\"' + (id === String(sel) ? 'true' : 'false') + '\"><b>' + esc(r.pergunta) + '</b><span>' + esc(rel(r.createdAt)) + '</span></button>'\n        }).join('') : '<div class=\"empty\" style=\"padding:20px\">Sin consultas todavía.</div>') + '</div>'\n        + '<div class=\"hdet\">' + (cur ? '<div class=\"you\" style=\"align-self:flex-start;max-width:100%\">' + esc(cur.pergunta) + '</div><div class=\"bot\"><div class=\"av\">N</div><div class=\"bub\">' + md(cur.resposta) + '</div></div>' : '') + '</div>'\n        + '</div></div>'\n    } else if (d2.state.panel === 'vote') {\n      const g = d2.state.grade || 0\n      const lab = VOTE[g]\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-vote\"><div class=\"dlg-h\"><h2>¿Qué tan útil fue la respuesta?</h2><button class=\"x\">&#215;</button></div><div class=\"dlg-b\">'\n        + '<div class=\"scale\">' + [1, 2, 3, 4, 5].map(function (n) { return '<button class=\"dot\" data-key=\"' + n + '\" data-g=\"' + n + '\" aria-pressed=\"' + (n === g ? 'true' : 'false') + '\">' + n + '</button>' }).join('') + '</div>'\n        + '<div class=\"vdesc\">' + (lab ? esc(lab[0]) + '\\n' + esc(lab[1]) : '') + '</div>'\n        + '<input class=\"vin\" placeholder=\"Comentarios (opcional)\" value=\"' + attr(d2.state.vcomment || '') + '\"/>'\n        + '<div class=\"vrow\">' + (d2.param('telemetry') ? '' : '<span class=\"tag\">telemetría desactivada — no se guarda</span>') + '<button class=\"send vsend\"' + (g ? '' : ' disabled') + '>Enviar</button></div>'\n        + '</div></div></div>'\n    }\n\n    return '<div class=\"app\" data-ready style=\"--acc:' + attr(d2.param('accent', '#FF6C0E')) + '\">'\n      + '<header class=\"hd\">'\n      + '<div class=\"brand\"><b>NASVI</b><span>Copiloto activo</span></div>'\n      + '<div class=\"chips\">' + ORIGENES.map(function (o) { return '<button class=\"chip\" data-o=\"' + o[0] + '\" aria-pressed=\"' + ((d2.state.origen || 'chat') === o[0] ? 'true' : 'false') + '\">' + o[1] + '</button>' }).join('') + '</div>'\n      + '<div class=\"spacer\"></div>'\n      + '<div class=\"mk\"><span>Mercado</span>' + selector + '</div>'\n      + '<div class=\"who\"><b>' + esc(ok ? (u.name || 'Asesor') : 'Vista previa') + '</b>' + esc(ok ? (u.email || '') : 'operador no identificado') + '</div>'\n      + '<button class=\"ico help\" title=\"Ayuda\">?</button>'\n      + '</header>'\n      + (ok ? '' : '<div class=\"pv\">Vista previa: la sesión actual no corresponde a un operador de Agents Tools, así que el mercado se elige a mano. En el app publicado el mercado sale de <b>countries</b> del usuario.</div>')\n      + '<div class=\"main\">'\n      + '<section class=\"left\">'\n      + '<div class=\"ask\"><label for=\"q\">¿Cuál es la pregunta del cliente?</label>'\n      + '<textarea class=\"q\" id=\"q\" placeholder=\"Escribí la duda tal como te la hizo la consultora…\"' + (bz ? ' disabled' : '') + '></textarea>'\n      + '<div class=\"ask-r\"><span class=\"hint\">Enter envía &middot; Shift+Enter salta línea</span>'\n      + ((ok && !isDemo(d2)) ? '' : '<button class=\"act try\">Probar con una consulta de ejemplo</button>')\n      + '<button class=\"send go\"' + (bz ? ' disabled' : '') + '>' + (bz ? 'Buscando…' : 'Enviar pregunta') + '</button></div></div>'\n      + (d2.state.err ? '<div class=\"err\">' + esc(d2.state.err) + '</div>' : '')\n      + '<div class=\"log\">' + conversa + '</div>'\n      + '</section>'\n      + '<aside class=\"right\"><h2>Fuentes</h2><div class=\"srcs\">' + fuentes + '</div></aside>'\n      + '</div>'\n      + '<footer class=\"ft\">'\n      + '<span>' + (d2.state.duracion ? (d2.state.duracion / 1000).toFixed(1) + ' s' : '--') + '</span>'\n      + '<span>' + hs.length + ' fuentes</span>'\n      + '<span>Mercado ' + esc(mk || '--') + '</span>'\n      + (isDemo(d2) ? '<span class=\"tag\">demo</span>' : '')\n      + (d2.param('telemetry') ? '' : '<span class=\"tag\">telemetría off</span>')\n      + '<button class=\"hist\">Historial</button>'\n      + '</footer>'\n      + overlay\n      + '</div>'\n  },\n\n  mounted(d2) {\n    const r = d2.data('regiones'); if (r) r.refresh()\n    const h = d2.data('historial'); if (h) h.refresh()\n\n    const demo = async function (q, t0) {\n      d2.setState({ busy: true, answer: '', hits: [] })\n      await new Promise(function (res) { setTimeout(res, 450) })\n      d2.setState({ hits: MOCK_FAQS })\n      let i = 0\n      await new Promise(function (done) {\n        const id = setInterval(function () {\n          i += 4\n          d2.state.answer = MOCK_ANSWER.slice(0, i)\n          if (i >= MOCK_ANSWER.length) { clearInterval(id); done() }\n        }, 16)\n        d2.onUnmount(function () { clearInterval(id) })\n      })\n      d2.setState({ busy: false, duracion: Date.now() - t0 })\n    }\n\n    const persist = async function (q) {\n      const u = user(d2)\n      const mk = market(d2, u)\n      const mon = d2.data('historial')\n      if (mon) await mon.create({\n        email: u.email, name: u.name, pergunta: q, resposta: answerText(d2),\n        country: mk, origen: d2.state.origen || 'chat',\n        duracion: d2.state.duracion, user_type: isEcom(u) ? 'ecommerce' : undefined\n      })\n      const ev = d2.data('eventos')\n      if (ev) await ev.create({ event: 'assistant_ask', email: u.email, nome: u.name, country: mk, payload: { article: (hits(d2)[0] || {}).article } })\n    }\n\n    const ask = async function () {\n      const el = d2.$('.q')\n      if (!el) return\n      const q = (el.value || '').trim()\n      if (!q) return\n      const t0 = Date.now()\n      el.value = ''\n      d2.setState({ pregunta: q, err: '', duracion: 0, grade: 0, vcomment: '' })\n      if (isDemo(d2)) { await demo(q, t0); return }\n      try {\n        const u = user(d2)\n        const ds = d2.data('faqs')\n        if (!ds) throw new Error('El parámetro \"faqs\" no está conectado a un dataset.')\n        const mk = market(d2, u)\n        if (!mk) throw new Error('No hay mercado seleccionado.')\n        ds.filter({ ecommerce: isEcom(u) ? true : { nin: [true] }, busca: q, country: mk })\n        await ds.refresh()\n        const rows = ds.records()\n        d2.setState({ hits: rows })\n        const a = bot(d2)\n        if (!a) throw new Error('El parámetro \"assistant\" no está conectado.')\n        await a.ask(PROMPT.replace('{q}', q), { context: JSON.stringify(rows) })\n        d2.state.duracion = Date.now() - t0\n        if (d2.param('telemetry')) await persist(q)\n      } catch (e) {\n        d2.state.err = 'No se pudo completar la búsqueda: ' + String((e && e.message) || e)\n      }\n    }\n\n    // Preview affordance: the builder preview has no operator session and no way to type,\n      // so this seeds a real query to exercise the live search end to end.\n      d2.on('.try', 'click', function () {\n      const el = d2.$('.q')\n      if (el) el.value = 'La consultora tiene apenas un punto y no se actualiza, ¿qué hago?'\n      ask()\n    })\n    d2.on('.go', 'click', ask)\n    d2.on('.q', 'keydown', function (e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); ask() } })\n    d2.on('.chip', 'click', function (e, el) { d2.state.origen = el.dataset.o })\n    d2.on('.sel', 'change', function (e, el) { d2.state.region = el.value })\n    d2.on('.help', 'click', function () { d2.state.panel = 'help' })\n    d2.on('.hist', 'click', function () { d2.state.panel = 'hist' })\n    d2.on('.vote', 'click', function () { d2.setState({ panel: 'vote', grade: 0, vcomment: '' }) })\n    d2.on('.x', 'click', function () { d2.state.panel = null })\n    d2.on('.scrim', 'click', function (e, el) { if (e.target === el) d2.state.panel = null })\n    d2.on('.hitem', 'click', function (e, el) { d2.state.hsel = el.dataset.h })\n    d2.on('.dot', 'click', function (e, el) { d2.state.grade = Number(el.dataset.g) })\n    d2.on('.vin', 'input', function (e, el) { d2.state.vcomment = el.value })\n    d2.on('.src-l', 'click', function (e, el) {\n      if (!d2.param('telemetry')) return\n      const ev = d2.data('eventos'); const u = user(d2)\n      if (ev) ev.create({ event: 'wiki_view', email: u.email, nome: u.name, country: market(d2, u), payload: { article: el.dataset.article } })\n    })\n    d2.on('.vsend', 'click', async function () {\n      const g = d2.state.grade\n      if (!g) return\n      if (d2.param('telemetry')) {\n        const u = user(d2); const mk = market(d2, u)\n        const payload = { message: d2.state.pregunta, answer: answerText(d2), grade: g, comment: d2.state.vcomment || '' }\n        const ev = d2.data('eventos')\n        if (ev) {\n          await ev.create({ event: 'voting', email: u.email, nome: u.name, country: mk, payload: payload })\n          if (g === 1) await ev.create({ event: 'answer_not_found', email: u.email, nome: u.name, country: mk, payload: payload })\n        }\n        const enc = d2.data('encuestas')\n        if (enc) await enc.create({ country: mk, email: u.email, reaction: g >= 4 ? 'like' : 'dislike', comments: d2.state.vcomment || '' })\n      }\n      d2.setState({ panel: null })\n    })\n    d2.on('.copy', 'click', function (e, el) {\n      const t = answerText(d2)\n      if (!t) return\n      try { navigator.clipboard.writeText(t) } catch (err) { }\n      el.textContent = 'Copiado'\n      setTimeout(function () { try { el.textContent = 'Copiar' } catch (e2) { } }, 1400)\n    })\n    d2.on(document, 'keydown', function (e) { if (e.key === 'Escape' && d2.state.panel) d2.state.panel = null })\n\n    // In demo mode the screen self-populates, so a fresh preview already shows the\n    // answered state (and the Votar action) without anyone having to type.\n    if (isDemo(d2) && !d2.state.pregunta) {\n      setTimeout(function () {\n        const el = d2.$('.q')\n        if (el && !d2.state.pregunta) {\n          el.value = 'La consultora tiene apenas un punto y no se actualiza, ¿qué hago?'\n          ask()\n        }\n      }, 250)\n    }\n  },\n\n  updated(d2) {\n    const log = d2.$('.log')\n    if (log) log.scrollTop = log.scrollHeight\n  }\n}\n"}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"telemetry":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"telemetry"}}}},"assistant":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant"}}}},"faqs":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"faqs"}}}},"usuarios":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"usuarios"}}}},"regiones":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"regiones"}}}},"historial":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"historial"}}}},"eventos":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"eventos"}}}},"encuestas":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"encuestas"}}}},"autenticacion":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autenticacion"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"6a8c98562073c0d5a8cf739f","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"FaqOperadorV3","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// FaqOperadorV3 — NASVI copilot, hybrid retrieval over three corpora.\n//\n// Measured 24/08/2026, same session, same call shape:\n//   mx-beedoo-faqs   (373 rows) — vector index WORKS   (scores .73-.77, relevant)\n//   beedoo-faqs      (671 rows) — vector index BROKEN  (0 hits, sometimes 2 stale ones)\n//   faqs (curated) (1620 rows)  — vector index WORKS   (scores .75-.78, relevant)\n// All three have d2_embedding on 100% of rows (verified with an $exists control), so the\n// embeddings are fine and only the beedoo INDEX was never provisioned. Keyword search over\n// beedoo reaches all 671, so we run it alongside and let the ranking sort it out.\n//\n// beedoo-faqs is 100% country=AR, so PE/CO/CL/EC operators get nothing from it — the curated\n// `faqs` table is what carries their markets (PE 271, CO 259, CL 19, EC 8).\n//\n// MX runs on its own wiki corpus today. When the bases merge, turn `mxBaseSeparada` off and\n// MX falls back to the shared corpus with no code change.\n\nconst MOCK_USER = { name: 'Ana Gomez', email: 'ana.gomez@natura.net', countries: ['AR', 'MX'], user_type: ['Standard'], role: 'agent' }\nconst MOCK_REGIONS = ['AR', 'CL', 'CO', 'EC', 'MX', 'PE']\nconst MOCK_ROWS = [\n  { _id: 'm1', title: 'Reglas de crédito ELO', article: '10231', category: 'MODELO_COMERCIAL', origen: 'wiki', sv: 0, sk: 0.82, sf: 0, content: 'El límite de crédito se asigna según el historial de pagos de la consultora. Si el pedido excede el límite disponible, queda retenido hasta que se ajuste el puntaje o se regularicen pagos pendientes.' },\n  { _id: 'm2', title: 'PLAZOS DE ENTREGA DE PEDIDOS ELO', category: 'PEDIDOS', origen: 'faq', sv: 0, sk: 0, sf: 0.76, content: 'Los plazos de entrega se cuentan desde la facturación del pedido y varían por región y por tipo de ciclo.' },\n  { _id: 'm3', title: '2. Asignación de Límites', article: '10884', category: 'PEDIDOS', origen: 'wiki', sv: 0, sk: 0.71, sf: 0, content: 'La asignación de límites se revisa cada ciclo. Consultoras con historial positivo pueden solicitar ampliación a través de su Gerente de Negocio.' },\n  { _id: 'm4', title: '33. Crédito y Pagos', article: '11002', category: 'PEDIDOS', origen: 'wiki', sv: 0.61, sk: 0.55, sf: 0, content: 'Los pagos aplicados restablecen el límite de crédito en hasta 48 horas hábiles después de acreditados.' }\n]\nconst MOCK_HISTORY = [\n  { _id: 'h1', pergunta: '¿Cómo actualizo la dirección de una consultora?', resposta: 'Querido Asesor, ingresá en el panel de registro, sección *Datos personales*, y editá el campo Domicilio.', createdAt: Date.now() - 1080000 },\n  { _id: 'h2', pergunta: '¿Cuántos días demora un reembolso?', resposta: 'Estimado asesor, hasta **10 días hábiles** después de aprobada la solicitud.', createdAt: Date.now() - 5700000 }\n]\nconst MOCK_ANSWER = 'Querido Asesor,\\n\\nEl **límite de crédito** se asigna según el historial de pagos de la consultora.\\n\\nSi el pedido quedó retenido:\\n\\n1. Verificá el crédito disponible en el panel.\\n2. Ajustá el puntaje del pedido, **o** regularizá pagos pendientes.\\n3. El límite se restablece en hasta **48 horas hábiles** tras acreditarse el pago.\\n\\n> Para ampliación de límite, la consultora debe hablar con su Gerente de Negocio.'\n\nconst HELP_MD = 'Soy **NASVI**\\n\\nTu nuevo **copiloto virtual**, listo para acompañarte en cada contacto con nuestras consultoras.\\n\\nEstoy aquí para hacer tu trabajo **más ágil, más seguro y más claro**.\\n\\n¿Cómo lo hago? Muy fácil:\\n\\n- Estoy entrenado con los procesos, protocolos y wikis actualizados de Natura y Avon.\\n- Cuando tengas una duda, yo te doy la respuesta en segundos, sin detener tu atención.\\n- Además, te llevo directo a la fuente oficial en Beedoo, para que siempre tengas información validada.\\n\\nMi misión es que puedas resolver más consultas en el primer contacto, sin errores, y con total confianza.'\n\nconst VOTE = {\n  1: ['No encontré nada útil', 'Sin respuesta o sin relevancia para la consulta'],\n  2: ['Encontré muy poca información', 'Respuesta incompleta o poco relevante'],\n  3: ['Encontré parte de la información', 'Resolvió parcialmente, se requiere buscar más'],\n  4: ['Encontré casi todo lo que buscaba', 'Útil en gran parte, pero con pequeños vacíos'],\n  5: ['Encontré exactamente lo que necesitaba', 'Respuesta clara, completa y satisfactoria']\n}\nconst ORIGENES = [['chat', 'Chat'], ['voz', 'Voz'], ['video', 'Video']]\nconst BEEDOO = { MX: 'https://naturamexico.beedoo.io/wiki/' }\nconst BEEDOO_DEFAULT = 'https://naturalatam.beedoo.io/wiki/'\nconst PROMPT = 'Operador Pergunta :  \\n\\n\"{q}\"\\n\\nContesta en espanol'\nconst STOP = ['para', 'como', 'pero', 'este', 'esta', 'esto', 'esos', 'esas', 'tiene', 'tienen', 'hacer', 'puede', 'puedo', 'donde', 'cuando', 'cual', 'cuales', 'sobre', 'todos', 'todas', 'desde', 'hasta', 'entre', 'porque', 'tambien', 'solo', 'tener', 'hace', 'hago', 'debe', 'deben', 'sera', 'seran', 'consultora', 'consultor', 'asesor', 'natura', 'avon', 'favor', 'quiero', 'necesito', 'pregunta', 'cliente']\n\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\nfunction norm(s) { return String(s == null ? '' : s).toLowerCase().normalize('NFD').replace(/[̀-ͯ]/g, '') }\nfunction settle(ms) { return new Promise(function (r) { setTimeout(r, ms) }) }\n\nconst FOLD = { a: '[aáàâä]', e: '[eéèêë]', i: '[iíìîï]', o: '[oóòôö]', u: '[uúùûü]', n: '[nñ]', c: '[cç]' }\nfunction rxOf(t) { let o = ''; for (let i = 0; i < t.length; i++) { o += FOLD[t[i]] || t[i] } return o }\n\nfunction termsOf(q) {\n  const raw = norm(q).replace(/[^a-z0-9\\s]/g, ' ').split(/\\s+/)\n  const seen = {}, out = []\n  for (let i = 0; i < raw.length; i++) {\n    const w = raw[i]\n    if (w.length < 4 || STOP.indexOf(w) >= 0 || seen[w]) continue\n    seen[w] = 1; out.push(w)\n    if (out.length >= 8) break\n  }\n  return out\n}\n\n// context is specific (30+ values) -> strong signal. category has only 7 values, one covering\n// 199 docs, so a hit there must stay cheap or it drowns the canonical document.\nfunction kwScore(doc, ts) {\n  if (!ts.length) return 0\n  const t = norm(doc.title), c = norm(doc.content)\n  const xc = norm(doc.context), xg = norm(doc.category)\n  let ht = 0, hc = 0, hxc = 0, hxg = 0\n  for (let i = 0; i < ts.length; i++) {\n    if (t.indexOf(ts[i]) >= 0) ht++\n    if (xc.indexOf(ts[i]) >= 0) hxc++\n    if (xg.indexOf(ts[i]) >= 0) hxg++\n    if (c.indexOf(ts[i]) >= 0) hc++\n  }\n  return Math.min(1, (ht * 3 + hxc * 3 + hxg + hc) / (ts.length * 6))\n}\n\nfunction excerptOf(content, ts, max) {\n  const c = String(content || '')\n  if (c.length <= max) return c\n  const n = norm(c)\n  let pos = -1\n  for (let i = 0; i < ts.length; i++) { const p = n.indexOf(ts[i]); if (p >= 0 && (pos < 0 || p < pos)) pos = p }\n  if (pos < 0) return c.slice(0, max) + '…'\n  const start = Math.max(0, pos - Math.floor(max * 0.3))\n  const end = Math.min(c.length, start + max)\n  return (start > 0 ? '…' : '') + c.slice(start, end) + (end < c.length ? '…' : '')\n}\n\nfunction authOf(d2) { try { return d2.auth(d2.params.autenticacion) } catch (e) { return null } }\nfunction user(d2) {\n  if (isDemo(d2)) return MOCK_USER\n  const a = authOf(d2)\n  const em = (a && a.user && a.user.email) || ''\n  if (!em) return {}\n  const ds = d2.data('usuarios')\n  const rows = ds ? ds.records() : []\n  return rows.filter(function (r) { return r.email === em })[0] || { email: em }\n}\nfunction known(d2) { if (isDemo(d2)) return true; return (user(d2).countries || []).length > 0 }\nfunction isEcom(u) { return [].concat(u.user_type || []).indexOf('E-commerce') >= 0 }\nfunction solo(u) { return (u.countries || []).length === 1 }\nfunction regionRows(d2) { const ds = d2.data('regiones'); return ds ? ds.records() : [] }\nfunction regionCodes(d2) {\n  if (isDemo(d2)) return MOCK_REGIONS\n  return regionRows(d2).map(function (r) { return r.country_code }).filter(Boolean).sort()\n}\nfunction regionIdOf(d2, code) {\n  const r = regionRows(d2).filter(function (x) { return x.country_code === code })[0]\n  return r ? r._id : null\n}\nfunction marketOptions(d2, u) { if (!known(d2)) return regionCodes(d2); return isEcom(u) ? regionCodes(d2) : (u.countries || []) }\nfunction showSelector(d2, u) { return !known(d2) || isEcom(u) || !solo(u) }\nfunction market(d2, u) {\n  if (known(d2) && !isEcom(u) && solo(u)) return u.countries[0]\n  return d2.state.region || marketOptions(d2, u)[0] || ''\n}\nfunction bot(d2) { try { return d2.assistant(d2.params.assistant) } catch (e) { return null } }\nfunction answerText(d2) { if (isDemo(d2)) return d2.state.answer || ''; const a = bot(d2); return (a && a.answer) || '' }\nfunction busy(d2) { if (isDemo(d2)) return !!d2.state.busy; const a = bot(d2); return !!(a && a.busy) }\nfunction history(d2) { if (isDemo(d2)) return MOCK_HISTORY; const ds = d2.data('historial'); return ds ? ds.records() : [] }\nfunction beedooUrl(mk, article) { return (BEEDOO[mk] || BEEDOO_DEFAULT) + String(article || '') + '/lll' }\n\n// MX still runs on its own wiki corpus. Flip `mxBaseSeparada` off when the bases merge.\nfunction usaBaseMx(d2, mk) {\n  return mk === 'MX' && d2.param('mxBaseSeparada', true) !== false && !!d2.data('faqsMx')\n}\n\nfunction curadaToRow(r) {\n  const cat = (r.categoria_lookup && r.categoria_lookup.es_title) ? r.categoria_lookup.es_title\n    : (Array.isArray(r.categoria) ? r.categoria.join(', ') : (r.categoria || ''))\n  return {\n    _id: r._id, origen: 'faq',\n    title: r.title || r.label || '(sin título)',\n    content: r.answer || r.description || '',\n    context: r.context || '', category: cat, article: null,\n    sv: 0, sk: 0, sf: typeof r.d2_search_score === 'number' ? r.d2_search_score : 0.5\n  }\n}\n\nasync function retrieve(d2, q, mk, ecom) {\n  const ts = termsOf(q)\n  const mxMode = usaBaseMx(d2, mk)\n  const diag = { terms: ts, corpus: mxMode ? 'MX' : 'compartido', wikiVec: 0, wikiTxt: 0, faqVec: 0, chars: 0 }\n  const byId = {}\n\n  const wikiH = mxMode ? d2.data('faqsMx') : d2.data('faqs')\n  const w = wikiH && wikiH.raw\n\n  // ---- wiki corpus ----------------------------------------------------------\n  if (w) {\n    // the MX table has no country/ecommerce/context/category columns\n    const baseVec = mxMode ? {} : (function () { const b = { ecommerce: ecom ? true : { nin: [true] } }; if (mk) b.country = mk; return b })()\n    const scopeKw = mxMode ? {} : (function () { const b = { ecommerce: ecom ? true : { $nin: [true] } }; if (mk) b.country = mk; return b })()\n\n    try {\n      w.filter(baseVec)\n      await settle(350)\n      const vres = await w.semanticSearch({ query: q, options: { score: true, limit: 15 } })\n      const vrows = (vres && vres.data) || []\n      diag.wikiVec = vrows.length\n      for (let i = 0; i < vrows.length; i++) {\n        const r = vrows[i]\n        byId[r._id] = { _id: r._id, origen: 'wiki', title: r.title, content: r.content, article: r.article, category: r.category || '', context: r.context || '', sv: typeof r.d2_search_score === 'number' ? r.d2_search_score : 0.5, sk: 0, sf: 0 }\n      }\n    } catch (e) { diag.wikiVecError = String((e && e.message) || e) }\n\n    if (ts.length) {\n      // `find` has NO relevance ordering, so one $or capped at N buries the canonical title\n      // match behind hundreds of incidental content matches. Two passes, separate budgets.\n      const orsHi = [], orsLo = []\n      for (let i = 0; i < ts.length; i++) {\n        const rx = rxOf(ts[i])\n        orsHi.push({ title: { $regex: rx, $options: 'i' } })\n        if (!mxMode) orsHi.push({ context: { $regex: rx, $options: 'i' } })\n        orsLo.push({ content: { $regex: rx, $options: 'i' } })\n        if (!mxMode) orsLo.push({ category: { $regex: rx, $options: 'i' } })\n      }\n      try {\n        w.filter({})\n        await settle(200)\n        const qHi = Object.assign({ $or: orsHi, $limit: 60 }, scopeKw)\n        const qLo = Object.assign({ $or: orsLo, $limit: 60 }, scopeKw)\n        const pair = await Promise.all([w.find(qHi), w.find(qLo)])\n        const hi = (pair[0] && (pair[0].data || pair[0])) || []\n        const lo = (pair[1] && (pair[1].data || pair[1])) || []\n        diag.wikiTxt = ((pair[0] && pair[0].total) || hi.length) + ((pair[1] && pair[1].total) || lo.length)\n        const rows = hi.concat(lo)\n        for (let i = 0; i < rows.length; i++) {\n          const r = rows[i]\n          const s = kwScore(r, ts)\n          if (byId[r._id]) byId[r._id].sk = s\n          else byId[r._id] = { _id: r._id, origen: 'wiki', title: r.title, content: r.content, article: r.article, category: r.category || '', context: r.context || '', sv: 0, sk: s, sf: 0 }\n        }\n      } catch (e) { diag.wikiTxtError = String((e && e.message) || e) }\n    }\n  } else { diag.wikiError = 'corpus de wikis no conectado' }\n\n  // ---- curated FAQ corpus (working vector index, covers every market) --------\n  const curH = d2.data('faqsCuradas')\n  const c = curH && curH.raw\n  if (c) {\n    try {\n      const rid = regionIdOf(d2, mk)\n      c.filter(rid ? { region: rid } : {})\n      await settle(350)\n      const fres = await c.semanticSearch({ query: q, options: { score: true, limit: 10 } })\n      const frows = (fres && fres.data) || []\n      diag.faqVec = frows.length\n      for (let i = 0; i < frows.length; i++) {\n        const row = curadaToRow(frows[i])\n        if (byId[row._id]) byId[row._id].sf = row.sf\n        else byId[row._id] = row\n      }\n    } catch (e) { diag.faqError = String((e && e.message) || e) }\n  }\n\n  // A degraded index must not dominate. A healthy vector leg fills its limit; when it returns\n  // almost nothing its few hits are stale residue, so down-weight them instead of letting\n  // their high cosine scores outrank good keyword matches. Goes back to 1 once reindexed.\n  const trusted = diag.wikiVec >= 5\n  diag.wikiVecTrusted = trusted\n  const W = trusted ? 1 : 0.35\n  const all = Object.keys(byId).map(function (k) {\n    const r = byId[k]\n    r.score = Math.max(r.sv * W, r.sk, r.sf)\n    return r\n  })\n  all.sort(function (a, b) { return b.score - a.score })\n  const top = all.slice(0, Math.max(1, d2.param('maxFuentes', 6)))\n  return { rows: top, all: all.length, diag: diag, ts: ts }\n}\n\nfunction metodo(r) {\n  if (r.sf > 0) return ['faq', 'FAQ semántica']\n  if (r.sv > 0 && r.sk > 0) return ['b', 'Wiki · ambas']\n  if (r.sv > 0) return ['v', 'Wiki · semántica']\n  return ['t', 'Wiki · texto']\n}\n\nfunction card(r, i, mk) {\n  const sc = ((typeof r.score === 'number' ? r.score : Math.max(r.sv, r.sk, r.sf)) * 10).toFixed(1)\n  const m = metodo(r)\n  return '<article class=\"src\" data-key=\"' + attr(r._id || i) + '\">'\n    + '<header class=\"src-h\"><h3 class=\"src-t\">' + esc(r.title) + '</h3><span class=\"src-s\">' + esc(sc) + '</span></header>'\n    + '<div class=\"src-m\"><span class=\"src-p src-p-' + m[0] + '\">' + esc(m[1]) + '</span>'\n    + (r.category ? '<span class=\"src-c\">' + esc(r.category) + '</span>' : '') + '</div>'\n    + '<p class=\"src-b\">' + esc(r.content) + '</p>'\n    + (r.article ? '<a class=\"src-l\" href=\"' + attr(beedooUrl(mk, r.article)) + '\" target=\"_blank\" rel=\"noopener\" data-article=\"' + attr(r.article) + '\">contenido en Beedoo</a>' : '')\n    + '</article>'\n}\n\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '.app{--cream:rgb(254,251,244);--ink:#162b37;--ink2:rgba(22,43,55,.62);--line:#e3ddd2;--olive:rgb(230,238,189);--ok:rgb(125,230,28);--off:rgb(200,46,0);--accent:var(--acc,#FF6C0E);display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.55 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;position:relative;overflow:hidden}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:18px;padding:14px 22px;border-bottom:1px solid var(--line);background:#fff}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}'\n    + '.brand b{font-size:22px;font-weight:700;letter-spacing:.5px}'\n    + '.brand span{font-size:12px;color:var(--ink2)}'\n    + '.chips{display:flex;gap:6px;flex:none}'\n    + '.chip{flex:none;border:0;border-radius:16px;padding:6px 14px;font:600 12px/1 inherit;color:#fff;background:var(--off);cursor:pointer;opacity:.5}'\n    + '.chip[aria-pressed=\"true\"]{background:var(--ok);color:var(--ink);opacity:1}'\n    + '.spacer{flex:1 1 auto;min-width:8px}'\n    + '.mk{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink2);flex:none}'\n    + '.mk select{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}'\n    + '.lock{flex:none;border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-weight:700;background:#faf6ef}'\n    + '.who{font-size:12px;color:var(--ink2);text-align:right;line-height:1.3;flex:none}'\n    + '.who b{display:block;color:var(--ink);font-size:13px}'\n    + '.ico{flex:none;width:34px;height:34px;padding:0;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;font:700 15px/1 inherit;display:grid;place-items:center}'\n    + '.ico:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.pv{flex:none;background:#fff6e6;border-bottom:1px solid #f0dcb4;color:#7a5a12;font-size:12px;padding:7px 22px}'\n    + '.warn{flex:none;background:#fdf0f0;border-bottom:1px solid #f3cccc;color:#8c2f2f;font-size:12px;padding:7px 22px;display:flex;gap:8px;align-items:baseline}'\n    + '.warn b{font-weight:700}'\n    + '.main{flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,32%,392px);min-height:0}'\n    + '.left{display:flex;flex-direction:column;min-height:0;padding:20px 22px;gap:14px}'\n    + '.ask label{display:block;font-weight:600;margin-bottom:6px}'\n    + '.q{width:100%;height:96px;resize:none;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}'\n    + '.q:focus{outline:2px solid var(--accent);outline-offset:-1px}'\n    + '.ask-r{display:flex;align-items:center;gap:12px;margin-top:8px}'\n    + '.hint{font-size:12px;color:var(--ink2)}'\n    + '.send{flex:none;margin-left:auto;border:0;border-radius:8px;padding:10px 22px;background:var(--ink);color:#fff;font:600 14px/1 inherit;cursor:pointer}'\n    + '.send:disabled{opacity:.4;cursor:default}'\n    + '.log{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}'\n    + '.you{align-self:flex-end;max-width:82%;background:#fff;border:1px solid var(--line);border-radius:12px 12px 2px 12px;padding:10px 14px}'\n    + '.bot{display:flex;gap:10px;max-width:94%}'\n    + '.av{width:34px;height:34px;flex:none;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font:700 13px/1 inherit}'\n    + '.bub{background:var(--olive);border-radius:2px 16px 16px 16px;padding:12px 16px;min-width:0}'\n    + '.bub p{margin:0 0 8px}.bub p:last-child{margin:0}.bub ul,.bub ol{margin:6px 0;padding-left:20px}'\n    + '.bub h1,.bub h2,.bub h3{font-size:15px;margin:8px 0 4px}.bub code{background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px}'\n    + '.bub blockquote{margin:8px 0;padding-left:10px;border-left:3px solid rgba(22,43,55,.25);color:var(--ink2)}'\n    + '.cur{display:inline-block;width:7px;height:15px;background:var(--ink);vertical-align:-2px;animation:bl .9s steps(2) infinite}'\n    + '@keyframes bl{50%{opacity:0}}'\n    + '.acts{display:flex;gap:8px;margin-top:10px}'\n    + '.act{border:1px solid rgba(22,43,55,.22);background:rgba(255,255,255,.6);border-radius:7px;padding:5px 11px;font:600 12px/1.4 inherit;color:var(--ink);cursor:pointer}'\n    + '.act:hover{border-color:var(--ink)}'\n    + '.empty{margin:auto;text-align:center;color:var(--ink2);max-width:320px;font-size:13px}'\n    + '.empty b{display:block;margin-bottom:8px;opacity:.3}.empty svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.6}'\n    + '.err{background:#fff0ef;border:1px solid rgba(255,60,51,.45);color:#b3261e;border-radius:9px;padding:9px 12px;font-size:13px}'\n    + '.right{border-left:1px solid var(--line);background:#fffdf9;display:flex;flex-direction:column;min-height:0}'\n    + '.rh{display:flex;align-items:baseline;gap:8px;padding:16px 18px 8px}'\n    + '.rh h2{margin:0;font-size:11px;letter-spacing:1.3px;text-transform:uppercase;color:var(--ink2)}'\n    + '.rh span{font-size:11px;color:var(--ink2);margin-left:auto}'\n    + '.srcs{flex:1;min-height:0;overflow:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:10px}'\n    + '.src{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}'\n    + '.src-h{display:flex;gap:10px;align-items:flex-start}'\n    + '.src-t{flex:1;margin:0;font-size:13.5px;font-weight:700;line-height:1.35}'\n    + '.src-s{font-size:19px;font-weight:700;color:var(--accent);line-height:1;flex:none}'\n    + '.src-m{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}'\n    + '.src-p{font-size:10px;letter-spacing:.5px;border-radius:5px;padding:2px 7px;font-weight:700}'\n    + '.src-p-v{background:#e6eebd;color:#4a5a17}.src-p-t{background:#dde9f5;color:#1e4a70}.src-p-b{background:#f6e2cd;color:#8a4a10}.src-p-faq{background:#e7dcf5;color:#4b2a78}'\n    + '.src-c{font-size:10px;letter-spacing:.6px;background:#f2ede4;border-radius:5px;padding:2px 7px;color:var(--ink2)}'\n    + '.src-b{margin:8px 0 0;font-size:12.5px;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}'\n    + '.src-l{display:inline-block;margin-top:9px;font-size:12px;font-weight:600;color:var(--accent);text-decoration:underline}'\n    + '.ft{flex:none;display:flex;align-items:center;gap:16px;padding:10px 22px;border-top:1px solid var(--line);background:#fff;font-size:12px;color:var(--ink2)}'\n    + '.hist{flex:none;margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 14px;font:600 12px/1 inherit;color:var(--ink);cursor:pointer}'\n    + '.hist:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.scrim{position:absolute;inset:0;background:rgba(0,0,0,.44);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:9}'\n    + '.dlg{background:var(--cream);border-radius:20px;box-shadow:0 18px 50px rgba(0,0,0,.28);position:relative;max-width:92%;max-height:88%;display:flex;flex-direction:column}'\n    + '.dlg-h{display:flex;align-items:center;padding:22px 24px 12px}'\n    + '.dlg-h h2{margin:0;font-size:21px;font-weight:700}'\n    + '.x{margin-left:auto;border:0;background:transparent;font:700 20px/1 inherit;color:var(--ink);cursor:pointer;padding:2px 6px}'\n    + '.dlg-b{padding:0 24px 24px;overflow:auto;min-height:0}'\n    + '.w-help{width:660px}'\n    + '.w-hist{width:1000px;height:78%;display:grid;grid-template-columns:290px 1fr;grid-template-rows:auto minmax(0,1fr);gap:14px 18px;padding:0 24px 24px;overflow:hidden}'\n    + '.hlist{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px}'\n    + '.hitem{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:11px 13px;cursor:pointer;font:inherit;color:var(--ink)}'\n    + '.hitem:hover{background:#faf6ef}.hitem[aria-selected=\"true\"]{background:var(--olive)}'\n    + '.hitem b{display:block;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.hitem span{font-size:11px;color:var(--ink2)}'\n    + '.hdet{overflow:auto;padding-right:6px;display:flex;flex-direction:column;gap:12px}'\n    + '.w-vote{width:700px}'\n    + '.scale{display:flex;gap:11px;margin:4px 0 12px}'\n    + '.dot{flex:none;width:42px;height:42px;padding:0;border-radius:50%;border:1px solid rgba(22,43,55,.35);background:#fff;color:var(--ink);font:700 17px/1 inherit;cursor:pointer}'\n    + '.dot[aria-pressed=\"true\"]{background:var(--ink);color:#fff}'\n    + '.vdesc{min-height:38px;font-size:13px;color:var(--ink2);white-space:pre-line}'\n    + '.vin{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;font:inherit;background:#fff;color:var(--ink)}'\n    + '.vrow{display:flex;align-items:center;gap:12px;margin-top:14px}'\n    + '.tag{font-size:11px;border:1px dashed rgba(22,43,55,.35);border-radius:6px;padding:2px 7px;color:var(--ink2)}'\n    + '@media (max-width:900px){'\n    + '.hd{gap:12px;padding:12px 16px}.who{display:none}.brand b{font-size:19px}'\n    + '.left{padding:16px;flex:1 1 auto;min-height:0}'\n    + '.main{display:flex;flex-direction:column}'\n    + '.right{flex:0 0 auto;border-left:0;border-top:1px solid var(--line);max-height:42%}'\n    + '.w-hist{width:96vw;grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr)}'\n    + '.w-help,.w-vote{width:94vw}.ft{gap:10px;padding:8px 16px}'\n    + '}',\n\n  render(d2) {\n    const u = user(d2)\n    const mk = market(d2, u)\n    const opts = marketOptions(d2, u)\n    const rows = d2.state.rows || []\n    const dg = d2.state.diag || null\n    const ans = answerText(d2)\n    const bz = busy(d2)\n    const ok = known(d2)\n    const marked = d2.lib('marked@12.0.0')\n    const md = function (t) {\n      if (!t) return ''\n      if (!marked) return '<p>' + esc(t).replace(/\\n/g, '<br>') + '</p>'\n      try { return marked.parse(t) } catch (e) { return '<p>' + esc(t) + '</p>' }\n    }\n\n    const selector = showSelector(d2, u)\n      ? '<select class=\"sel\">' + opts.map(function (c) { return '<option value=\"' + attr(c) + '\"' + (c === mk ? ' selected' : '') + '>' + esc(c) + '</option>' }).join('') + '</select>'\n      : '<span class=\"lock\" title=\"Tu usuario está asignado a un solo mercado\">' + esc(mk || '--') + '</span>'\n\n    const conversa = (!d2.state.pregunta && !ans)\n      ? '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\"><path d=\"M21 12a8 8 0 0 1-8 8H7l-4 3v-5a8 8 0 0 1 8-11h2a8 8 0 0 1 8 5z\" stroke-linejoin=\"round\"/></svg></b>Escribí la duda del cliente y NASVI busca en las wikis por vos.</div>'\n      : (d2.state.pregunta ? '<div class=\"you\">' + esc(d2.state.pregunta) + '</div>' : '')\n        + ((ans || bz)\n          ? '<div class=\"bot\"><div class=\"av\">N</div><div><div class=\"bub\">' + md(ans) + (bz ? '<span class=\"cur\"></span>' : '') + '</div>'\n            + (!bz && ans ? '<div class=\"acts\"><button class=\"act copy\">Copiar</button><button class=\"act vote\">Votar</button></div>' : '')\n            + '</div></div>'\n          : '')\n\n    const fuentes = rows.length\n      ? rows.map(function (r, i) { return card(r, i, mk) }).join('')\n      : '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\"><path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" stroke-linejoin=\"round\"/><path d=\"M14 3v5h5M9 13h6M9 17h4\" stroke-linecap=\"round\"/></svg></b>Realizá tu consulta para ver las wikis relacionadas aquí.</div>'\n\n    // Surface the broken index instead of hiding it behind a plausible answer.\n    const degraded = dg && dg.wikiVec <= 2 && (dg.wikiTxt || 0) > dg.wikiVec\n    const warn = degraded\n      ? '<div class=\"warn\"><b>Índice semántico de wikis degradado.</b><span>La búsqueda vectorial devolvió ' + dg.wikiVec + ' documento(s) y la de texto encontró ' + dg.wikiTxt + '. Se responde con el resultado combinado' + (dg.faqVec ? ' más ' + dg.faqVec + ' FAQ curadas' : '') + '.</span></div>'\n      : ''\n\n    let overlay = ''\n    if (d2.state.panel === 'help') {\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-help\"><div class=\"dlg-h\"><h2>NASVI: El Agente del Agente</h2><button class=\"x\">&#215;</button></div><div class=\"dlg-b bub\" style=\"background:transparent\">' + md(HELP_MD) + '</div></div></div>'\n    } else if (d2.state.panel === 'hist') {\n      const hs = history(d2)\n      const sel = d2.state.hsel || (hs[0] && String(hs[0]._id || 0))\n      const cur = hs.filter(function (r, i) { return String(r._id || i) === String(sel) })[0] || hs[0]\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-hist\"><div class=\"dlg-h\" style=\"grid-column:1/-1;padding:20px 0 0\"><h2>Historial</h2><button class=\"x\">&#215;</button></div>'\n        + '<div class=\"hlist\">' + (hs.length ? hs.map(function (r, i) {\n          const id = String(r._id || i)\n          return '<button class=\"hitem\" data-key=\"' + attr(id) + '\" data-h=\"' + attr(id) + '\" aria-selected=\"' + (id === String(sel) ? 'true' : 'false') + '\"><b>' + esc(r.pergunta) + '</b><span>' + esc(rel(r.createdAt)) + '</span></button>'\n        }).join('') : '<div class=\"empty\" style=\"padding:20px\">Sin consultas todavía.</div>') + '</div>'\n        + '<div class=\"hdet\">' + (cur ? '<div class=\"you\" style=\"align-self:flex-start;max-width:100%\">' + esc(cur.pergunta) + '</div><div class=\"bot\"><div class=\"av\">N</div><div class=\"bub\">' + md(cur.resposta) + '</div></div>' : '') + '</div></div></div>'\n    } else if (d2.state.panel === 'vote') {\n      const g = d2.state.grade || 0\n      const lab = VOTE[g]\n      overlay = '<div class=\"scrim\" data-close><div class=\"dlg w-vote\"><div class=\"dlg-h\"><h2>¿Qué tan útil fue la respuesta?</h2><button class=\"x\">&#215;</button></div><div class=\"dlg-b\">'\n        + '<div class=\"scale\">' + [1, 2, 3, 4, 5].map(function (n) { return '<button class=\"dot\" data-key=\"' + n + '\" data-g=\"' + n + '\" aria-pressed=\"' + (n === g ? 'true' : 'false') + '\">' + n + '</button>' }).join('') + '</div>'\n        + '<div class=\"vdesc\">' + (lab ? esc(lab[0]) + '\\n' + esc(lab[1]) : '') + '</div>'\n        + '<input class=\"vin\" placeholder=\"Comentarios (opcional)\" value=\"' + attr(d2.state.vcomment || '') + '\"/>'\n        + '<div class=\"vrow\">' + (d2.param('telemetry') ? '' : '<span class=\"tag\">telemetría desactivada — no se guarda</span>') + '<button class=\"send vsend\"' + (g ? '' : ' disabled') + '>Enviar</button></div>'\n        + '</div></div></div>'\n    }\n\n    return '<div class=\"app\" data-ready style=\"--acc:' + attr(d2.param('accent', '#FF6C0E')) + '\">'\n      + '<header class=\"hd\">'\n      + '<div class=\"brand\"><b>NASVI</b><span>Copiloto activo</span></div>'\n      + '<div class=\"chips\">' + ORIGENES.map(function (o) { return '<button class=\"chip\" data-o=\"' + o[0] + '\" aria-pressed=\"' + ((d2.state.origen || 'chat') === o[0] ? 'true' : 'false') + '\">' + o[1] + '</button>' }).join('') + '</div>'\n      + '<div class=\"spacer\"></div>'\n      + '<div class=\"mk\"><span>Mercado</span>' + selector + '</div>'\n      + '<div class=\"who\"><b>' + esc(ok ? (u.name || 'Asesor') : 'Vista previa') + '</b>' + esc(ok ? (u.email || '') : 'operador no identificado') + '</div>'\n      + '<button class=\"ico help\" title=\"Ayuda\">?</button>'\n      + '</header>'\n      + (ok ? '' : '<div class=\"pv\">Vista previa: la sesión actual no corresponde a un operador de Agents Tools, así que el mercado se elige a mano.</div>')\n      + warn\n      + '<div class=\"main\">'\n      + '<section class=\"left\">'\n      + '<div class=\"ask\"><label for=\"q\">¿Cuál es la pregunta del cliente?</label>'\n      + '<textarea class=\"q\" id=\"q\" placeholder=\"Escribí la duda tal como te la hizo la consultora…\"' + (bz ? ' disabled' : '') + '></textarea>'\n      + '<div class=\"ask-r\"><span class=\"hint\">Enter envía &middot; Shift+Enter salta línea</span>'\n      + ((ok && !isDemo(d2)) ? '' : '<button class=\"act try\">Probar con una consulta de ejemplo</button>')\n      + '<button class=\"send go\"' + (bz ? ' disabled' : '') + '>' + (bz ? 'Buscando…' : 'Enviar pregunta') + '</button></div></div>'\n      + (d2.state.err ? '<div class=\"err\">' + esc(d2.state.err) + '</div>' : '')\n      + '<div class=\"log\">' + conversa + '</div>'\n      + '</section>'\n      + '<aside class=\"right\"><div class=\"rh\"><h2>Fuentes</h2>' + (dg ? '<span>corpus ' + esc(dg.corpus) + '</span>' : '') + '</div><div class=\"srcs\">' + fuentes + '</div></aside>'\n      + '</div>'\n      + '<footer class=\"ft\">'\n      + '<span>' + (d2.state.duracion ? (d2.state.duracion / 1000).toFixed(1) + ' s' : '--') + '</span>'\n      + '<span>' + rows.length + ' fuentes' + (dg ? ' de ' + (d2.state.total || rows.length) : '') + '</span>'\n      + (dg ? '<span>wiki ' + dg.wikiVec + '/' + dg.wikiTxt + ' · faq ' + dg.faqVec + '</span>' : '')\n      + (dg && dg.chars ? '<span>' + Math.round(dg.chars / 1000) + 'k car. al prompt</span>' : '')\n      + '<span>Mercado ' + esc(mk || '--') + '</span>'\n      + (isDemo(d2) ? '<span class=\"tag\">demo</span>' : '')\n      + (d2.param('telemetry') ? '' : '<span class=\"tag\">telemetría off</span>')\n      + '<button class=\"hist\">Historial</button>'\n      + '</footer>'\n      + overlay\n      + '</div>'\n  },\n\n  mounted(d2) {\n    const r0 = d2.data('regiones'); if (r0) r0.refresh()\n    const h0 = d2.data('historial'); if (h0) h0.refresh()\n\n    const demo = async function (q, t0) {\n      d2.setState({ busy: true, answer: '', rows: [], diag: null })\n      await settle(400)\n      d2.setState({ rows: MOCK_ROWS.map(function (r) { r.score = Math.max(r.sv, r.sk, r.sf); return r }), total: MOCK_ROWS.length, diag: { terms: termsOf(q), corpus: 'compartido', wikiVec: 1, wikiTxt: 23, faqVec: 4, chars: 4200 } })\n      let i = 0\n      await new Promise(function (done) {\n        const id = setInterval(function () {\n          i += 4\n          d2.state.answer = MOCK_ANSWER.slice(0, i)\n          if (i >= MOCK_ANSWER.length) { clearInterval(id); done() }\n        }, 16)\n        d2.onUnmount(function () { clearInterval(id) })\n      })\n      d2.setState({ busy: false, duracion: Date.now() - t0 })\n    }\n\n    const persist = async function (q) {\n      const u = user(d2), mk = market(d2, u)\n      const mon = d2.data('historial')\n      if (mon) await mon.create({ email: u.email, name: u.name, pergunta: q, resposta: answerText(d2), country: mk, origen: d2.state.origen || 'chat', duracion: d2.state.duracion, user_type: isEcom(u) ? 'ecommerce' : undefined })\n      const ev = d2.data('eventos')\n      if (ev) await ev.create({ event: 'assistant_ask', email: u.email, nome: u.name, country: mk, payload: { article: (d2.state.rows && d2.state.rows[0] || {}).article } })\n    }\n\n    const ask = async function () {\n      const el = d2.$('.q'); if (!el) return\n      const q = (el.value || '').trim(); if (!q) return\n      const t0 = Date.now()\n      el.value = ''\n      d2.setState({ pregunta: q, err: '', duracion: 0, grade: 0, vcomment: '', rows: [], diag: null })\n      if (isDemo(d2)) { await demo(q, t0); return }\n      try {\n        const u = user(d2), mk = market(d2, u)\n        if (!mk) throw new Error('No hay mercado seleccionado.')\n        const out = await retrieve(d2, q, mk, isEcom(u))\n        const maxC = d2.param('maxCaracteres', 1200)\n        const ctx = out.rows.map(function (r) {\n          return { fuente: r.origen === 'faq' ? 'FAQ' : 'Wiki', title: r.title, categoria: r.category, articulo: r.article, contenido: excerptOf(r.content, out.ts, maxC) }\n        })\n        const payload = JSON.stringify(ctx)\n        out.diag.chars = payload.length\n        d2.setState({ rows: out.rows, total: out.all, diag: out.diag })\n        const a = bot(d2)\n        if (!a) throw new Error('El parámetro \"assistant\" no está conectado.')\n        await a.ask(PROMPT.replace('{q}', q), { context: payload })\n        d2.state.duracion = Date.now() - t0\n        if (d2.param('telemetry')) await persist(q)\n      } catch (e) {\n        d2.state.err = 'No se pudo completar la búsqueda: ' + String((e && e.message) || e)\n      }\n    }\n\n    d2.on('.try', 'click', function () {\n      const el = d2.$('.q')\n      if (el) el.value = '¿Por qué el pedido quedó retenido por límite de crédito?'\n      ask()\n    })\n    d2.on('.go', 'click', ask)\n    d2.on('.q', 'keydown', function (e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); ask() } })\n    d2.on('.chip', 'click', function (e, el) { d2.state.origen = el.dataset.o })\n    d2.on('.sel', 'change', function (e, el) { d2.state.region = el.value })\n    d2.on('.help', 'click', function () { d2.state.panel = 'help' })\n    d2.on('.hist', 'click', function () { d2.state.panel = 'hist' })\n    d2.on('.vote', 'click', function () { d2.setState({ panel: 'vote', grade: 0, vcomment: '' }) })\n    d2.on('.x', 'click', function () { d2.state.panel = null })\n    d2.on('.scrim', 'click', function (e, el) { if (e.target === el) d2.state.panel = null })\n    d2.on('.hitem', 'click', function (e, el) { d2.state.hsel = el.dataset.h })\n    d2.on('.dot', 'click', function (e, el) { d2.state.grade = Number(el.dataset.g) })\n    d2.on('.vin', 'input', function (e, el) { d2.state.vcomment = el.value })\n    d2.on('.src-l', 'click', function (e, el) {\n      if (!d2.param('telemetry')) return\n      const ev = d2.data('eventos'), u = user(d2)\n      if (ev) ev.create({ event: 'wiki_view', email: u.email, nome: u.name, country: market(d2, u), payload: { article: el.dataset.article } })\n    })\n    d2.on('.vsend', 'click', async function () {\n      const g = d2.state.grade; if (!g) return\n      if (d2.param('telemetry')) {\n        const u = user(d2), mk = market(d2, u)\n        const payload = { message: d2.state.pregunta, answer: answerText(d2), grade: g, comment: d2.state.vcomment || '' }\n        const ev = d2.data('eventos')\n        if (ev) {\n          await ev.create({ event: 'voting', email: u.email, nome: u.name, country: mk, payload: payload })\n          if (g === 1) await ev.create({ event: 'answer_not_found', email: u.email, nome: u.name, country: mk, payload: payload })\n        }\n        const enc = d2.data('encuestas')\n        if (enc) await enc.create({ country: mk, email: u.email, reaction: g >= 4 ? 'like' : 'dislike', comments: d2.state.vcomment || '' })\n      }\n      d2.setState({ panel: null })\n    })\n    d2.on('.copy', 'click', function (e, el) {\n      const t = answerText(d2); if (!t) return\n      try { navigator.clipboard.writeText(t) } catch (err) { }\n      el.textContent = 'Copiado'\n      setTimeout(function () { try { el.textContent = 'Copiar' } catch (e2) { } }, 1400)\n    })\n    d2.on(document, 'keydown', function (e) { if (e.key === 'Escape' && d2.state.panel) d2.state.panel = null })\n\n    if (isDemo(d2) && !d2.state.pregunta) {\n      setTimeout(function () {\n        const el = d2.$('.q')\n        if (el && !d2.state.pregunta) { el.value = '¿Por qué el pedido quedó retenido por límite de crédito?'; ask() }\n      }, 250)\n    }\n  },\n\n  updated(d2) {\n    const log = d2.$('.log')\n    if (log) log.scrollTop = log.scrollHeight\n  }\n}\n\n// Spanish relative time — d2.fmt.relative follows the browser locale, which is English here.\nfunction rel(ts) {\n  const t = typeof ts === 'number' ? ts : Date.parse(ts)\n  if (!t) return ''\n  const m = Math.round((Date.now() - t) / 60000)\n  if (m < 1) return 'recién'\n  if (m < 60) return 'hace ' + m + (m === 1 ? ' minuto' : ' minutos')\n  const h = Math.round(m / 60)\n  if (h < 24) return 'hace ' + h + (h === 1 ? ' hora' : ' horas')\n  const d = Math.round(h / 24)\n  if (d === 1) return 'ayer'\n  if (d < 30) return 'hace ' + d + ' días'\n  return new Date(t).toLocaleDateString('es')\n}\n"}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"telemetry":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"telemetry"}}}},"mxBaseSeparada":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"mxBaseSeparada"}}}},"assistant":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant"}}}},"faqs":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"faqs"}}}},"faqsMx":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"faqsMx"}}}},"faqsCuradas":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"faqsCuradas"}}}},"usuarios":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"usuarios"}}}},"regiones":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"regiones"}}}},"historial":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"historial"}}}},"eventos":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"eventos"}}}},"encuestas":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"encuestas"}}}},"autenticacion":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autenticacion"}}}},"maxFuentes":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"maxFuentes"}}}},"maxCaracteres":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"maxCaracteres"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"6a8cb55995d9f0fa3ff0ca5a","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"DashboardNasviV2","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// DashboardNasviV2 — supervisor dashboard for NASVI.\n// Same 8 metrics + 5 KPIs as the legacy screen. Nothing legacy is edited, but every known\n// defect of the legacy screen is an acceptance requirement here (see PLAN):\n//  · legacy sees only AR/MX (Store Switch, 2 cases) -> market selector over the `regions` table\n//  · legacy mixes two meanings of `country`        -> we use the SERVED MARKET on both sides\n//  · legacy NPS chart hardcoded to 2025-05-17..08-23 / AR -> dynamic, honours the filters\n//  · legacy guard (\"item._id\" != \"\") is a string literal -> real reference\n//  · legacy \"Palabras\" has no slice, so it is not a top-N -> real top-N\n//  · legacy KPI4 groups by country then reads .data.0    -> aggregate once, name the market\n//  · legacy pushes filters into tables lacking the column -> each pipeline uses its own columns\n//  · legacy runs 4 dead aggregations per load             -> not reproduced\n\nconst HUE = { claro: ['#2a78d6', '#eb6834', '#1baf7a'], escuro: ['#3987e5', '#d95926', '#199e70'] }\nconst MOCK_REG = ['AR', 'CL', 'CO', 'EC', 'MX', 'PE']\n\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\nfunction nf(n, d) { const v = Number(n); if (!isFinite(v)) return '--'; return v.toLocaleString('es', { minimumFractionDigits: d || 0, maximumFractionDigits: d || 0 }) }\nfunction pct(a, b, d) { if (!b) return '--'; return nf((a / b) * 100, d == null ? 1 : d) + '%' }\nfunction iso(dt) { return new Date(dt).toISOString().slice(0, 10) }\n\nfunction hoje() { return new Date() }\nfunction haDias(n) { const d = hoje(); d.setDate(d.getDate() - n); return d }\n\nfunction regionCodes(d2) {\n  if (isDemo(d2)) return MOCK_REG\n  const ds = d2.data('regiones')\n  const r = ds ? ds.records().map(function (x) { return x.country_code }).filter(Boolean) : []\n  return r.length ? r.slice().sort() : MOCK_REG\n}\nfunction mercado(d2) { return d2.state.mk || regionCodes(d2)[0] || 'AR' }\nfunction desde(d2) { return d2.state.desde || iso(haDias(30)) }\nfunction hasta(d2) { return d2.state.hasta || iso(hoje()) }\n\n/*ENGINE_START*/\n// Every pipeline runs server-side and uses ONLY columns its own table has — the legacy screen\n// pushes `email`/`user_type` into tables that lack them, which silently zeroes those charts.\nasync function agg(d2, nome, pipeline) {\n  const h = d2.data(nome)\n  if (!h) throw new Error('parámetro \"' + nome + '\" no conectado')\n  // The dashboard DataSets carry a baked-in filter (current week + country from the Store, which\n  // only knows AR/MX). Clear it so the market is OUR parameter, not the app domain's.\n  h.filter({})\n  await new Promise(function (r) { setTimeout(r, 150) })\n  const res = await h.aggregate(pipeline)\n  // the runtime returns an envelope, not a bare array — normalising here keeps every caller honest\n  if (Array.isArray(res)) return res\n  if (res && Array.isArray(res.data)) return res.data\n  if (res && Array.isArray(res.result)) return res.result\n  return []\n}\n\nfunction janela(d2) {\n  return { $gte: desde(d2) + 'T00:00:00.000Z', $lte: hasta(d2) + 'T23:59:59.999Z' }\n}\n\nasync function carregar(d2) {\n  if (isDemo(d2)) { d2.setState({ carregando: false, dados: mockDados(), erros: {} }); return }\n  d2.setState({ carregando: true, erro: '', erros: {} })\n  const mk = mercado(d2), top = Math.max(3, d2.param('maxTop', 10))\n  const per = { createdAt: janela(d2) }\n  const bm = Object.assign({}, per, { country: mk })   // monitoring: country = served market\n  const be = Object.assign({}, per, { country: mk })   // events: country = app domain (legacy)\n  const D = {}, erros = {}\n\n  // A dataset that never settles must not freeze the whole panel. Measured: one of the bound\n  // datasets hangs indefinitely instead of rejecting, which left Promise.all pending forever\n  // and the screen stuck on \"loading\" with no error to show.\n  function job(chave, fn) {\n    return Promise.race([\n      fn(),\n      new Promise(function (_, rej) {\n        // 12 s was too tight: a $count over ~27k rows legitimately takes ~20 s on this endpoint\n        setTimeout(function () { rej(new Error('tiempo agotado (35 s) — el dataset no respondió')) }, 35000)\n      })\n    ]).then(function (v) { D[chave] = v }).catch(function (e) {\n      erros[chave] = String((e && e.message) || e)\n    })\n  }\n  const um = function (rows, campo) { return (rows && rows[0] && rows[0][campo]) || 0 }\n\n  await Promise.all([\n    job('totalConsultas', function () {\n      return agg(d2, 'monitoring', [{ $match: bm }, { $count: 'n' }]).then(function (r) { return um(r, 'n') })\n    }),\n    job('canal', function () {\n      return agg(d2, 'monitoring', [{ $match: Object.assign({}, bm, { origen: { $in: ['chat', 'voz', 'video'] } }) },\n        { $group: { _id: '$origen', n: { $sum: 1 } } }, { $sort: { n: -1 } }])\n    }),\n    job('asesores', function () {\n      return agg(d2, 'monitoring', [{ $match: bm }, { $group: { _id: '$email', n: { $sum: 1 } } },\n        { $sort: { n: -1 } }, { $limit: top }])\n    }),\n    job('duracao', function () {\n      // only strictly positive values: the legacy writer stores dateDiff(undefined, now())\n      return agg(d2, 'monitoring', [{ $match: Object.assign({}, bm, { duracion: { $gt: 0 } }) },\n        { $group: { _id: null, avg: { $avg: '$duracion' }, n: { $sum: 1 } } }])\n    }),\n    job('horas', function () {\n      return agg(d2, 'monitoring', [{ $match: bm },\n        // createdAt is an ISO string here; $hour/$toDate hangs on this endpoint, so slice the\n        // \"HH\" out of the string instead (chars 11-12 of 2026-08-24T18:41:18.380Z)\n        { $group: { _id: { $substrBytes: ['$createdAt', 11, 2] }, n: { $sum: 1 } } }, { $sort: { _id: 1 } }])\n    }),\n    job('wikis', function () {\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'assistant_ask' }) },\n        { $group: { _id: '$payload.article', n: { $sum: 1 } } }, { $sort: { n: -1 } }, { $limit: top + 6 }])\n    }),\n    job('faqs', function () {\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'context' }) },\n        { $group: { _id: '$payload.data', n: { $sum: 1 } } }, { $sort: { n: -1 } }, { $limit: top + 6 }])\n    }),\n    job('categorias', function () {\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'category' }) },\n        { $group: { _id: '$payload.data', n: { $sum: 1 } } }, { $sort: { n: -1 } }, { $limit: top + 6 }])\n    }),\n    job('votos', function () {\n      // group by raw grade and bucket client-side: $switch/$addFields are not reliable here\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'voting' }) },\n        { $group: { _id: '$payload.grade', n: { $sum: 1 } } }, { $sort: { _id: 1 } }])\n    }),\n    job('naoEncontradas', function () {\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'answer_not_found' }) },\n        { $count: 'n' }]).then(function (r) { return um(r, 'n') })\n    }),\n    job('asesoresAtivos', function () {\n      return agg(d2, 'eventos', [{ $match: Object.assign({}, be, { event: 'login' }) },\n        { $group: { _id: '$email' } }, { $count: 'n' }]).then(function (r) { return um(r, 'n') })\n    }),\n    job('asesoresTotal', function () {\n      return agg(d2, 'usuarios', [{ $match: { countries: mk } }, { $count: 'n' }]).then(function (r) { return um(r, 'n') })\n    }),\n    job('palabras', function () {\n      return agg(d2, 'palabras', [{ $match: Object.assign({}, per, { country: mk }) },\n        { $group: { _id: '$word_master', n: { $sum: 1 } } }, { $sort: { n: -1 } }, { $limit: top }])\n    })\n  ])\n\n  // derived, client-side — wrapped so a failure here still commits the state and surfaces the\n  // per-metric errors, instead of leaving the screen stuck on \"loading\" with nothing to show\n  try {\n  const dur = (D.duracao || [])[0]\n  D.duracaoMedia = dur && dur.n ? dur.avg : 0\n  D.duracaoAmostra = dur ? dur.n : 0\n  const vt = Array.isArray(D.votos) ? D.votos : []\n  let soma = 0, qtd = 0, faixas = { '1-2': 0, '3': 0, '4-5': 0 }\n  vt.forEach(function (v) {\n    const g = Number(v._id), n = Number(v.n) || 0\n    if (!isFinite(g)) return\n    soma += g * n; qtd += n\n    if (g <= 2) faixas['1-2'] += n; else if (g === 3) faixas['3'] += n; else faixas['4-5'] += n\n  })\n  D.notaMedia = qtd ? soma / qtd : 0\n  D.votosTotal = qtd\n  D.votos = qtd\n  D.faixas = [{ _id: '1-2 Detractores', n: faixas['1-2'] }, { _id: '3 Neutros', n: faixas['3'] }, { _id: '4-5 Promotores', n: faixas['4-5'] }]\n\n  // real guard against null/empty ids — the legacy one compares the string \"item._id\"\n  const limpa = function (rows) {\n    return (rows || []).filter(function (r) { return r._id != null && String(r._id).trim() !== '' }).slice(0, top)\n  }\n  D.wikis = limpa(D.wikis); D.faqs = limpa(D.faqs); D.categorias = limpa(D.categorias)\n  } catch (e) { erros.derivados = String((e && e.message) || e) }\n\n  d2.setState({ carregando: false, dados: D, erros: erros })\n}\n\nfunction mockDados() {\n  return {\n    totalConsultas: 4820, asesoresAtivos: 34, asesoresTotal: 51, naoEncontradas: 212,\n    duracaoMedia: 11400, duracaoAmostra: 480, notaMedia: 4.1, votos: 318,\n    canal: [{ _id: 'chat', n: 3120 }, { _id: 'voz', n: 1210 }, { _id: 'video', n: 490 }],\n    asesores: [{ _id: 'ana@natura.net', n: 210 }, { _id: 'jose@natura.net', n: 188 }, { _id: 'lu@natura.net', n: 141 }, { _id: 'mar@natura.net', n: 97 }, { _id: 'rob@natura.net', n: 63 }],\n    horas: [{ _id: 8, n: 120 }, { _id: 9, n: 260 }, { _id: 10, n: 410 }, { _id: 11, n: 480 }, { _id: 12, n: 300 }, { _id: 13, n: 190 }, { _id: 14, n: 420 }, { _id: 15, n: 510 }, { _id: 16, n: 470 }, { _id: 17, n: 330 }, { _id: 18, n: 180 }],\n    wikis: [{ _id: '478306', n: 84 }, { _id: '215131', n: 61 }, { _id: '476936', n: 44 }, { _id: '430161', n: 30 }],\n    faqs: [{ _id: 'DEVUELTO A SURCURSAL', n: 71 }, { _id: 'ACTUALIZACIÓN DE DATOS', n: 55 }, { _id: 'PAGOS', n: 38 }],\n    categorias: [{ _id: 'PEDIDOS', n: 190 }, { _id: 'REGISTRO', n: 142 }, { _id: 'PAGOS', n: 88 }, { _id: 'PRODUCTOS', n: 51 }],\n    faixas: [{ _id: '1-2 Detractores', n: 42 }, { _id: '3 Neutros', n: 61 }, { _id: '4-5 Promotores', n: 215 }],\n    palabras: [{ _id: 'pedido', n: 310 }, { _id: 'credito', n: 208 }, { _id: 'entrega', n: 174 }, { _id: 'registro', n: 120 }]\n  }\n}\n/*ENGINE_END*/\n\n/*CHARTS_START*/\n// Length encodes magnitude, so top-N charts use ONE colour — a rainbow over a single series is\n// the classic anti-pattern. Only the 3-category charts use the validated categorical trio.\nfunction barrasH(rows) {\n  if (!rows || !rows.length) return '<div class=\"empty\">Sin datos en el período.</div>'\n  const max = Math.max.apply(null, rows.map(function (r) { return Number(r.n) || 0 })) || 1\n  return '<ul class=\"bars\">' + rows.map(function (r) {\n    const n = Number(r.n) || 0\n    const w = Math.max(1.5, (n / max) * 100)\n    return '<li data-key=\"' + attr(r._id) + '\">'\n      + '<span class=\"bl\" title=\"' + attr(r._id) + '\">' + esc(r._id) + '</span>'\n      + '<span class=\"bt\"><i style=\"width:' + w.toFixed(1) + '%\" title=\"' + attr(r._id) + ' — ' + attr(nf(n)) + '\"></i></span>'\n      + '<span class=\"bv\">' + esc(nf(n)) + '</span></li>'\n  }).join('') + '</ul>'\n}\n\nfunction colunas(rows) {\n  const m = {}\n  ;(rows || []).forEach(function (r) { const h = Number(r._id); if (isFinite(h)) m[h] = Number(r.n) || 0 })\n  const arr = []\n  for (let h = 0; h < 24; h++) arr.push({ h: h, n: m[h] || 0 })\n  const total = arr.reduce(function (s, a) { return s + a.n }, 0)\n  if (!total) return '<div class=\"empty\">Sin datos en el período.</div>'\n  const max = Math.max.apply(null, arr.map(function (a) { return a.n })) || 1\n  return '<div class=\"cols\">' + arr.map(function (a) {\n    const ht = a.n ? Math.max(2, (a.n / max) * 100) : 0\n    return '<div class=\"col\" data-key=\"h' + a.h + '\" title=\"' + a.h + ':00 — ' + attr(nf(a.n)) + '\">'\n      + '<i style=\"height:' + ht.toFixed(1) + '%\"></i>'\n      + '<span>' + (a.h % 3 === 0 ? a.h : '') + '</span></div>'\n  }).join('') + '</div>'\n}\n\nfunction segmentos(rows) {\n  const tot = (rows || []).reduce(function (s, r) { return s + (Number(r.n) || 0) }, 0)\n  if (!tot) return '<div class=\"empty\">Sin datos en el período.</div>'\n  const barra = '<div class=\"segbar\">' + rows.map(function (r, i) {\n    const n = Number(r.n) || 0\n    if (!n) return ''\n    return '<i class=\"sg s' + ((i % 3) + 1) + '\" style=\"width:' + ((n / tot) * 100).toFixed(2) + '%\" title=\"'\n      + attr(r._id) + ' — ' + attr(nf(n)) + '\"></i>'\n  }).join('') + '</div>'\n  // direct labels are mandatory here: one of the three light-mode hues sits below 3:1 contrast\n  const leg = '<ul class=\"leg\">' + rows.map(function (r, i) {\n    const n = Number(r.n) || 0\n    return '<li><b class=\"dot s' + ((i % 3) + 1) + '\"></b>' + esc(r._id)\n      + ' <span>' + esc(nf(n)) + ' · ' + ((n / tot) * 100).toFixed(1) + '%</span></li>'\n  }).join('') + '</ul>'\n  return barra + leg\n}\n\nfunction tabela(rows, rotulo) {\n  if (!rows || !rows.length) return '<div class=\"empty\">Sin datos.</div>'\n  return '<table class=\"tb\"><thead><tr><th>' + esc(rotulo || 'Valor') + '</th><th>N</th></tr></thead><tbody>'\n    + rows.map(function (r) {\n      return '<tr data-key=\"' + attr(r._id) + '\"><td>' + esc(r._id) + '</td><td>' + esc(nf(r.n)) + '</td></tr>'\n    }).join('') + '</tbody></table>'\n}\n\nfunction card(d2, id, titulo, sub, corpo, rows, rotulo) {\n  const tab = (d2.state.tabelas || {})[id]\n  const err = (d2.state.erros || {})[id]\n  return '<section class=\"card\"><div class=\"cardhd\"><h3>' + esc(titulo) + '</h3>'\n    + '<button class=\"tgl\" data-t=\"' + attr(id) + '\">' + (tab ? 'gráfico' : 'tabla') + '</button></div>'\n    + '<div class=\"sub\">' + esc(sub) + '</div>'\n    + (err ? '<div class=\"err\">' + esc(err) + '</div>' : (tab ? tabela(rows, rotulo) : corpo))\n    + '</section>'\n}\n/*CHARTS_END*/\n\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '.app{--cream:rgb(254,251,244);--surf:#fff;--ink:#162b37;--ink2:rgba(22,43,55,.62);--line:#e3ddd2;--acc:var(--a,#FF6C0E);--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.5 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;overflow:hidden}'\n    + '@media (prefers-color-scheme:dark){.app{--cream:#1a1a19;--surf:#232322;--ink:#fff;--ink2:#c3c2b7;--line:#3a3a38;--s1:#3987e5;--s2:#d95926;--s3:#199e70}}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:16px;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--surf)}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}'\n    + '.brand b{font-size:20px;font-weight:700}'\n    + '.brand span{font-size:12px;color:var(--ink2)}'\n    + '.sp{flex:1 1 auto}'\n    + '.f{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2);flex:none}'\n    + '.f select,.f input{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surf);color:var(--ink)}'\n    + '.body{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 22px 22px}'\n    + '.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px}'\n    + '.kpi{background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:14px 16px}'\n    + '.kpi .v{font-size:30px;font-weight:700;color:var(--acc);line-height:1.1}'\n    + '.kpi .l{font-size:12px;color:var(--ink2);margin-top:4px}'\n    + '.kpi .n{font-size:10.5px;color:var(--ink2);margin-top:6px;opacity:.85}'\n    + '.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px}'\n    + '.card{background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:14px 16px;min-width:0}'\n    + '.card h3{margin:0 0 2px;font-size:13.5px;font-weight:700}'\n    + '.card .sub{font-size:11px;color:var(--ink2);margin-bottom:10px}'\n    + '.err{background:#fff0ef;border:1px solid rgba(255,60,51,.45);color:#b3261e;border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:12px}'\n    + '.warn{background:#fff6e6;border:1px solid #f0dcb4;color:#7a5a12;border-radius:9px;padding:8px 12px;font-size:12px;margin-bottom:12px}'\n    + '.empty{color:var(--ink2);font-size:12.5px;padding:18px 0;text-align:center}'\n    + '.btn{flex:none;border:1px solid var(--line);background:var(--surf);border-radius:8px;padding:6px 13px;font:600 12px/1 inherit;color:var(--ink);cursor:pointer}'\n    + '.btn:hover{border-color:var(--acc);color:var(--acc)}'\n    + '.cardhd{display:flex;align-items:baseline;gap:8px}'\n    + '.tgl{margin-left:auto;border:0;background:transparent;color:var(--ink2);font:600 11px/1 inherit;cursor:pointer;padding:3px 6px;border-radius:5px}'\n    + '.tgl:hover{color:var(--acc)}'\n    + '.bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}'\n    + '.bars li{display:grid;grid-template-columns:minmax(0,150px) 1fr auto;align-items:center;gap:10px}'\n    + '.bl{font-size:12px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.bt{background:rgba(22,43,55,.07);border-radius:4px;height:14px;overflow:hidden}'\n    + '.bt i{display:block;height:100%;border-radius:0 4px 4px 0;background:var(--s1)}'\n    + '.bars li:hover .bt i{filter:brightness(1.14)}'\n    + '.bv{font-size:12px;font-weight:700;min-width:46px;text-align:right}'\n    + '.cols{display:flex;align-items:flex-end;gap:3px;height:158px}'\n    + '.col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:5px}'\n    + '.col i{display:block;width:100%;background:var(--s1);border-radius:4px 4px 0 0}'\n    + '.col span{font-size:9.5px;color:var(--ink2);height:12px}'\n    + '.col:hover i{filter:brightness(1.14)}'\n    + '.segbar{display:flex;height:22px;border-radius:5px;overflow:hidden;gap:2px}'\n    + '.sg{display:block;height:100%;border-radius:3px}'\n    + '.s1{background:var(--s1)}.s2{background:var(--s2)}.s3{background:var(--s3)}'\n    + '.leg{list-style:none;margin:11px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:14px}'\n    + '.leg li{display:flex;align-items:center;gap:6px;font-size:12px}'\n    + '.leg li span{color:var(--ink2)}'\n    + '.dot{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}'\n    + '.tb{width:100%;border-collapse:collapse;font-size:12px}'\n    + '.tb th{text-align:left;color:var(--ink2);font-weight:600;padding:5px 6px;border-bottom:1px solid var(--line)}'\n    + '.tb td{padding:5px 6px;border-bottom:1px solid var(--line)}',\n\n  render(d2) {\n    const mk = mercado(d2)\n    const regs = regionCodes(d2)\n    const D = d2.state.dados || {}\n    const carregando = d2.state.carregando !== false\n    const top = Math.max(3, d2.param('maxTop', 10))\n\n    const filtros = '<div class=\"f\"><span>Mercado</span><select class=\"selMk\">'\n      + regs.map(function (c) { return '<option value=\"' + attr(c) + '\"' + (c === mk ? ' selected' : '') + '>' + esc(c) + '</option>' }).join('')\n      + '</select></div>'\n      + '<div class=\"f\"><span>De</span><input class=\"inDesde\" type=\"date\" value=\"' + attr(desde(d2)) + '\"/></div>'\n      + '<div class=\"f\"><span>a</span><input class=\"inHasta\" type=\"date\" value=\"' + attr(hasta(d2)) + '\"/></div>'\n      + '<button class=\"btn recarregar\">Actualizar</button>'\n\n    const kpi = function (v, l, n) {\n      return '<div class=\"kpi\"><div class=\"v\">' + esc(v) + '</div><div class=\"l\">' + esc(l) + '</div>'\n        + (n ? '<div class=\"n\">' + esc(n) + '</div>' : '') + '</div>'\n    }\n\n    return '<div class=\"app\" data-ready style=\"--a:' + attr(d2.param('accent', '#FF6C0E')) + '\">'\n      + '<header class=\"hd\"><div class=\"brand\"><b>NASVI</b><span>Panel del supervisor</span></div>'\n      + '<div class=\"sp\"></div>' + filtros + '</header>'\n      + '<div class=\"body\">'\n      + (d2.state.erro ? '<div class=\"err\">' + esc(d2.state.erro) + '</div>' : '')\n      + '<div class=\"kpis\">'\n      + kpi(carregando ? '…' : nf(D.totalConsultas), 'Consultas a NASVI', 'mercado ' + mk)\n      + kpi(carregando ? '…' : (D.asesoresAtivos != null ? pct(D.asesoresAtivos, D.asesoresTotal, 0) : '--'), 'Asesores activos', (D.asesoresAtivos || 0) + ' de ' + (D.asesoresTotal || 0))\n      + kpi(carregando ? '…' : (D.naoEncontradas != null ? pct(D.naoEncontradas, D.totalConsultas, 1) : '--'), 'Respuestas no encontradas', (D.naoEncontradas || 0) + ' eventos')\n      + kpi(carregando ? '…' : (D.duracaoMedia ? nf(D.duracaoMedia / 1000, 2) + ' s' : '--'), 'Duración media', 'serie nueva — el histórico es inválido')\n      + kpi(carregando ? '…' : (D.notaMedia ? nf(D.notaMedia, 2) : '--'), 'Nota media', (D.votos || 0) + ' votos')\n      + '</div>'\n      + (d2.state.erros && Object.keys(d2.state.erros).length ? '<div class=\"warn\">Algunas métricas no cargaron — el detalle aparece en la tarjeta correspondiente.</div>' : '')\n      + '<div class=\"grid\">'\n      + card(d2, 'palabras', 'Palabras más usadas', 'top ' + top + ' del período', barrasH(D.palabras), D.palabras, 'Palabra')\n      + card(d2, 'canal', 'Consultas por clasificación de canal', 'chat · voz · video', segmentos(D.canal), D.canal, 'Canal')\n      + card(d2, 'asesores', 'Top ' + top + ' asesores con más consultas', 'por correo del asesor', barrasH(D.asesores), D.asesores, 'Asesor')\n      + card(d2, 'wikis', 'Top ' + top + ' wikis más frecuentes', 'evento assistant_ask · payload.article', barrasH(D.wikis), D.wikis, 'Artículo')\n      + card(d2, 'horas', 'Horas de mayor actividad', 'hora UTC · franja de 24 h', colunas(D.horas), D.horas, 'Hora')\n      + card(d2, 'faqs', 'Top ' + top + ' contextos más usados', 'evento context · payload.data', barrasH(D.faqs), D.faqs, 'Contexto')\n      + card(d2, 'categorias', 'Top ' + top + ' categorías más frecuentes', 'evento category · payload.data', barrasH(D.categorias), D.categorias, 'Categoría')\n      + card(d2, 'faixas', 'Franjas de votos', '1-2 detractores · 3 neutros · 4-5 promotores', segmentos(D.faixas), D.faixas, 'Franja')\n      + '</div>'\n      + '</div></div>'\n  },\n\n  mounted(d2) {\n    const r = d2.data('regiones'); if (r) r.refresh()\n    d2.on('.selMk', 'change', function (e, el) { d2.setState({ mk: el.value }); carregar(d2) })\n    d2.on('.inDesde', 'change', function (e, el) { d2.state.desde = el.value })\n    d2.on('.inHasta', 'change', function (e, el) { d2.state.hasta = el.value })\n    d2.on('.recarregar', 'click', function () { carregar(d2) })\n    d2.on('.tgl', 'click', function (e, el) {\n      const t = Object.assign({}, d2.state.tabelas || {})\n      t[el.dataset.t] = !t[el.dataset.t]\n      d2.state.tabelas = t\n    })\n    setTimeout(function () { carregar(d2) }, 400)\n  }\n}\n"}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"monitoring":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"monitoring"}}}},"eventos":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"eventos"}}}},"palabras":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"palabras"}}}},"usuarios":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"usuarios"}}}},"regiones":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"regiones"}}}},"autenticacion":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autenticacion"}}}},"maxTop":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"maxTop"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"6ab124872086c2e4340f279e","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"Fechas_De_Cierre_Editor","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    .dce-root {\n      width: 100%;\n      height: 100%;\n      box-sizing: border-box;\n      padding: 16px;\n      font-family: system-ui, sans-serif;\n      overflow-y: auto;\n      background: rgba(255,255,255,0.6);\n      border-radius: 8px;\n    }\n    .dce-empty {\n      color: #555;\n      font-size: 14px;\n      padding: 24px 0;\n      text-align: center;\n    }\n    .dce-title {\n      font-size: 15px;\n      font-weight: 600;\n      margin-bottom: 4px;\n      color: #222;\n    }\n    .dce-subtitle {\n      font-size: 12px;\n      color: #555;\n      margin-bottom: 12px;\n    }\n    .dce-header-row, .dce-row {\n      display: grid;\n      grid-template-columns: 1.2fr 1fr 1fr 32px;\n      gap: 8px;\n      align-items: center;\n      margin-bottom: 6px;\n    }\n    .dce-header-row span {\n      font-size: 11px;\n      font-weight: 600;\n      color: #444;\n      text-transform: uppercase;\n    }\n    .dce-input {\n      width: 100%;\n      box-sizing: border-box;\n      padding: 6px 8px;\n      font-size: 13px;\n      border: 1px solid #b8c4d4;\n      border-radius: 4px;\n      background: #fff;\n    }\n    .dce-input.dce-invalid {\n      border-color: #d9364f;\n      background: #fff0f2;\n    }\n    .dce-remove-btn {\n      width: 28px;\n      height: 28px;\n      border: none;\n      border-radius: 4px;\n      background: #e3e8ef;\n      color: #555;\n      font-size: 14px;\n      cursor: pointer;\n      line-height: 1;\n    }\n    .dce-remove-btn:hover { background: #d9364f; color: #fff; }\n    .dce-toolbar {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-top: 12px;\n      gap: 8px;\n    }\n    .dce-add-btn {\n      border: 1px dashed #6a5cff;\n      color: #4b3cd6;\n      background: transparent;\n      padding: 6px 12px;\n      border-radius: 4px;\n      font-size: 12px;\n      cursor: pointer;\n    }\n    .dce-add-btn:disabled {\n      opacity: 0.4;\n      cursor: not-allowed;\n    }\n    .dce-count {\n      font-size: 11px;\n      color: #777;\n    }\n    .dce-actions {\n      display: flex;\n      gap: 8px;\n      margin-top: 16px;\n    }\n    .dce-save-btn {\n      background: #4b3cd6;\n      color: #fff;\n      border: none;\n      padding: 8px 18px;\n      border-radius: 4px;\n      font-size: 13px;\n      font-weight: 600;\n      cursor: pointer;\n    }\n    .dce-save-btn:disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n    }\n    .dce-status {\n      font-size: 12px;\n      margin-left: 4px;\n      align-self: center;\n    }\n    .dce-status.ok { color: #1a8a4a; }\n    .dce-status.err { color: #d9364f; }\n  `,\n\n  render(d2) {\n    const esc = (s) => String(s == null ? '' : s)\n      .replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\n    const ds = d2.data();\n    if (!ds) {\n      return `<div class=\"dce-root\"><div class=\"dce-empty\">Dataset não conectado.</div></div>`;\n    }\n\n    const rec = ds.selected();\n    if (!rec) {\n      return `<div class=\"dce-root\"><div class=\"dce-empty\">Selecione um registro (Insert/Edit) no form ao lado para editar as datas de cierre.</div></div>`;\n    }\n\n    if (d2.state.recId !== rec._id) {\n      const existing = Array.isArray(rec.dates) ? rec.dates : [];\n      d2.state.rows = existing.map((row, i) => ({\n        id: `row-${rec._id}-${i}`,\n        date: row && row.date ? row.date : '',\n        time_from: row && row.time_from ? row.time_from : '',\n        time_to: row && row.time_to ? row.time_to : ''\n      }));\n      d2.state.recId = rec._id;\n      d2.state.status = null;\n      d2.state.statusType = null;\n    }\n\n    const rows = d2.state.rows || [];\n    const dateOk = (v) => /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(v || '');\n\n    const rowsHtml = rows.map((r) => `\n      <div class=\"dce-row\" data-key=\"${esc(r.id)}\">\n        <input class=\"dce-input ${r.date && !dateOk(r.date) ? 'dce-invalid' : ''}\" type=\"text\"\n          placeholder=\"DD/MM/AAAA\" data-row=\"${esc(r.id)}\" data-field=\"date\" value=\"${esc(r.date)}\" />\n        <input class=\"dce-input\" type=\"time\" data-row=\"${esc(r.id)}\" data-field=\"time_from\" value=\"${esc(r.time_from)}\" />\n        <input class=\"dce-input\" type=\"time\" data-row=\"${esc(r.id)}\" data-field=\"time_to\" value=\"${esc(r.time_to)}\" />\n        <button class=\"dce-remove-btn\" type=\"button\" data-action=\"remove\" data-row=\"${esc(r.id)}\" title=\"Remover\">✕</button>\n      </div>\n    `).join('');\n\n    const statusHtml = d2.state.status\n      ? `<span class=\"dce-status ${d2.state.statusType === 'err' ? 'err' : 'ok'}\">${esc(d2.state.status)}</span>`\n      : '';\n\n    return `\n      <div class=\"dce-root\">\n        <div class=\"dce-title\">Fechas de Cierre</div>\n        <div class=\"dce-subtitle\">Fila: ${esc(rec.queue || '(sem fila)')} — até 31 datas, formato DD/MM/AAAA</div>\n        <div class=\"dce-header-row\">\n          <span>Fecha</span><span>Hora inicio</span><span>Hora fin</span><span></span>\n        </div>\n        ${rowsHtml || '<div class=\"dce-empty\" style=\"padding:8px 0;\">Nenhuma exceção cadastrada ainda.</div>'}\n        <div class=\"dce-toolbar\">\n          <button class=\"dce-add-btn\" type=\"button\" data-action=\"add\" ${rows.length >= 31 ? 'disabled' : ''}>+ Adicionar data</button>\n          <span class=\"dce-count\">${rows.length}/31</span>\n        </div>\n        <div class=\"dce-actions\">\n          <button class=\"dce-save-btn\" type=\"button\" data-action=\"save\">Guardar Fechas de Cierre</button>\n          ${statusHtml}\n        </div>\n      </div>\n    `;\n  },\n\n  mounted(d2, root) {\n    d2.on(root, 'input', (e) => {\n      const t = e.target;\n      if (!t || !t.dataset || !t.dataset.row) return;\n      const { row, field } = t.dataset;\n      const rows = (d2.state.rows || []).map((r) => r.id === row ? { ...r, [field]: t.value } : r);\n      d2.state.rows = rows;\n      d2.state.status = null;\n    });\n\n    d2.on(root, 'click', async (e) => {\n      const btn = e.target.closest('[data-action]');\n      if (!btn) return;\n      const action = btn.dataset.action;\n\n      if (action === 'add') {\n        const rows = d2.state.rows || [];\n        if (rows.length >= 31) return;\n        const ds = d2.data();\n        const rec = ds ? ds.selected() : null;\n        const newId = `row-${(rec && rec._id) || 'new'}-${Date.now()}`;\n        d2.state.rows = [...rows, { id: newId, date: '', time_from: '', time_to: '' }];\n        d2.state.status = null;\n        return;\n      }\n\n      if (action === 'remove') {\n        const rowId = btn.dataset.row;\n        d2.state.rows = (d2.state.rows || []).filter((r) => r.id !== rowId);\n        d2.state.status = null;\n        return;\n      }\n\n      if (action === 'save') {\n        const ds = d2.data();\n        const rec = ds ? ds.selected() : null;\n        if (!ds || !rec) {\n          d2.state.status = 'Nenhum registro selecionado.';\n          d2.state.statusType = 'err';\n          return;\n        }\n\n        const rows = d2.state.rows || [];\n        const dateOk = (v) => /^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(v || '');\n        const incomplete = rows.filter((r) => !r.date || !r.time_from || !r.time_to);\n        const invalidDate = rows.filter((r) => r.date && !dateOk(r.date));\n\n        if (incomplete.length > 0) {\n          d2.state.status = `${incomplete.length} linha(s) incompleta(s) — preencha ou remova.`;\n          d2.state.statusType = 'err';\n          return;\n        }\n        if (invalidDate.length > 0) {\n          d2.state.status = `Data inválida em ${invalidDate.length} linha(s) — use DD/MM/AAAA.`;\n          d2.state.statusType = 'err';\n          return;\n        }\n\n        const cleaned = rows.map((r) => ({ date: r.date, time_from: r.time_from, time_to: r.time_to }));\n\n        try {\n          d2.state.status = 'Salvando...';\n          d2.state.statusType = null;\n          ds.set('dates', cleaned);\n          await ds.save();\n          d2.state.status = 'Salvo!';\n          d2.state.statusType = 'ok';\n        } catch (err) {\n          d2.state.status = `Erro ao salvar: ${err && err.message ? err.message : err}`;\n          d2.state.statusType = 'err';\n        }\n      }\n    });\n  }\n}\n"}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}}}}}}}},{"_id":"6acea8de36e69ceacd76dba4","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"NasviWikis","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const MERCADOS = ['AR', 'MX', 'CO', 'PE', 'CL', 'EC']\nconst NOMBRES = { AR: 'Argentina', MX: 'México', CO: 'Colombia', PE: 'Perú', CL: 'Chile', EC: 'Ecuador' }\nconst INST = { latam: 'naturalatam', eco: 'naturaecolatam', mx: 'naturamexico' }\nconst MAX_FRAGMENTO = 1200\nconst MAX_FRAGMENTOS_ART = 300          // tope del importador por artículo (gravar valida 1–300 chunks)\nconst LOTE = 3\nconst MAX_IDS = 100\nconst LIMITE_MS = 5 * 60 * 1000      // el handler corta en ~4 min; la pantalla espera 1 min más\nconst OLVIDO_MS = 15 * 60 * 1000     // credenciales sin uso se descartan solas\nconst SEP = ' › '               // \"Título del artículo › Sección\"\nconst CONSERVAR = '__conservar__'    // opción \"Conservar la de la base\" (base desconocida: no se envía category)\nconst CATEGORIAS = [\n  ['REGISTRO', 'Registro'], ['PEDIDOS', 'Pedidos'], ['PAGOS', 'Pagos'], ['PRODUCTOS', 'Productos'],\n  ['HERRAMIENTAS_DE_VENTAS', 'Herramientas de ventas'], ['MODELO_COMERCIAL', 'Modelo comercial'],\n  ['VENTAS_EN_LÍNEA', 'Ventas en línea']\n]\nconst PISTAS = {\n  REGISTRO: ['registro', 'alta', 'inscrip', 'baja', 'cese', 'reingreso', 'contrasena', 'clave', 'usuario', 'datos personales', 'documento', 'dni', 'cuit', 'rfc', 'domicilio', 'correo electronico'],\n  PEDIDOS: ['pedido', 'entrega', 'envio', 'despacho', 'reparto', 'sucursal', 'devuelto', 'faltante', 'retenido', 'plazo', 'seguimiento', 'transporte', 'paquete', 'facturacion'],\n  PAGOS: ['pago', 'cobranza', 'deuda', 'factura', 'reembolso', 'devolucion de dinero', 'transferencia', 'cuota', 'boleta', 'tarjeta', 'saldo', 'nota de credito', 'credito'],\n  PRODUCTOS: ['producto', 'defecto', 'calidad', 'fragancia', 'perfume', 'maquillaje', 'crema', 'vencid', 'stock', 'lanzamiento', 'repuesto', 'regalo'],\n  HERRAMIENTAS_DE_VENTAS: ['app', 'aplicacion', 'plataforma', 'sistema', 'portal', 'herramienta', 'mi negocio', 'catalogo', 'folleto', 'revista'],\n  MODELO_COMERCIAL: ['nivel', 'puntos', 'ganancia', 'descuento', 'escalon', 'ciclo', 'bonificacion', 'gerente', 'lider', 'consultoria', 'diamante', 'premio', 'reconocimiento', 'modelo comercial', 'margen'],\n  'VENTAS_EN_LÍNEA': ['venta online', 'venta en linea', 'en linea', 'online', 'ecommerce', 'e-commerce', 'tienda virtual', 'mi tienda', 'tienda online', 'digital']\n}\nconst RX_PISTAS = Object.keys(PISTAS).map(function (cat) {\n  return [cat, PISTAS[cat].map(function (p) { return new RegExp('\\\\b' + p.replace(/[.*+?^${}()|[\\]\\\\-]/g, '\\\\$&')) })]\n})\nconst ESTADOS = {\n  creado: ['Creado', 'ok'], actualizado: ['Actualizado', 'up'], sin_cambios: ['Sin cambios', 'eq'],\n  no_encontrado: ['No encontrado', 'nf'], error: ['Error', 'er'], removido: ['Quitado', 'eq']\n}\nconst ORDEN_ESTADOS = ['creado', 'actualizado', 'sin_cambios', 'no_encontrado', 'error']\nconst ORDEN_HIST = ORDEN_ESTADOS.concat(['removido'])\nconst ESTADOS_JOB = { preview: ['Previsualización', 'eq'], importando: ['En curso', 'up'], concluido: ['Concluido', 'ok'], erro: ['Con error', 'er'] }\nconst TIPOS_ERROR = {\n  login: 'Login de Beedoo rechazado', sesion: 'Sesión sin permiso', red: 'Falla de red',\n  tiempo: 'Tiempo agotado', servidor: 'Error del importador', beedoo: 'Error de Beedoo',\n  instancia: 'Instancia no disponible', config: 'Configuración de la pantalla',\n  contenido: 'Artículo sin texto', largo: 'Artículo demasiado largo', detenido: 'Detenido'\n}\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\nfunction norm(s) { return String(s == null ? '' : s).toLowerCase().normalize('NFD').replace(/[̀-ͯ]/g, '') }\nfunction dormir(ms) { return new Promise(function (r) { setTimeout(r, ms) }) }\nfunction plural(n, uno, varios) { return Number(n || 0).toLocaleString('es') + ' ' + (n === 1 ? uno : varios) }\nfunction enLotes(a, n) { const o = []; for (let i = 0; i < a.length; i += n) o.push(a.slice(i, i + n)); return o }\nfunction idDom(s) { return String(s == null ? '' : s).replace(/[^A-Za-z0-9_-]/g, '_') }\nfunction urlSegura(u) { const s = String(u || '').trim(); return /^https?:\\/\\//i.test(s) ? s : '' }\nfunction beedooUrl(instance, id) { return 'https://' + instance + '.beedoo.io/wiki/' + encodeURIComponent(id) + '/lll' }\nfunction etiquetaCat(c) { const x = CATEGORIAS.filter(function (k) { return k[0] === c })[0]; return x ? x[1] : String(c || '') }\nfunction tituloArticulo(t) { return String(t || '').split(SEP)[0].trim() }\nfunction unirMercados(a, b) {\n  const todos = [].concat(a || [], b || []).map(function (x) { return String(x || '').toUpperCase() })\n  const o = []\n  todos.forEach(function (x) { if (x && o.indexOf(x) < 0) o.push(x) })\n  return MERCADOS.filter(function (c) { return o.indexOf(c) >= 0 }).concat(o.filter(function (c) { return MERCADOS.indexOf(c) < 0 }))\n}\nfunction tiempoDe(v) {\n  if (v == null || v === '') return 0\n  if (v instanceof Date) return v.getTime()\n  if (typeof v === 'number') return v\n  const t = Date.parse(v)\n  return isFinite(t) ? t : 0\n}\nfunction fecha(v) {\n  const t = tiempoDe(v)\n  if (!t) return '—'\n  try { return new Date(t).toLocaleString('es', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }) } catch (e) { return new Date(t).toISOString().slice(0, 16).replace('T', ' ') }\n}\nfunction duracion(ms) {\n  const s = Math.round((Number(ms) || 0) / 1000)\n  if (!s) return '—'\n  const m = Math.floor(s / 60)\n  return m ? m + ' min ' + (s % 60) + ' s' : s + ' s'\n}\nfunction kchars(n) { return n >= 1000 ? (n / 1000).toLocaleString('es', { maximumFractionDigits: 1 }) + ' mil car.' : n + ' car.' }\nfunction sinPunto(s) { return String(s == null ? '' : s).replace(/[.\\s]+$/, '') }\nfunction acento(d2) {\n  const v = String(d2.param('accent', '') || '').trim()\n  return /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\([0-9.,%\\s/deg]+\\)|[a-z]{3,24})$/i.test(v) ? v : '#FF6C0E'\n}\nconst VIDA = new WeakMap()\nfunction vida(d2) {\n  let v = VIDA.get(d2)\n  if (!v) { v = { activo: true, detener: false, foco: null, dlg: false, volver: null }; VIDA.set(d2, v) }\n  return v\n}\nfunction poner(d2, o) { if (vida(d2).activo) d2.setState(o) }\nfunction leerIds(texto) {\n  const toks = String(texto || '').replace(/\\r/g, '').replace(/[​-‍⁠﻿]/g, '').split(/[\\s,;]+/)\n  const validos = [], invalidos = [], visto = {}\n  let duplicados = 0\n  for (let i = 0; i < toks.length; i++) {\n    const t = toks[i].trim()\n    if (!t) continue\n    if (/^\\d{1,12}$/.test(t) && /[1-9]/.test(t)) {\n      const id = t.replace(/^0+/, '')\n      if (visto[id]) { duplicados++; continue }\n      visto[id] = 1\n      validos.push(id)\n    } else if (invalidos.indexOf(t) < 0) invalidos.push(t)\n  }\n  return { validos: validos, invalidos: invalidos, duplicados: duplicados }\n}\nfunction mercadosSel(d2) {\n  const m = d2.state.mercados || []\n  return MERCADOS.filter(function (c) { return m.indexOf(c) >= 0 })\n}\nfunction plan(d2) {\n  const f = d2.state.instForzada\n  if (f) return { instance: f, fallback: null, forzada: true }\n  const eco = !!d2.state.ecommerce\n  return { instance: eco ? INST.eco : INST.latam, fallback: (!eco && mercadosSel(d2).indexOf('MX') >= 0) ? INST.mx : null, forzada: false }\n}\nfunction firma(d2) {\n  return leerIds(d2.state.idsText).validos.join(',') + '|' + mercadosSel(d2).join(',') + '|' + (d2.state.ecommerce ? 1 : 0) + '|' + (d2.state.instForzada || '')\n}\nfunction regiones(d2) {\n  const out = {}\n  if (!isDemo(d2)) {\n    const ds = d2.data('regiones')\n    const rows = ds ? ds.records() : []\n    for (let i = 0; i < rows.length; i++) {\n      const c = String(rows[i].country_code || '').toUpperCase()\n      if (c && !out[c] && rows[i].title) out[c] = String(rows[i].title)\n    }\n  }\n  MERCADOS.forEach(function (c) { if (!out[c]) out[c] = NOMBRES[c] })\n  return out\n}\nfunction sesion(d2) {\n  if (isDemo(d2)) return { email: 'supervisor.demo@natura.net', ok: true }\n  const ref = d2.params && d2.params.auth\n  if (!ref) return { email: '', ok: false, sinParam: true }\n  try {\n    const a = d2.auth(ref)\n    if (!a) return { email: '', ok: false }\n    const u = a.user, s = a.session\n    const cand = [u && u.email, s && s.email, s && s.user && s.user.email, s && s.credentials && s.credentials.email, s && s.username]\n    let email = ''\n    for (let i = 0; i < cand.length; i++) { if (typeof cand[i] === 'string' && cand[i].indexOf('@') > 0) { email = cand[i]; break } }\n    return { email: email, ok: !!(a.isAuthed || email) }\n  } catch (e) { return { email: '', ok: false } }\n}\nconst OMITIR = { SCRIPT: 1, STYLE: 1, NOSCRIPT: 1, TEMPLATE: 1, IFRAME: 1, OBJECT: 1, EMBED: 1, SVG: 1, CANVAS: 1, HEAD: 1, META: 1, LINK: 1, TITLE: 1, BUTTON: 1, SELECT: 1, INPUT: 1, TEXTAREA: 1, AUDIO: 1, VIDEO: 1 }\nconst PARRAFO = { P: 1, H1: 1, H2: 1, H3: 1, H4: 1, H5: 1, H6: 1, BLOCKQUOTE: 1, SECTION: 1, ARTICLE: 1, HEADER: 1, FOOTER: 1, MAIN: 1, ASIDE: 1, NAV: 1, FIGURE: 1, FORM: 1, FIELDSET: 1, DETAILS: 1, ADDRESS: 1, DL: 1, CENTER: 1 }\nconst LINEA = { DIV: 1, DT: 1, DD: 1, FIGCAPTION: 1, SUMMARY: 1, CAPTION: 1, LEGEND: 1 }\nfunction Escritor() { this.lineas = []; this.actual = ''; this.blancoPend = false; this.vineta = false; this.enLista = 0 }\nEscritor.prototype.texto = function (s) { this.actual += s }\nEscritor.prototype.salto = function () {\n  const t = this.actual.replace(/\\s+/g, ' ').trim()\n  this.actual = ''\n  if (!t) return\n  if (this.blancoPend && this.lineas.length) this.lineas.push('')\n  this.blancoPend = false\n  this.lineas.push(this.vineta ? '- ' + t : t)\n  this.vineta = false\n}\nEscritor.prototype.parrafo = function () { this.salto(); if (this.lineas.length && !this.enLista) this.blancoPend = true }\nEscritor.prototype.fin = function () { this.salto(); return this.lineas.join('\\n').normalize('NFC') }\nfunction textoNodo(s) { return String(s || '').replace(/[​-‍⁠﻿­]/g, '') }\nfunction recorrer(nodo, w, prof) {\n  for (let n = nodo.firstChild; n; n = n.nextSibling) {\n    if (n.nodeType === 3) { w.texto(textoNodo(n.nodeValue)); continue }\n    if (n.nodeType !== 1) continue\n    const tag = String(n.nodeName || '').toUpperCase()\n    if (OMITIR[tag]) continue\n    if (tag === 'BR') { if (w.actual.trim()) w.salto(); else if (w.lineas.length) w.blancoPend = true; continue }\n    if (tag === 'HR') { w.parrafo(); continue }\n    if (tag === 'IMG') {\n      const alt = String((n.getAttribute && n.getAttribute('alt')) || '').trim()\n      if (alt) w.texto(' [imagen: ' + alt + '] ')\n      continue\n    }\n    if (tag === 'PRE') {\n      w.parrafo()\n      textoNodo(n.textContent).split(/\\r?\\n/).forEach(function (l) { w.texto(l); w.salto() })\n      w.parrafo()\n      continue\n    }\n    if (tag === 'LI') { w.salto(); w.vineta = true; w.enLista++; recorrer(n, w, prof); w.salto(); w.enLista--; w.vineta = false; continue }\n    if (tag === 'UL' || tag === 'OL') { w.salto(); recorrer(n, w, prof + 1); w.salto(); if (!prof && !w.enLista && w.lineas.length) w.blancoPend = true; continue }\n    if (tag === 'TABLE') { w.parrafo(); tabla(n, w); w.parrafo(); continue }\n    if (tag === 'TR') { fila(n, w); continue }\n    if (tag === 'A') {\n      recorrer(n, w, prof)\n      const href = urlSegura(n.getAttribute && n.getAttribute('href'))\n      if (href && href.length <= 500 && String(n.textContent || '').indexOf(href) < 0) w.texto(' (' + href + ')')\n      continue\n    }\n    if (PARRAFO[tag]) { w.parrafo(); recorrer(n, w, prof); w.parrafo(); continue }\n    if (LINEA[tag]) { w.salto(); recorrer(n, w, prof); w.salto(); continue }\n    recorrer(n, w, prof)\n  }\n}\nfunction celdaTexto(c) {\n  const w = new Escritor()\n  recorrer(c, w, 1)\n  w.salto()\n  return w.lineas.filter(Boolean).join(' / ')\n}\nfunction fila(tr, w) {\n  const celdas = tr.cells ? Array.prototype.slice.call(tr.cells) : []\n  const txt = celdas.map(celdaTexto)\n  if (!txt.some(Boolean)) return\n  w.salto()\n  w.texto(txt.join(' | '))\n  w.salto()\n}\nfunction tabla(t, w) {\n  const filas = t.rows ? Array.prototype.slice.call(t.rows) : (t.querySelectorAll ? Array.prototype.slice.call(t.querySelectorAll('tr')) : [])\n  for (let i = 0; i < filas.length; i++) fila(filas[i], w)\n}\nfunction decodificarBasico(s) {\n  return s.replace(/&nbsp;/g, ' ').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '\"').replace(/&#39;/g, \"'\").replace(/&amp;/g, '&')\n}\nfunction htmlATexto(html) {\n  const src = String(html == null ? '' : html)\n  if (!src.trim()) return ''\n  const w = new Escritor()\n  if (!/<[a-z!/]/i.test(src)) {\n    decodificarBasico(src).replace(/\\r\\n?/g, '\\n').split('\\n').forEach(function (l) {\n      if (l.trim()) { w.texto(textoNodo(l)); w.salto() } else if (w.lineas.length) w.blancoPend = true\n    })\n    return w.fin()\n  }\n  let doc = null\n  try { doc = new DOMParser().parseFromString(src, 'text/html') } catch (e) { doc = null }\n  if (!doc || !doc.body) return htmlATexto(src.replace(/<[^>]*>/g, ' '))\n  recorrer(doc.body, w, 0)\n  return w.fin()\n}\nfunction lineaUnica(s) { return String(s || '').replace(/\\s+/g, ' ').trim() }\nfunction partirPalabras(s, max) {\n  const out = []\n  let cur = ''\n  s.split(' ').forEach(function (p) {\n    if (!p) return\n    if (p.length > max) {   // \"palabra\" absurda (URL/código): único caso en que se corta sin espacio\n      if (cur) { out.push(cur); cur = '' }\n      for (let i = 0; i < p.length; i += max) out.push(p.slice(i, i + max))\n      return\n    }\n    if (!cur) cur = p\n    else if (cur.length + 1 + p.length <= max) cur += ' ' + p\n    else { out.push(cur); cur = p }\n  })\n  if (cur) out.push(cur)\n  return out\n}\nfunction partirLargo(s, max) {\n  const frases = s.replace(/([.!?;:])\\s+/g, '$1\\u0000').split('\\u0000')\n  const out = []\n  let cur = ''\n  frases.forEach(function (f0) {\n    const f = f0.trim()\n    if (!f) return\n    if (f.length > max) {\n      if (cur) { out.push(cur); cur = '' }\n      partirPalabras(f, max).forEach(function (x) { out.push(x) })\n      return\n    }\n    if (!cur) cur = f\n    else if (cur.length + 1 + f.length <= max) cur += ' ' + f\n    else { out.push(cur); cur = f }\n  })\n  if (cur) out.push(cur)\n  return out\n}\nfunction trocear(texto, max) {\n  const trozos = []\n  let actual = ''\n  const cerrar = function () { const t = actual.trim(); if (t) trozos.push(t); actual = '' }\n  const sumar = function (pieza, sep) {\n    if (!actual) { actual = pieza; return }\n    if (actual.length + sep.length + pieza.length <= max) { actual += sep + pieza; return }\n    cerrar()\n    actual = pieza\n  }\n  String(texto || '').split(/\\n{2,}/).forEach(function (par) {\n    par.split('\\n').forEach(function (l, i) {\n      const ln = l.trim()\n      if (!ln) return\n      const sep = i === 0 ? '\\n\\n' : '\\n'\n      if (ln.length <= max) { sumar(ln, sep); return }\n      partirLargo(ln, max).forEach(function (p, k) { sumar(p, k === 0 ? sep : ' ') })\n    })\n  })\n  cerrar()\n  return trozos\n}\nfunction hex(bytes) { let s = ''; for (let i = 0; i < bytes.length; i++) s += (bytes[i] < 16 ? '0' : '') + bytes[i].toString(16); return s }\nconst K256 = [\n  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]\nfunction rotr(x, n) { return (x >>> n) | (x << (32 - n)) }\nfunction sha256Js(bytes) {\n  const H = new Uint32Array([0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19])\n  const len = bytes.length\n  const total = ((len + 9 + 63) >> 6) << 6\n  const m = new Uint8Array(total)\n  m.set(bytes)\n  m[len] = 0x80\n  const dv = new DataView(m.buffer)\n  dv.setUint32(total - 8, Math.floor(len / 0x20000000))\n  dv.setUint32(total - 4, (len * 8) >>> 0)\n  const w = new Uint32Array(64)\n  for (let off = 0; off < total; off += 64) {\n    for (let i = 0; i < 16; i++) w[i] = dv.getUint32(off + i * 4)\n    for (let i = 16; i < 64; i++) {\n      const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3)\n      const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10)\n      w[i] = (w[i - 16] + s0 + w[i - 7] + s1) | 0\n    }\n    let a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7]\n    for (let i = 0; i < 64; i++) {\n      const t1 = (h + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K256[i] + w[i]) | 0\n      const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0\n      h = g; g = f; f = e; e = (d + t1) | 0; d = c; c = b; b = a; a = (t1 + t2) | 0\n    }\n    H[0] += a; H[1] += b; H[2] += c; H[3] += d; H[4] += e; H[5] += f; H[6] += g; H[7] += h\n  }\n  const out = new Uint8Array(32)\n  const ov = new DataView(out.buffer)\n  for (let i = 0; i < 8; i++) ov.setUint32(i * 4, H[i])\n  return hex(out)\n}\nasync function sha256Hex(texto) {\n  const bytes = new TextEncoder().encode(texto)\n  const c = (typeof globalThis !== 'undefined' && globalThis.crypto) || null\n  if (c && c.subtle && typeof c.subtle.digest === 'function') {\n    try { return hex(new Uint8Array(await c.subtle.digest('SHA-256', bytes))) } catch (e) { /* contexto no seguro: respaldo */ }\n  }\n  return sha256Js(bytes)\n}\nfunction sugerirCategoria(titulo, fragmentos) {\n  const t = norm(titulo)\n  const c = norm(fragmentos.slice(0, 6).map(function (x) { return x.content }).join(' ')).slice(0, 6000)\n  let mejor = '', pts = 0\n  RX_PISTAS.forEach(function (par) {\n    let s = 0\n    par[1].forEach(function (rx) { if (rx.test(t)) s += 3; if (rx.test(c)) s += 1 })\n    if (s > pts) { pts = s; mejor = par[0] }\n  })\n  return pts >= 2 ? mejor : ''\n}\nasync function prepararArticulo(x) {\n  const tituloArt = lineaUnica(htmlATexto(x.titulo_html)) || ('Artículo ' + x.article_id)\n  const fragmentos = []\n  const visto = {}\n  let omitidos = 0, secciones = 0, chars = 0\n  const secs = x.secciones_html || []\n  for (let i = 0; i < secs.length; i++) {\n    const tSec = lineaUnica(htmlATexto(secs[i].title))\n    const texto = htmlATexto(secs[i].html)\n    if (!texto) continue\n    secciones++\n    const titulo = (tSec && norm(tSec) !== norm(tituloArt)) ? tituloArt + SEP + tSec : tituloArt\n    const piezas = trocear(texto, MAX_FRAGMENTO)\n    for (let k = 0; k < piezas.length; k++) {\n      const t = piezas[k]\n      if (!/[\\p{L}\\p{N}]/u.test(t)) { omitidos++; continue }\n      const h = await sha256Hex(t)\n      if (visto[h]) { omitidos++; continue }\n      visto[h] = 1\n      fragmentos.push({ chunk_index: fragmentos.length, title: titulo, content: t, content_hash: h })\n      chars += t.length\n    }\n  }\n  return { tituloArt: tituloArt, fragmentos: fragmentos, omitidos: omitidos, secciones: secciones, chars: chars }\n}\nfunction listo(x) {\n  const n = (x.fragmentos || []).length\n  return x.estado === 'encontrado' && n > 0 && n <= MAX_FRAGMENTOS_ART && (x.mercados || []).length > 0\n}\nfunction debeForzar(x) {\n  if (!x || x.conservarCat) return false\n  if (x.baseDesconocida) return !!x.categoriaManual\n  const ex = x.existente\n  return !!(ex && (x.categoria || '') !== (ex.category || ''))\n}\nfunction errTipo(msg, tipo) { const e = new Error(msg); e.tipoNasvi = tipo; return e }\nfunction recortar(t, max) {\n  const s = String(t == null ? '' : t)\n  if (s.length <= max) return s\n  let c = s.slice(0, max - 1)\n  const i = c.lastIndexOf(' ')\n  if (i > max * 0.6) c = c.slice(0, i)\n  return c.replace(/[\\s.,;:·(\\-]+$/, '') + '…'\n}\nfunction limpiarMsg(t, ctx) {\n  let s = String(t == null ? '' : t)\n  const v = ctx && ctx.vault\n  if (v) [v.password, v.email].forEach(function (sec) { if (sec && sec.length >= 3) s = s.split(sec).join('***') })\n  s = s.replace(/(x-beedoo-set-cookie|set-cookie|cookie|password|contrase(?:ñ|n)a|senha|token|authorization)([\"']?\\s*[:=]\\s*)(\"[^\"]*\"|'[^']*'|[^\\r\\n,}]*)/gi, '$1$2***')\n  s = s.replace(/\\bBearer\\s+\\S+/gi, 'Bearer ***')\n  s = s.replace(/\\beyJ[\\w-]+\\.[\\w-]+\\.[\\w-]+/g, '***')\n  return recortar(s, 300)\n}\nfunction conLimite(p, ms, msg) {\n  let t = null\n  const reloj = new Promise(function (_, rej) {\n    t = setTimeout(function () { rej(errTipo(msg || ('el importador no respondió en ' + Math.round(ms / 60000) + ' min (puede haber terminado en el servidor)'), 'tiempo')) }, ms)\n  })\n  return Promise.race([Promise.resolve(p), reloj]).finally(function () { clearTimeout(t) })\n}\nconst LIMITE_LECTURA_MS = 30000\nfunction leerConLimite(p) { return conLimite(p, LIMITE_LECTURA_MS, 'el DataSet no respondió en ' + (LIMITE_LECTURA_MS / 1000) + ' s') }\nconst ENVOLTORIO = { data: 1, body: 1, statusCode: 1, status: 1, headers: 1 }\nfunction esRespuesta(o) { return !!o && typeof o === 'object' && !Array.isArray(o) && ('ok' in o || 'op' in o) }\nfunction desenvolver(res) {\n  let r = res\n  for (let i = 0; i < 3; i++) {\n    if (!r || typeof r !== 'object' || Array.isArray(r)) break\n    if (!('op' in r) && esRespuesta(r.data)) { r = r.data; continue }\n    if (!('op' in r) && esRespuesta(r.body)) { r = r.body; continue }\n    if (esRespuesta(r)) break\n    const ks = Object.keys(r)\n    const soloSobre = ks.length > 0 && ks.every(function (k) { return ENVOLTORIO[k] })\n    if (soloSobre && r.body && typeof r.body === 'object') { r = r.body; continue }\n    if (soloSobre && r.data && typeof r.data === 'object') { r = r.data; continue }\n    break\n  }\n  if (r && typeof r === 'object' && r.error && (r.code || r.statusCode) && !r.articles && r.ok !== true) {\n    const e = new Error(String(r.error))\n    e.status = Number(r.code || r.statusCode) || 0\n    throw e\n  }\n  return (r && typeof r === 'object') ? r : {}\n}\nasync function llamarApi(d2, ctx, payload) {\n  if (isDemo(d2)) return demoApi(d2, payload)\n  const ref = d2.params && d2.params.api\n  if (!ref) throw errTipo('El parámetro \"api\" (importador de wikis) no está conectado.', 'config')\n  let h\n  try { h = d2.rush(ref) } catch (e) { throw errTipo('No se pudo resolver el importador: ' + limpiarMsg((e && e.message) || e, ctx), 'config') }\n  return desenvolver(await conLimite(h.invoke(payload), LIMITE_MS))\n}\nfunction errInfo(e, ctx) {\n  if (e && e.tipoNasvi) return { tipo: e.tipoNasvi, status: 0, texto: limpiarMsg(e.message, ctx) }\n  let msg = String((e && (e.message || e.statusText)) || e || '')\n  const j = msg.indexOf('{')\n  if (j >= 0) {\n    try { const o = JSON.parse(msg.slice(j)); if (o && (o.error || o.message)) msg = String(o.error || o.message) + (o.code ? ' (' + o.code + ')' : '') } catch (x) { /* texto libre */ }\n  }\n  const st = Number((e && (e.status || e.statusCode || (e.response && e.response.status))) || (e && typeof e.code === 'number' ? e.code : 0)) ||\n    Number((String((e && e.message) || '').match(/\\b([45]\\d\\d)\\b/) || [])[1] || 0)\n  const s = norm(msg)\n  let tipo = 'servidor'\n  if (st === 401 || st === 403) tipo = 'sesion'\n  else if (st === 408 || st === 504) tipo = 'tiempo'\n  else if (st >= 400) tipo = 'servidor'   // 424 handler sin compilar, 500 excepción (p. ej. policy de un DataSet)\n  else if (/failed to fetch|networkerror|network error|load failed|err_internet|err_network|net::|offline/.test(s)) tipo = 'red'\n  else if (/timeout|timed out|tiempo agotado/.test(s)) tipo = 'tiempo'\n  else if (/no permissions|unauthori|forbidden|sin permiso/.test(s)) tipo = 'sesion'\n  return { tipo: tipo, status: st, texto: limpiarMsg(msg, ctx) || 'error desconocido' }\n}\nfunction textoError(inf) { return (TIPOS_ERROR[inf.tipo] || 'Error') + ': ' + inf.texto }\nconst CODIGOS = {\n  AUTH_BEEDOO: 'login', BEEDOO_NO_DISPONIBLE: 'beedoo', MX_NO_CONFIGURADO: 'instancia', ERROR_BEEDOO: 'beedoo',\n  PAYLOAD_INVALIDO: 'config', OP_DESCONOCIDA: 'config', ACCION_DESCONOCIDA: 'config', JOB_NO_ENCONTRADO: 'servidor',\n  LECTURA_INCOMPLETA: 'servidor', INSERCION_INCOMPLETA: 'servidor', VERIFICACION_FALLIDA: 'servidor', LIMPIEZA_INCOMPLETA: 'servidor',\n  REVERSION_INCOMPLETA: 'servidor', JOB_INVALIDO: 'servidor', JOB_NO_GRABADO: 'servidor', SESION_NO_IDENTIFICADA: 'sesion'\n}\nfunction cortaLote(code, motivo) { return code === 'SESION_NO_IDENTIFICADA' || (code === 'JOB_INVALIDO' && motivo !== 'lectura' && motivo !== 'articulo') }\nfunction errorDe(r) {\n  if (!r || typeof r !== 'object') return null\n  const e = r.error\n  if (e && typeof e === 'object') return { code: String(e.code || ''), message: String(e.message || e.mensaje || '') }\n  if (r.ok === false || e) return { code: String(r.code || ''), message: String(r.message || r.mensaje || (typeof e === 'string' ? e : '') || '') }\n  return null\n}\nfunction clasificarGlobal(code, texto, ctx) {\n  const c = String(code || '').toUpperCase()\n  if (CODIGOS[c]) return { tipo: CODIGOS[c], code: c, texto: limpiarMsg(texto || c, ctx) }\n  const s = norm(String(code || '') + ' ' + String(texto || ''))\n  let tipo = 'beedoo'\n  if (/instanc|no soportad|not supported|nao suportad|placeholder|req_auth|req_read|no configurad/.test(s)) tipo = 'instancia'\n  else if (/login|auth|credencial|contrasen|password|senha|401|unauthori|cookie/.test(s)) tipo = 'login'\n  else if (/timeout|tiempo|timed out/.test(s)) tipo = 'tiempo'\n  return { tipo: tipo, texto: limpiarMsg(texto || code || 'el importador devolvió un error', ctx) }\n}\nfunction lista(res, claves) {\n  for (let i = 0; i < claves.length; i++) { const v = res && res[claves[i]]; if (Array.isArray(v)) return v }\n  return []\n}\nfunction idDe(x) {\n  if (!x || typeof x !== 'object') return ''\n  const v = x.article_id != null ? x.article_id : (x.articleId != null ? x.articleId : (x.article && x.article.id != null ? x.article.id : x.id))\n  return v == null ? '' : String(v).replace(/^0+(?=\\d)/, '')\n}\nfunction seccionesDe(a) {\n  const s = a.sessions || a.secciones || (a.article && a.article.sessions) || []\n  return (Array.isArray(s) ? s : []).map(function (x) {\n    x = x || {}\n    return { title: x.title || x.titulo || '', html: x.html != null ? x.html : (x.content != null ? x.content : (x.contenido || '')) }\n  })\n}\nfunction tagsDe(a) {\n  const t = a.tags || (a.article && a.article.tags) || []\n  return (Array.isArray(t) ? t : []).map(function (x) { return typeof x === 'string' ? x : (x && (x.name || x.title || x.label)) || '' }).map(lineaUnica).filter(Boolean).slice(0, 30)\n}\nfunction itemError(id, instance, texto, tipo) { return { article_id: id, estado: 'error', instance: instance, tipo: tipo || 'servidor', mensaje: texto } }\nfunction noExiste(id, instance) { return { article_id: id, estado: 'no_encontrado', instance: instance, mensaje: 'No existe en ' + instance + ' o el usuario de Beedoo no tiene acceso.' } }\nfunction leerBuscar(res, ids, instance, ctx) {\n  const porId = {}\n  const respaldos = []\n  let global = null\n  const eg = res && res.ok === false ? errorDe(res) : null\n  if (eg) global = clasificarGlobal(eg.code, eg.message, ctx)\n  lista(res, ['errors', 'errores']).forEach(function (e) {\n    const obj = !!e && typeof e === 'object'\n    const id = idDe(e)\n    const code = String((obj && e.code) || '').toUpperCase()\n    const inst = (obj && e.instance) ? String(e.instance) : instance\n    const texto = limpiarMsg(typeof e === 'string' ? e : (e && (e.message || e.mensaje || e.error || e.code)) || '', ctx)\n    if (obj && (e.scope === 'respaldo_mx' || inst !== instance)) {\n      respaldos.push({ id: (id && ids.indexOf(id) >= 0) ? id : '', inst: inst, code: code, texto: texto })\n    } else if (id && ids.indexOf(id) >= 0) {\n      if (code === 'NO_ENCONTRADO' || /^(no_encontrado|not_found)$/i.test(code)) porId[id] = noExiste(id, instance)\n      else porId[id] = itemError(id, instance, texto || 'Beedoo no devolvió el artículo.', (CODIGOS[code] && CODIGOS[code] !== 'config') ? CODIGOS[code] : 'beedoo')\n    } else if (!global) global = clasificarGlobal(typeof e === 'string' ? e : (e && (e.code || e.type || e.error)), texto, ctx)\n  })\n  lista(res, ['articles', 'articulos', 'resultados', 'results', 'items']).forEach(function (a) {\n    if (!a || typeof a !== 'object') return\n    const id = idDe(a)\n    if (!id || ids.indexOf(id) < 0) return\n    const st = norm(a.status || a.estado || '')\n    const secs = seccionesDe(a)\n    const enc = a.found === true || /^(encontrado|ok|found)$/.test(st) || (a.found !== false && !st && secs.length > 0)\n    const noEnc = a.found === false || /^(no_encontrado|not_found|nao_encontrado|no encontrado)$/.test(st)\n    const inst = String(a.instance || instance)\n    if (enc) {\n      porId[id] = {\n        article_id: id, estado: 'encontrado', instance: inst,\n        titulo_html: a.title || a.titulo || (a.article && (a.article.title || a.article.name)) || '',\n        secciones_html: secs,\n        url: urlSegura(a.url || a.link) || beedooUrl(inst, id),\n        source_updated_at: a.updated_at || a.updatedAt || a.source_updated_at || (a.article && (a.article.updated_at || a.article.updatedAt)) || null,\n        tags: tagsDe(a)\n      }\n    } else if (noEnc) porId[id] = noExiste(id, instance)\n    else porId[id] = itemError(id, instance, limpiarMsg(a.message || (errorDe(a) || {}).message || 'respuesta sin estado', ctx), 'beedoo')\n  })\n  respaldos.forEach(function (r) {\n    const reintentar = r.code !== 'MX_NO_CONFIGURADO'\n    ;(r.id ? [r.id] : ids).forEach(function (id) {\n      if (!porId[id] && r.id) porId[id] = noExiste(id, instance)\n      if (!porId[id] || porId[id].estado !== 'no_encontrado') return\n      porId[id] = Object.assign({}, porId[id], {\n        mensaje: 'No existe en ' + instance + '; la búsqueda en ' + r.inst + (reintentar ? ' falló (' + sinPunto(r.texto) + ').' : ' todavía no está disponible.'),\n        respaldoFallo: reintentar\n      })\n    })\n  })\n  ids.forEach(function (id) {\n    if (!porId[id]) porId[id] = global ? itemError(id, instance, global.texto, global.tipo) : itemError(id, instance, 'el importador no devolvió este artículo', 'servidor')\n  })\n  return { porId: porId, global: global }\n}\nfunction leerGravar(g, x, ctx) {\n  const MAPA = { creado: 'creado', created: 'creado', criado: 'creado', insertado: 'creado', actualizado: 'actualizado', updated: 'actualizado', atualizado: 'actualizado', sin_cambios: 'sin_cambios', 'sin cambios': 'sin_cambios', unchanged: 'sin_cambios', sem_mudancas: 'sin_cambios', error: 'error', erro: 'error' }\n  let st = MAPA[norm((g && (g.status || g.estado || g.result)) || '')] || ''\n  if (!st || (g && g.ok === false)) st = 'error'\n  const eg = st === 'error' ? errorDe(g) : null\n  const ed = (g && g.error && typeof g.error === 'object') ? g.error : {}\n  const code = eg ? String(eg.code || '').toUpperCase() : ''\n  const ver = g && g.version != null ? Number(g.version) : null\n  const n = st === 'error' ? 0 : (g && g.chunks != null ? Number(g.chunks) : x.fragmentos.length)\n  const mk = g && Array.isArray(g.markets) ? g.markets : null\n  const prev = g && Array.isArray(g.markets_previos) ? g.markets_previos : null\n  const mkTxt = mk ? ' · mercados ' + (prev && prev.join(',') !== mk.join(',') && prev.length ? prev.join(', ') + ' → ' : '') + mk.join(', ') : ''\n  let msg = ''\n  if (st === 'error') {\n    const txt = limpiarMsg((eg && eg.message) || (g && g.message) || '', ctx)\n    let extra = ''\n    if (!txt) {\n      const sinRevertir = typeof ed.sin_revertir === 'number' ? ed.sin_revertir\n        : (typeof ed.revertidos === 'number' && typeof ed.insertados === 'number' ? ed.insertados - ed.revertidos : 0)\n      if (code === 'REVERSION_INCOMPLETA' || sinRevertir > 0) extra = 'Quedaron fragmentos de la versión intentada: resincronizar el artículo.'\n      else if (NADA_GRABADO[code]) extra = x.existente ? 'La versión vigente sigue intacta.' : 'No se grabó nada.'\n      else extra = 'Revisar el artículo en la pestaña Base.'\n    }\n    msg = (txt || 'El importador no confirmó la grabación.') + (code ? ' [' + code + ']' : '') + (extra ? ' ' + extra : '')\n  } else if (st === 'creado') msg = 'Creado' + (ver != null ? ' (v' + ver + ')' : '') + ' con ' + plural(n, 'fragmento', 'fragmentos') + mkTxt + '.'\n  else if (st === 'actualizado') msg = 'Actualizado' + (ver != null ? ' a v' + ver : '') + ' con ' + plural(n, 'fragmento', 'fragmentos') + mkTxt + (g && typeof g.removidos === 'number' ? '; se quitaron ' + plural(g.removidos, 'fragmento', 'fragmentos') + ' de la versión anterior' : '') + '.'\n  else msg = 'Sin cambios: el texto, los títulos y los mercados ya estaban en la base' + (ver != null ? ' (v' + ver + ')' : '') + '.'\n  const av = g && g.aviso && typeof g.aviso === 'object' ? g.aviso : null\n  if (av && st !== 'error') msg += ' Aviso: ' + limpiarMsg(av.message || av.code || '', ctx)\n  return {\n    article_id: x.article_id, instance: x.instance, status: st, chunks: isFinite(n) ? n : 0, message: recortar(msg, 300),\n    version: ver, markets: mk, tipo: st === 'error' ? (CODIGOS[code] || 'servidor') : null, code: code || null, motivo: ed.motivo || null\n  }\n}\nconst NADA_GRABADO = { LECTURA_INCOMPLETA: 1, INSERCION_INCOMPLETA: 1, VERIFICACION_FALLIDA: 1, JOB_INVALIDO: 1, SESION_NO_IDENTIFICADA: 1, PAYLOAD_INVALIDO: 1 }\nfunction filasDe(res) {\n  if (Array.isArray(res)) return res\n  if (res && Array.isArray(res.data)) return res.data\n  if (res && Array.isArray(res.result)) return res.result\n  if (res && Array.isArray(res.records)) return res.records\n  return []\n}\nasync function dsFind(h, q) {\n  if (h && typeof h.find === 'function') return h.find(q)\n  if (h && h.raw && typeof h.raw.find === 'function') return h.raw.find(q)\n  if (h && typeof h.query === 'function') return h.query(q)\n  throw new Error('el DataSet no expone find()')\n}\nasync function dsAggregate(h, p) {\n  if (h && typeof h.aggregate === 'function') return h.aggregate(p)\n  if (h && h.raw && typeof h.raw.aggregate === 'function') return h.raw.aggregate(p)\n  throw new Error('el DataSet no expone aggregate()')\n}\nconst PIPELINE_BASE = [\n  { $group: {\n    _id: { article_id: '$article_id', instance: '$instance', version: '$version' },\n    chunks: { $sum: 1 }, title: { $first: '$title' }, markets: { $first: '$markets' },\n    ecommerce: { $first: '$ecommerce' }, category: { $first: '$category' }, url: { $first: '$url' },\n    imported_at: { $max: '$imported_at' }, imported_by: { $first: '$imported_by' }, job_id: { $first: '$job_id' }\n  } },\n  { $limit: 5000 }\n]\nconst CAMPOS_BASE = ['article_id', 'instance', 'version', 'title', 'markets', 'mkt_ar', 'mkt_mx', 'mkt_co', 'mkt_pe', 'mkt_cl', 'mkt_ec', 'ecommerce', 'category', 'url', 'imported_at', 'imported_by', 'job_id', 'chunk_index']\nfunction mercadosDeFila(f) {\n  if (Array.isArray(f.markets)) return unirMercados(f.markets, [])\n  return MERCADOS.filter(function (c) { return f['mkt_' + c.toLowerCase()] === true })\n}\nfunction agruparBase(filas) {\n  const por = {}\n  filas.forEach(function (f) {\n    if (!f || typeof f !== 'object') return\n    const k = (f._id && typeof f._id === 'object') ? f._id : f\n    const id = k.article_id == null ? '' : String(k.article_id)\n    if (!id) return\n    const inst = String(k.instance || '')\n    const ver = Number(k.version) || 0\n    const n = typeof f.chunks === 'number' ? f.chunks : 1\n    const clave = id + '|' + inst\n    let a = por[clave]\n    if (!a) a = por[clave] = { key: clave, article_id: id, instance: inst, version: -1, versiones: {} }\n    a.versiones[ver] = (a.versiones[ver] || 0) + n\n    if (ver > a.version) {\n      a.version = ver\n      a.title = f.title; a.markets = mercadosDeFila(f); a.ecommerce = !!f.ecommerce; a.category = f.category || ''\n      a.url = f.url || ''; a.imported_at = f.imported_at; a.imported_by = f.imported_by || ''; a.job_id = f.job_id || ''\n    } else if (ver === a.version) {\n      if (tiempoDe(f.imported_at) > tiempoDe(a.imported_at)) a.imported_at = f.imported_at\n      if (!a.title && f.title) a.title = f.title\n      if (!a.imported_by && f.imported_by) a.imported_by = f.imported_by\n    }\n  })\n  return Object.keys(por).map(function (k) {\n    const a = por[k]\n    a.chunks = a.versiones[a.version] || 0\n    a.nVersiones = Object.keys(a.versiones).length\n    a.titulo = tituloArticulo(a.title) || ('Artículo ' + a.article_id)\n    return a\n  }).sort(function (x, y) { return tiempoDe(y.imported_at) - tiempoDe(x.imported_at) })\n}\nasync function baseViaFind(h) {\n  const filas = []\n  const TAM = 200\n  let conSelect = true\n  for (let pag = 0; pag < 25; pag++) {\n    const q = { $sort: { article_id: 1, chunk_index: 1 }, $limit: TAM, $skip: pag * TAM }\n    if (conSelect) q.$select = CAMPOS_BASE\n    let res\n    try { res = await leerConLimite(dsFind(h, q)) } catch (e) {\n      if (conSelect && pag === 0 && !e.tipoNasvi) { conSelect = false; pag--; continue }\n      throw e\n    }\n    const rows = filasDe(res)\n    rows.forEach(function (r) { filas.push(r) })\n    const total = res && typeof res.total === 'number' ? res.total : null\n    if (rows.length < TAM || (total != null && filas.length >= total)) return { filas: filas, parcial: false }\n  }\n  return { filas: filas, parcial: true }\n}\nasync function cargarBase(d2, ctx) {\n  if (isDemo(d2)) {\n    poner(d2, { cargandoBase: true })\n    await dormir(200)\n    poner(d2, { base: { rows: agruparBase(demoDb(d2).t1), at: Date.now(), modo: 'demo' }, cargandoBase: false })\n    return\n  }\n  const h = d2.data('wikis')\n  if (!h) { poner(d2, { base: { rows: [], error: 'El parámetro \"wikis\" no está conectado.' } }); return }\n  poner(d2, { cargandoBase: true })\n  try {\n    let filas, modo = 'aggregate', parcial = false\n    try { filas = filasDe(await leerConLimite(dsAggregate(h, PIPELINE_BASE))) } catch (e) {\n      const r = await baseViaFind(h)   // policy sin aggregate (o aggregate colgado): find paginado\n      filas = r.filas; parcial = r.parcial; modo = 'find'\n    }\n    const rows = agruparBase(filas)\n    poner(d2, { base: { rows: rows, at: Date.now(), modo: modo, parcial: parcial, sinAutor: rows.length > 0 && rows.every(function (r) { return !r.imported_by }) } })\n  } catch (e) {\n    const prev = d2.state.base\n    poner(d2, { base: { rows: (prev && prev.rows) || [], at: prev && prev.at, error: 'No se pudo leer la base: ' + textoError(errInfo(e, ctx)) } })\n  } finally { poner(d2, { cargandoBase: false }) }\n}\nfunction ordenarJobs(rows) {\n  const stamp = function (j) { return tiempoDe(j.created_at || j.started_at || j.createdAt) || Number.MAX_SAFE_INTEGER }\n  return rows.slice().sort(function (a, b) { return stamp(b) - stamp(a) })\n}\nasync function cargarJobs(d2, ctx) {\n  if (isDemo(d2)) {\n    poner(d2, { cargandoJobs: true })\n    await dormir(200)\n    poner(d2, { jobs: { rows: ordenarJobs(demoDb(d2).t3), at: Date.now() }, cargandoJobs: false })\n    return\n  }\n  const h = d2.data('jobs')\n  if (!h) { poner(d2, { jobs: { rows: [], error: 'El parámetro \"jobs\" no está conectado.' } }); return }\n  poner(d2, { cargandoJobs: true })\n  try {\n    let rows\n    try { rows = filasDe(await leerConLimite(dsFind(h, { $sort: { created_at: -1 }, $limit: 50 }))) } catch (e) {\n      rows = (h.records && h.records()) || []\n      if (!rows.length) throw e\n    }\n    poner(d2, { jobs: { rows: ordenarJobs(rows), at: Date.now() } })\n  } catch (e) {\n    poner(d2, { jobs: { rows: [], error: 'No se pudo leer el historial: ' + textoError(errInfo(e, ctx)) } })\n  } finally { poner(d2, { cargandoJobs: false }) }\n}\nfunction filaBase(d2, clave) {\n  const b = d2.state.base\n  return ((b && b.rows) || []).filter(function (r) { return r.key === clave })[0] || null\n}\nfunction leerCred(d2, ctx) {\n  const e = d2.$('#bd-email'), p = d2.$('#bd-pass')\n  if (e) ctx.vault.email = String(e.value || '').trim()\n  if (p) ctx.vault.password = String(p.value || '')\n  return ctx.vault\n}\nasync function completarItem(d2, x, mercados) {\n  const prep = await prepararArticulo(x)\n  const b = d2.state.base\n  const base = (b && b.rows) || []\n  const ex = base.filter(function (r) { return r.article_id === x.article_id && r.instance === x.instance })[0] || null\n  const desconocida = !ex && (!b || !!b.error || !!b.parcial)\n  const sug = sugerirCategoria(prep.tituloArt, prep.fragmentos)\n  const out = {\n    article_id: x.article_id, estado: 'encontrado', instance: x.instance, url: x.url,\n    source_updated_at: x.source_updated_at, tags: x.tags || [], viaRespaldo: !!x.viaRespaldo,\n    titulo: prep.tituloArt, contexto: prep.tituloArt, fragmentos: prep.fragmentos, omitidos: prep.omitidos,\n    secciones: prep.secciones, chars: prep.chars, mercados: x.mercados || mercados,\n    existente: ex ? { version: ex.version, markets: ex.markets || [], chunks: ex.chunks, category: ex.category || '', titulo: ex.titulo || '' } : null,\n    baseDesconocida: desconocida\n  }\n  if (ex) {\n    out.categoria = ex.category || ''\n    out.categoriaSugerida = false\n    out.sugerencia = (sug && sug !== out.categoria) ? sug : ''\n  } else if (desconocida) {\n    out.categoria = ''\n    out.conservarCat = true\n    out.categoriaSugerida = false\n    out.sugerencia = sug\n  } else {\n    out.categoria = sug\n    out.categoriaSugerida = !!sug\n    out.sugerencia = ''\n  }\n  if (!prep.fragmentos.length) { out.tipo = 'contenido'; out.mensaje = 'El artículo existe pero no tiene texto para importar.' }\n  else if (prep.fragmentos.length > MAX_FRAGMENTOS_ART) { out.tipo = 'largo'; out.mensaje = 'Tiene ' + prep.fragmentos.length + ' fragmentos y el importador acepta hasta ' + MAX_FRAGMENTOS_ART + ' por artículo: dividir el artículo en Beedoo.' }\n  return out   // el HTML crudo no se guarda en el estado\n}\nfunction pendiente(id, instance) { return { article_id: id, estado: 'pendiente', instance: instance } }\nfunction reintentable(x) { return x.estado === 'error' }\nfunction respaldable(x) { return x.estado === 'no_encontrado' && !!x.respaldoFallo }\nasync function previsualizar(d2, ctx, modo) {\n  if (d2.state.busy) return\n  modo = modo || 'nuevo'\n  const pvPrev = d2.state.preview\n  let ids, mk, eco, pl\n  const faltas = []\n  if (modo !== 'nuevo') {\n    if (!pvPrev || pvPrev.importado) return\n    ids = pvPrev.items.filter(modo === 'respaldo' ? respaldable : reintentable).map(function (x) { return x.article_id })\n    if (!ids.length || (modo === 'respaldo' && !pvPrev.fallback)) return\n    mk = pvPrev.markets; eco = pvPrev.ecommerce\n    pl = { instance: pvPrev.instance, fallback: pvPrev.fallback, forzada: pvPrev.forzada }\n  } else {\n    ids = leerIds(d2.state.idsText).validos\n    mk = mercadosSel(d2); eco = !!d2.state.ecommerce; pl = plan(d2)\n    if (!ids.length) faltas.push('Ingresar al menos un ID de artículo válido.')\n    else if (ids.length > MAX_IDS) faltas.push('Se admiten hasta ' + MAX_IDS + ' IDs por importación (hay ' + ids.length + '): dividir la lista.')\n    if (!mk.length) faltas.push('Elegir al menos un mercado.')\n  }\n  const cred = leerCred(d2, ctx)\n  if (!cred.email || !cred.password) faltas.push('Completar el e-mail y la contraseña de Beedoo.')\n  else if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(cred.email)) faltas.push('El e-mail de Beedoo no parece válido.')\n  if (faltas.length) { poner(d2, { aviso: { tipo: 'error', texto: faltas.join(' ') } }); return }\n  const v = vida(d2)\n  v.detener = false\n  ctx.tocar()\n  const res = {}\n  if (modo !== 'nuevo') pvPrev.items.forEach(function (x) { if (modo === 'respaldo' || ids.indexOf(x.article_id) < 0) res[x.article_id] = x })\n  const orden = modo !== 'nuevo' ? pvPrev.items.map(function (x) { return x.article_id }) : ids\n  const principal = modo === 'respaldo' ? [] : ids\n  const nuevo = {\n    at: Date.now(), firma: modo !== 'nuevo' ? pvPrev.firma : firma(d2), instance: pl.instance, fallback: pl.fallback,\n    forzada: pl.forzada, markets: mk, ecommerce: eco, importado: false\n  }\n  const publicar = function () {\n    nuevo.items = orden.map(function (id) { return res[id] || pendiente(id, pl.instance) })\n    return Object.assign({}, nuevo)\n  }\n  poner(d2, { busy: 'buscar', aviso: null, resultado: null, preview: publicar(), abiertos: modo !== 'nuevo' ? (d2.state.abiertos || {}) : {}, prog: { etiqueta: 'Leyendo la base actual…', hecho: 0, total: ids.length } })\n  let corte = null, fallasSeguidas = 0, hechos = 0\n  const correr = async function (instance, lote, esRespaldo) {\n    let r, falla\n    try {\n      const c = ctx.vault\n      if (!c.email || !c.password) throw errTipo('las credenciales se olvidaron durante la consulta', 'detenido')\n      r = leerBuscar(await llamarApi(d2, ctx, { op: 'buscar', instance: instance, articleIds: lote, email: c.email, password: c.password }), lote, instance, ctx)\n      falla = !!r.global\n    } catch (e) {\n      const inf = errInfo(e, ctx)\n      r = { porId: {}, global: inf }\n      lote.forEach(function (id) { r.porId[id] = itemError(id, instance, inf.texto, inf.tipo) })\n      falla = true\n    }\n    fallasSeguidas = falla ? fallasSeguidas + 1 : 0\n    const g = r.global\n    if (g && /^(login|sesion|config|detenido|instancia)$/.test(g.tipo)) corte = { tipo: g.tipo, texto: g.texto, instance: instance, respaldo: esRespaldo }\n    else if (fallasSeguidas >= 2) corte = { tipo: g ? g.tipo : 'red', texto: (g && g.texto) || 'error desconocido', instance: instance, respaldo: esRespaldo, seguidas: true }\n    return r\n  }\n  try {\n    if (!d2.state.base || !(d2.state.base.rows || []).length) await cargarBase(d2, ctx)\n    const lotes = enLotes(principal, LOTE)\n    if (lotes.length) poner(d2, { prog: { etiqueta: 'Consultando Beedoo (' + pl.instance + ')…', hecho: 0, total: principal.length } })\n    for (let i = 0; i < lotes.length; i++) {\n      if (!v.activo) return\n      const lote = lotes[i]\n      if (v.detener && !corte) corte = { tipo: 'detenido', texto: 'detenido por el usuario' }\n      if (corte) { lote.forEach(function (id) { res[id] = itemError(id, pl.instance, 'No consultado: ' + sinPunto(corte.texto) + '.', corte.tipo) }); continue }\n      const r = await correr(pl.instance, lote, false)\n      for (let k = 0; k < lote.length; k++) {\n        const x = r.porId[lote[k]]\n        if (x.estado === 'encontrado') {\n          if (x.instance === INST.mx && pl.instance !== INST.mx) { x.viaRespaldo = true; x.mercados = ['MX'] }\n          res[lote[k]] = await completarItem(d2, x, mk)\n        } else res[lote[k]] = x\n      }\n      hechos += lote.length\n      poner(d2, { preview: publicar(), prog: { etiqueta: 'Consultando Beedoo (' + pl.instance + ')…', hecho: hechos, total: principal.length } })\n    }\n    if (pl.fallback && !corte) {\n      fallasSeguidas = 0   // otra instancia: el conteo de lotes fallidos empieza de nuevo\n      const faltan = ids.filter(function (id) { return res[id] && res[id].estado === 'no_encontrado' })\n      const lotesMx = enLotes(faltan, LOTE)\n      let hechosMx = 0\n      for (let i = 0; i < lotesMx.length; i++) {\n        if (!v.activo) return\n        const lote = lotesMx[i]\n        if (v.detener && !corte) corte = { tipo: 'detenido', texto: 'detenido por el usuario', instance: pl.fallback, respaldo: true }\n        if (corte) {\n          const reint = corte.tipo !== 'instancia'\n          lote.forEach(function (id) { res[id] = Object.assign({}, res[id], { mensaje: 'No existe en ' + pl.instance + (reint ? '; no se buscó en ' + pl.fallback + ' (' + sinPunto(corte.texto) + ').' : '; la búsqueda en ' + pl.fallback + ' todavía no está disponible.'), respaldoFallo: reint }) })\n          continue\n        }\n        poner(d2, { prog: { etiqueta: 'Buscando en ' + pl.fallback + ' lo que no está en ' + pl.instance + '…', hecho: hechosMx, total: faltan.length } })\n        const r = await correr(pl.fallback, lote, true)\n        for (let k = 0; k < lote.length; k++) {\n          const id = lote[k], x = r.porId[id]\n          if (x.estado === 'encontrado') { x.instance = pl.fallback; x.viaRespaldo = true; x.mercados = ['MX']; res[id] = await completarItem(d2, x, ['MX']) }\n          else if (x.estado === 'no_encontrado') res[id] = Object.assign({}, res[id], { mensaje: 'No existe en ' + pl.instance + ' ni en ' + pl.fallback + '.', respaldoFallo: false })\n          else if (x.tipo === 'instancia') res[id] = Object.assign({}, res[id], { mensaje: 'No existe en ' + pl.instance + '; la búsqueda en ' + pl.fallback + ' todavía no está disponible.', respaldoFallo: false })\n          else res[id] = Object.assign({}, res[id], { mensaje: 'No existe en ' + pl.instance + '; la búsqueda en ' + pl.fallback + ' falló (' + (TIPOS_ERROR[x.tipo] || 'error') + ': ' + sinPunto(x.mensaje) + ').', respaldoFallo: true })\n        }\n        hechosMx += lote.length\n        poner(d2, { preview: publicar() })\n      }\n    }\n  } finally {\n    if (v.activo) cerrarPrevia(d2, ctx, publicar(), corte)\n  }\n}\nfunction cerrarPrevia(d2, ctx, final, corte) {\n  let aviso = null\n  const it = final.items || []\n  if (corte && corte.tipo === 'login' && !corte.respaldo) {\n    aviso = { tipo: 'error', texto: 'Beedoo rechazó el inicio de sesión en ' + corte.instance + '. Verificar el e-mail y la contraseña de Beedoo e intentar de nuevo; los artículos no se consultaron.' }\n    ctx.olvidarClave()\n  } else if (corte && corte.tipo === 'login') {\n    aviso = { tipo: 'error', texto: 'Beedoo rechazó el inicio de sesión en ' + corte.instance + ': los artículos que no están en ' + final.instance + ' no pudieron buscarse allí. Si la cuenta de ' + corte.instance + ' es otra, cambiar las credenciales y usar «Buscar en ' + corte.instance + '».' }\n  } else if (corte && corte.tipo === 'sesion') {\n    aviso = { tipo: 'error', texto: 'La sesión no tiene permiso para usar el importador (se requiere rol supervisor) o expiró. Volver a ingresar e intentar de nuevo.' }\n  } else if (corte && corte.tipo === 'config') {\n    aviso = { tipo: 'error', texto: corte.texto }\n  } else if (corte && corte.tipo === 'instancia' && corte.respaldo) {\n    aviso = { tipo: 'info', texto: 'La búsqueda en ' + corte.instance + ' todavía no está disponible en el importador (' + sinPunto(corte.texto) + '): lo que no está en ' + final.instance + ' queda como no encontrado.' }\n  } else if (corte && corte.tipo === 'instancia') {\n    aviso = { tipo: 'error', texto: 'El importador no tiene disponible la instancia ' + corte.instance + ' (' + sinPunto(corte.texto) + '). No se consultó ningún artículo.' }\n  } else if (corte && corte.tipo === 'detenido') {\n    aviso = { tipo: 'info', texto: 'Previsualización detenida: ' + sinPunto(corte.texto) + '.' }\n  } else if (corte && corte.seguidas) {\n    const quien = corte.tipo === 'beedoo' ? 'Beedoo (' + corte.instance + ') no responde'\n      : corte.tipo === 'red' ? 'Falla de red'\n        : corte.tipo === 'tiempo' ? 'El importador no respondió a tiempo' : 'El importador devolvió errores'\n    aviso = { tipo: 'error', texto: quien + ': la ' + (corte.respaldo ? 'búsqueda en ' + corte.instance : 'previsualización') + ' se detuvo tras 2 lotes seguidos con error (' + sinPunto(corte.texto) + '). Lo consultado se muestra abajo; reintentar más tarde.' }\n  } else if (corte) {\n    aviso = { tipo: 'error', texto: 'Falla de red o del importador: la previsualización se interrumpió (' + sinPunto(corte.texto) + '). Lo consultado se muestra abajo; usar «Reintentar» para los que fallaron.' }\n  } else {\n    const ok = it.filter(listo).length\n    const nf = it.filter(function (x) { return x.estado === 'no_encontrado' }).length\n    const er = it.length - ok - nf - it.filter(function (x) { return x.estado === 'pendiente' }).length\n    aviso = { tipo: 'ok', texto: 'Previsualización lista: ' + plural(ok, 'artículo listo', 'artículos listos') + (nf ? ', ' + plural(nf, 'no encontrado', 'no encontrados') : '') + (er ? ', ' + plural(er, 'con error', 'con error') : '') + '.' }\n  }\n  vida(d2).foco = '#pv-t'\n  poner(d2, { busy: null, prog: null, preview: final, aviso: aviso })\n}\nfunction cargaGravar(jobId, pv, x) {\n  const art = {\n    article_id: x.article_id, source_updated_at: x.source_updated_at || null,\n    context: x.contexto || x.titulo || '', tags: x.tags || [],\n    chunks: x.fragmentos.map(function (t) { return { title: t.title, content: t.content, chunk_index: t.chunk_index, content_hash: t.content_hash } })\n  }\n  if (!x.conservarCat) art.category = x.categoria || ''\n  return {\n    op: 'gravar', job_id: jobId, instance: x.instance, ecommerce: !!pv.ecommerce && x.instance === INST.eco,\n    markets: x.mercados.slice(), forzar: debeForzar(x), article: art\n  }\n}\nasync function abrirJob(d2, ctx, job) {\n  const r = await llamarApi(d2, ctx, { op: 'job', acao: 'iniciar', job: Object.assign({ status: 'importando' }, job) })\n  const eg = r.ok === false ? errorDe(r) : null\n  if (eg) throw errTipo(limpiarMsg(eg.message || eg.code, ctx) + (eg.code ? ' [' + eg.code + ']' : ''), CODIGOS[eg.code] || 'servidor')\n  const id = r.job_id || r.jobId || (r.job && (r.job.job_id || r.job._id)) || null\n  if (!id) throw errTipo('el importador no devolvió el identificador del registro de importación', 'servidor')\n  return { job_id: String(id), identity: r.identity || null }\n}\nasync function cerrarJob(d2, ctx, jobId, status, items) {\n  try {\n    const r = await llamarApi(d2, ctx, {\n      op: 'job', acao: 'concluir',\n      job: {\n        job_id: jobId, status: status,\n        results: items.map(function (x) { return { article_id: x.article_id, instance: x.instance || null, status: x.status, chunks: x.chunks, version: x.version != null ? x.version : null, message: recortar(x.message || '', 300) } })\n      }\n    })\n    const eg = r.ok === false ? errorDe(r) : null\n    return eg ? 'El historial no registró el cierre de la importación: ' + limpiarMsg(eg.message || eg.code, ctx) : null\n  } catch (e) { return 'El historial no registró el cierre de la importación: ' + textoError(errInfo(e, ctx)) }\n}\nfunction contar(items) {\n  const c = {}\n  ;(items || []).forEach(function (r) { const k = r && r.status; if (k) c[k] = (c[k] || 0) + 1 })\n  return c\n}\nconst RESUMEN = { creado: ['creado', 'creados'], actualizado: ['actualizado', 'actualizados'], sin_cambios: ['sin cambios', 'sin cambios'], no_encontrado: ['no encontrado', 'no encontrados'], error: ['con error', 'con error'], removido: ['quitado', 'quitados'] }\nfunction resumenEstados(c) { return ORDEN_HIST.filter(function (k) { return c[k] }).map(function (k) { return plural(c[k], RESUMEN[k][0], RESUMEN[k][1]) }).join(', ') }\nconst MOTIVOS_JOB = { estado: 'ya no está en curso', autor: 'es de otro supervisor', no_existe: 'no existe' }\nfunction noGrabado(x) { return x && x.existente ? 'La versión vigente sigue intacta.' : 'No se grabó nada.' }\nasync function importar(d2, ctx) {\n  if (d2.state.busy) return\n  const pv = d2.state.preview\n  if (!pv || pv.importado || pv.firma !== firma(d2)) return\n  const listos = pv.items.filter(listo)\n  if (!listos.length) return\n  const v = vida(d2)\n  v.detener = false\n  const t0 = Date.now()\n  const porId = {}\n  pv.items.forEach(function (x) {\n    if (listo(x)) return\n    porId[x.article_id] = x.estado === 'no_encontrado'\n      ? { article_id: x.article_id, instance: x.instance, status: 'no_encontrado', chunks: 0, message: x.mensaje || 'No existe en Beedoo.' }\n      : { article_id: x.article_id, instance: x.instance, status: 'error', chunks: 0, message: (TIPOS_ERROR[x.tipo] || 'Error') + ': ' + (x.mensaje || 'no se pudo leer'), tipo: x.tipo || 'servidor' }\n  })\n  poner(d2, { busy: 'importar', aviso: null, resultado: null, prog: { etiqueta: 'Registrando la importación…', hecho: 0, total: listos.length } })\n  let jobId = null, corte = null, cierre = null, fallasSeguidas = 0\n  try {\n    try {\n      const ab = await abrirJob(d2, ctx, { instance: pv.instance, markets: pv.markets, ecommerce: pv.ecommerce, article_ids: pv.items.map(function (x) { return x.article_id }) })\n      jobId = ab.job_id\n    } catch (e) {\n      const inf = errInfo(e, ctx)\n      poner(d2, { aviso: { tipo: 'error', texto: 'No se pudo registrar la importación. ' + textoError(inf) + (/no se grab/i.test(inf.texto) ? '' : ' No se grabó nada.') } })\n      return\n    }\n    for (let k = 0; k < listos.length; k++) {\n      const x = listos[k]\n      if (!v.activo && !corte) corte = { tipo: 'detenido', texto: 'la pantalla se cerró' }\n      if (v.detener && !corte) corte = { tipo: 'detenido', texto: 'detenido por el usuario' }\n      if (corte) { porId[x.article_id] = { article_id: x.article_id, instance: x.instance, status: 'error', chunks: 0, message: 'No procesado: ' + sinPunto(corte.texto) + '. ' + noGrabado(x), tipo: corte.tipo }; continue }\n      poner(d2, { prog: { etiqueta: 'Grabando ' + x.article_id + ' (' + (k + 1) + ' de ' + listos.length + ')…', hecho: k, total: listos.length } })\n      try {\n        const g = leerGravar(await llamarApi(d2, ctx, cargaGravar(jobId, pv, x)), x, ctx)\n        porId[x.article_id] = g\n        fallasSeguidas = 0\n        if (g.status === 'error' && cortaLote(g.code, g.motivo)) {\n          corte = { tipo: CODIGOS[g.code] || 'servidor', texto: g.code === 'SESION_NO_IDENTIFICADA' ? 'el importador no identificó la sesión del supervisor' : 'el registro de la importación ' + (MOTIVOS_JOB[g.motivo] || 'no es válido') }\n        }\n      } catch (e) {\n        const inf = errInfo(e, ctx)\n        fallasSeguidas++\n        porId[x.article_id] = { article_id: x.article_id, instance: x.instance, status: 'error', chunks: 0, message: textoError(inf), tipo: inf.tipo }\n        if (inf.tipo === 'sesion' || inf.tipo === 'config') corte = { tipo: inf.tipo, texto: inf.tipo === 'sesion' ? 'la sesión no tiene permiso o expiró' : inf.texto }\n        else if (fallasSeguidas >= 2) corte = { tipo: inf.tipo, texto: 'dos grabaciones seguidas fallaron (' + (TIPOS_ERROR[inf.tipo] || 'error') + ')' }\n      }\n    }\n  } finally {\n    const items = pv.items.map(function (x) { return porId[x.article_id] }).filter(Boolean)\n    const c = contar(items)\n    const okN = (c.creado || 0) + (c.actualizado || 0) + (c.sin_cambios || 0)\n    const dur = Date.now() - t0\n    if (jobId) cierre = await cerrarJob(d2, ctx, jobId, (corte || !okN) ? 'erro' : 'concluido', items)\n    ctx.olvidar('fin')\n    if (jobId) {\n      vida(d2).foco = '#res-t'\n      poner(d2, {\n        busy: null, prog: null,\n        aviso: { tipo: (corte || c.error) ? 'info' : 'ok', texto: (corte ? 'Importación interrumpida: ' : 'Importación terminada: ') + (resumenEstados(c) || 'ningún artículo procesado') + '.' },\n        preview: Object.assign({}, pv, { importado: true }),\n        resultado: { job_id: jobId, items: items, duracion: dur, corte: corte, cierre: cierre, at: Date.now() }\n      })\n      cargarBase(d2, ctx)\n      if (d2.state.jobs) cargarJobs(d2, ctx)\n    } else poner(d2, { busy: null, prog: null })\n  }\n}\nasync function quitar(d2, ctx) {\n  const c = d2.state.confirmar\n  if (!c || d2.state.busy) return\n  poner(d2, { busy: 'remover' })\n  let jobId = null\n  try {\n    try {\n      jobId = (await abrirJob(d2, ctx, { instance: c.instance, markets: (c.markets && c.markets.length) ? c.markets : ['AR'], ecommerce: c.instance === INST.eco, article_ids: [c.article_id] })).job_id\n    } catch (e) {\n      poner(d2, { confirmar: null, avisoBase: { tipo: 'error', texto: 'No se pudo registrar la remoción; no se quitó nada. ' + textoError(errInfo(e, ctx)) } })\n      return\n    }\n    let item, aviso, cerrado = false\n    try {\n      const r = await llamarApi(d2, ctx, { op: 'remover', instance: c.instance, article_id: c.article_id, job_id: jobId })\n      cerrado = r.job_cerrado === true\n      const n = [r.removidos, r.removed, r.count, r.deleted].filter(function (x) { return typeof x === 'number' })[0]\n      const st = norm(r.status || (r.ok === false ? 'error' : 'removido'))\n      const eg = r.ok === false ? errorDe(r) : null\n      if (st === 'removido' && r.ok !== false) {\n        item = { article_id: c.article_id, instance: c.instance, status: 'removido', chunks: n || 0, message: 'Quitado de la base' + (n != null ? ' (' + plural(n, 'fragmento', 'fragmentos') + ')' : '') + ' para ' + ((r.markets || c.markets || []).join(', ') || 'todos los mercados') + '.' }\n        aviso = { tipo: 'ok', texto: 'Se quitó el artículo ' + c.article_id + ' (' + c.instance + ')' + (n != null ? ': ' + plural(n, 'fragmento eliminado', 'fragmentos eliminados') : '') + '.' }\n      } else if (st === 'no_encontrado') {\n        item = { article_id: c.article_id, instance: c.instance, status: 'no_encontrado', chunks: 0, message: 'No había fragmentos de este artículo en la base.' }\n        aviso = { tipo: 'info', texto: 'El artículo ' + c.article_id + ' ya no tenía fragmentos en la base.' }\n      } else {\n        const resto = typeof r.restantes === 'number' ? r.restantes : null\n        const txt = st === 'parcial'\n          ? 'Se quitaron ' + plural(n || 0, 'fragmento', 'fragmentos') + (resto != null ? ' y quedaron ' + resto : ', pero no se confirmó el borrado de todos') + ': repetir «Quitar» para terminar.'\n          : limpiarMsg((eg && (eg.message || eg.code)) || 'el importador rechazó la remoción', ctx)\n        item = { article_id: c.article_id, instance: c.instance, status: 'error', chunks: n || 0, message: txt }\n        aviso = { tipo: 'error', texto: 'No se pudo quitar del todo el artículo ' + c.article_id + '. ' + txt }\n      }\n    } catch (e) {\n      const inf = errInfo(e, ctx)\n      item = { article_id: c.article_id, instance: c.instance, status: 'error', chunks: 0, message: textoError(inf) }\n      aviso = { tipo: 'error', texto: 'No se pudo quitar el artículo ' + c.article_id + '. ' + textoError(inf) }\n    }\n    const cierre = cerrado ? null : await cerrarJob(d2, ctx, jobId, item.status === 'error' ? 'erro' : 'concluido', [item])\n    if (cierre) aviso = { tipo: aviso.tipo, texto: aviso.texto + ' ' + cierre }\n    poner(d2, { confirmar: null, avisoBase: aviso })\n    cargarBase(d2, ctx)\n    if (d2.state.jobs) cargarJobs(d2, ctx)\n  } finally { poner(d2, { busy: null }) }\n}\nconst DEMO_TEMAS = [\n  'Devolución de dinero por cese de consultora', 'Plazos de entrega de pedidos', 'Reseteo de contraseña de la consultora',\n  'Pedido retenido por límite de crédito', 'Cambio de dirección de entrega', 'Producto con defecto de fábrica'\n]\nconst DEMO_PARRAFO = 'Antes de cerrar la atención, el asesor confirma con la consultora el número de pedido, la fecha de facturación y el medio de pago utilizado. Si la consulta corresponde a un reclamo, se registra el caso en la herramienta de gestión con la categoría correcta y se informa el plazo estimado de respuesta. Cuando la situación no está contemplada en este procedimiento, se deriva al equipo de soporte de segundo nivel indicando el motivo y la información ya validada.'\nconst DEMO_FIJOS = { 130164: 'Devolución de dinero por cese de consultora', 211125: 'Pedido retenido por límite de crédito', 215131: 'Cambio de dirección de entrega', 478306: 'Mi Tienda Natura: medios de pago', 550019: 'Facturación de pedidos' }\nfunction demoArticulo(id, instance) {\n  const n = Number(String(id).slice(-2)) || 0\n  const tema = DEMO_FIJOS[id] || (DEMO_TEMAS[n % DEMO_TEMAS.length] + (instance === INST.mx ? ' (México)' : (instance === INST.eco ? ' — tienda online' : '')))\n  return {\n    article_id: id, found: true, instance: instance, title: tema, updated_at: new Date(Date.now() - (n + 1) * 86400000).toISOString(),\n    tags: ['demo', instance],\n    sessions: [\n      { title: 'Objetivo', html: '<p><span style=\"font-size:14px\">Orientar al asesor sobre&nbsp;<b>' + tema.toLowerCase() + '</b>.</span></p><script>window.demo=1</script><style>p{color:red}</style>' },\n      { title: 'Paso a paso', html: '<ol><li>Validar la identidad de la consultora.</li><li>Consultar el estado en el sistema.<ul><li>Si figura <b>retenido</b>, revisar el crédito disponible.</li></ul></li><li>Registrar el caso con el número de pedido.</li></ol><p>Plazo de respuesta:<br>hasta 48&nbsp;horas hábiles.</p>' },\n      { title: 'Plazos por región', html: '<table><thead><tr><th>Región</th><th>Plazo</th></tr></thead><tbody><tr><td>Capital</td><td>2 días hábiles</td></tr><tr><td>Interior</td><td>5 días hábiles</td></tr></tbody></table>' },\n      { title: 'Detalle del procedimiento', html: '<div>' + DEMO_PARRAFO + '</div><div>' + DEMO_PARRAFO.replace('Antes de cerrar', 'Al iniciar') + '</div><div>' + DEMO_PARRAFO.replace('segundo nivel', 'tercer nivel') + '</div>' }\n    ]\n  }\n}\nfunction demoInicial() {\n  const ahora = Date.now(), dia = 86400000\n  const iso = function (t) { return new Date(t).toISOString() }\n  const v = function (id, inst, ver, n, extra) { return Object.assign({ _id: { article_id: id, instance: inst, version: ver }, chunks: n, url: beedooUrl(inst, id) }, extra) }\n  return {\n    t1: [\n      v('130164', INST.latam, 1, 5, { title: 'Devolución de dinero por cese de consultora' + SEP + 'Objetivo', markets: ['AR'], ecommerce: false, category: 'REGISTRO', imported_at: iso(ahora - 3 * dia), imported_by: 'supervisor.demo@natura.net', job_id: 'demo-job-1' }),\n      v('211125', INST.latam, 2, 12, { title: 'Pedido retenido por límite de crédito' + SEP + 'Paso a paso', markets: ['AR', 'PE'], ecommerce: false, category: 'PAGOS', imported_at: iso(ahora - dia), imported_by: 'ana.supervisora@natura.net', job_id: 'demo-job-2' }),\n      v('215131', INST.latam, 2, 8, { title: 'Cambio de dirección de entrega' + SEP + 'Objetivo', markets: ['AR'], ecommerce: false, category: 'PEDIDOS', imported_at: iso(ahora - 2 * dia), imported_by: 'ana.supervisora@natura.net', job_id: 'demo-job-1' }),\n      v('215131', INST.latam, 3, 9, { title: 'Cambio de dirección de entrega' + SEP + 'Objetivo', markets: ['AR', 'CO'], ecommerce: false, category: 'PEDIDOS', imported_at: iso(ahora - 2 * dia + 60000), imported_by: 'ana.supervisora@natura.net', job_id: 'demo-job-1' }),\n      v('478306', INST.eco, 1, 7, { title: 'Mi Tienda Natura: medios de pago' + SEP + 'Tarjetas', markets: ['AR', 'MX', 'CO', 'PE', 'CL', 'EC'], ecommerce: true, category: 'VENTAS_EN_LÍNEA', imported_at: iso(ahora - 5 * dia), imported_by: 'supervisor.demo@natura.net', job_id: 'demo-job-0' }),\n      v('550019', INST.mx, 1, 4, { title: 'Facturación de pedidos (México)' + SEP + 'Objetivo', markets: ['MX'], ecommerce: false, category: 'PEDIDOS', imported_at: iso(ahora - 6 * dia), imported_by: 'supervisor.demo@natura.net', job_id: 'demo-job-0' })\n    ],\n    t3: [\n      { job_id: 'demo-job-2', created_at: iso(ahora - dia), created_by: 'ana.supervisora@natura.net', instance: INST.latam, markets: ['AR', 'PE'], ecommerce: false, article_ids: ['211125', '130110'], status: 'concluido', started_at: iso(ahora - dia), finished_at: iso(ahora - dia + 48200), duration_ms: 48200, results: [{ article_id: '211125', status: 'actualizado', chunks: 12, message: 'Actualizado a v2 con 12 fragmentos.' }, { article_id: '130110', status: 'no_encontrado', chunks: 0, message: 'No existe en naturalatam.' }] },\n      { job_id: 'demo-job-1', created_at: iso(ahora - 3 * dia), created_by: 'supervisor.demo@natura.net', instance: INST.latam, markets: ['AR'], ecommerce: false, article_ids: ['130164', '215131', '999'], status: 'concluido', started_at: iso(ahora - 3 * dia), finished_at: iso(ahora - 3 * dia + 91000), duration_ms: 91000, results: [{ article_id: '130164', status: 'creado', chunks: 5, message: 'Creado (v1) con 5 fragmentos.' }, { article_id: '215131', status: 'creado', chunks: 8, message: 'Creado (v2) con 8 fragmentos.' }, { article_id: '999', status: 'error', chunks: 0, message: 'Error de Beedoo: el servidor respondió 500.' }] },\n      { job_id: 'demo-job-0', created_at: iso(ahora - 6 * dia), created_by: 'supervisor.demo@natura.net', instance: INST.eco, markets: ['AR', 'MX', 'CO', 'PE', 'CL', 'EC'], ecommerce: true, article_ids: ['478306'], status: 'importando', started_at: iso(ahora - 6 * dia), results: [] }\n    ]\n  }\n}\nfunction demoDb(d2) { if (!d2.state.demo) d2.state.demo = demoInicial(); return d2.state.demo }\nasync function demoApi(d2, p) {\n  await dormir(p.op === 'gravar' ? 500 : 650)\n  const db = demoDb(d2)\n  const sesionDemo = 'supervisor.demo@natura.net'\n  const ahora = new Date().toISOString()\n  if (p.op === 'buscar') {\n    if (p.password === 'x') return { ok: false, op: 'buscar', error: { code: 'AUTH_BEEDOO', message: 'Beedoo rechazó el inicio de sesión con esas credenciales.', http_status: 401 } }\n    if ((p.articleIds || []).indexOf('998') >= 0) throw new TypeError('Failed to fetch')\n    const arts = [], errs = []\n    ;(p.articleIds || []).forEach(function (id) {\n      if (id === '999') { errs.push({ article_id: id, instance: p.instance, code: 'ERROR_BEEDOO', message: 'Beedoo respondió 500 al leer el artículo.' }); return }\n      const existe = !/0$/.test(id) && (p.instance === INST.mx ? /9$/.test(id) : (p.instance === INST.eco || !/9$/.test(id)))\n      if (existe) arts.push(demoArticulo(id, p.instance))\n      else errs.push({ article_id: id, instance: p.instance, code: 'NO_ENCONTRADO', message: 'El artículo no fue encontrado o el usuario no tiene acceso a él.' })\n    })\n    return { ok: true, op: 'buscar', instance: p.instance, articles: arts, errors: errs, identity: 'sesion' }\n  }\n  if (p.op === 'job' && p.acao === 'iniciar') {\n    const j = p.job || {}\n    const id = 'demo' + Date.now().toString(36)\n    db.t3 = [{ job_id: id, created_at: ahora, created_by: sesionDemo, instance: j.instance, markets: j.markets, ecommerce: j.ecommerce, article_ids: j.article_ids, status: j.status || 'importando', started_at: ahora, results: [] }].concat(db.t3)\n    return { ok: true, op: 'job', acao: 'iniciar', job_id: id, status: j.status || 'importando', identity: 'sesion' }\n  }\n  const jobDe = function (id) { return db.t3.filter(function (j) { return j.job_id === id })[0] || null }\n  const jobInvalido = function (op, j, aid) {\n    const motivo = !j ? 'no_existe' : (j.status !== 'importando' ? 'estado' : (j.created_by !== sesionDemo ? 'autor' : ((j.article_ids || []).indexOf(aid) < 0 ? 'articulo' : '')))\n    return motivo ? { ok: false, op: op, status: 'error', article_id: aid, instance: p.instance, job_id: p.job_id, error: { code: 'JOB_INVALIDO', message: 'El registro de importación indicado no existe, ya terminó, es de otro supervisor o no incluye este artículo; no se grabó nada.', motivo: motivo }, identity: 'sesion' } : null\n  }\n  if (p.op === 'job' && p.acao === 'concluir') {\n    const j = p.job || {}\n    const x = jobDe(j.job_id)\n    if (!x) return { ok: false, op: 'job', acao: 'concluir', job_id: j.job_id, error: { code: 'JOB_NO_ENCONTRADO', message: 'No existe un registro de importación con ese identificador.' }, identity: 'sesion' }\n    if (x.status !== 'preview' && x.status !== 'importando') return { ok: false, op: 'job', acao: 'concluir', job_id: j.job_id, error: { code: 'JOB_INVALIDO', message: 'Solo el supervisor que inició la importación puede actualizarla, y solo mientras está en curso.', motivo: 'estado' }, identity: 'sesion' }\n    const dur = Date.now() - tiempoDe(x.started_at)\n    db.t3 = db.t3.map(function (y) { return y === x ? Object.assign({}, y, { status: j.status, results: j.results || y.results, finished_at: ahora, duration_ms: dur }) : y })\n    return { ok: true, op: 'job', acao: 'concluir', job_id: j.job_id, status: j.status, n_results: (j.results || x.results || []).length, descartados: 0, duration_ms: dur, identity: 'sesion' }\n  }\n  if (p.op === 'gravar') {\n    const a = p.article\n    const inv = jobInvalido('gravar', jobDe(p.job_id), a.article_id)\n    if (inv) return inv\n    const previos = db.t1.filter(function (r) { return r._id.article_id === a.article_id && r._id.instance === p.instance })\n    const ult = previos.sort(function (x, y) { return y._id.version - x._id.version })[0] || null\n    const prev = ult ? unirMercados(ult.markets, []) : []\n    const mk = unirMercados(prev, p.markets)\n    const hashes = a.chunks.map(function (c) { return c.chunk_index + ':' + c.content_hash + ':' + c.title }).join(',')\n    const cat = typeof a.category === 'string' ? a.category : (ult ? ult.category || '' : '')\n    if (ult && !p.forzar && previos.length === 1 && ult.hashes === hashes && mk.join(',') === prev.join(',')) return { ok: true, op: 'gravar', status: 'sin_cambios', article_id: a.article_id, instance: p.instance, job_id: p.job_id, chunks: ult.chunks, version: ult._id.version, markets: mk, category: ult.category || '', identity: 'sesion' }\n    const ver = ult ? ult._id.version + 1 : 1\n    const removidos = previos.reduce(function (s, r) { return s + r.chunks }, 0)\n    db.t1 = db.t1.filter(function (r) { return previos.indexOf(r) < 0 }).concat([{\n      _id: { article_id: a.article_id, instance: p.instance, version: ver }, chunks: a.chunks.length, title: (a.chunks[0] || {}).title || a.context,\n      markets: mk, ecommerce: !!p.ecommerce, category: cat, url: beedooUrl(p.instance, a.article_id), imported_at: ahora, imported_by: sesionDemo, job_id: p.job_id, hashes: hashes\n    }])\n    return { ok: true, op: 'gravar', status: ult ? 'actualizado' : 'creado', article_id: a.article_id, instance: p.instance, job_id: p.job_id, chunks: a.chunks.length, version: ver, markets: mk, markets_previos: prev, category: cat, removidos: removidos, aviso: null, identity: 'sesion' }\n  }\n  if (p.op === 'remover') {\n    const j = jobDe(p.job_id)\n    const inv = jobInvalido('remover', j, p.article_id)\n    if (inv) return inv\n    const antes = db.t1.filter(function (r) { return r._id.article_id === p.article_id && r._id.instance === p.instance })\n    const n = antes.reduce(function (s, r) { return s + r.chunks }, 0)\n    const mk = antes.length ? unirMercados(antes[0].markets, []) : []\n    db.t1 = db.t1.filter(function (r) { return antes.indexOf(r) < 0 })\n    const item = { article_id: p.article_id, instance: p.instance, status: antes.length ? 'removido' : 'no_encontrado', chunks: n, version: null, message: antes.length ? 'Quitado de la base: ' + n + ' fragmentos (mercados ' + mk.join(', ') + ').' : 'No había fragmentos de este artículo en la base.' }\n    db.t3 = db.t3.map(function (x) { return x !== j ? x : Object.assign({}, x, { status: 'concluido', results: (x.results || []).concat([item]), finished_at: ahora, duration_ms: Date.now() - tiempoDe(x.started_at) }) })\n    if (!antes.length) return { ok: true, op: 'remover', status: 'no_encontrado', article_id: p.article_id, instance: p.instance, job_id: p.job_id, removidos: 0, restantes: 0, markets: [], versiones: [], aviso: null, error: null, job_cerrado: true, identity: 'sesion' }\n    return { ok: true, op: 'remover', status: 'removido', article_id: p.article_id, instance: p.instance, job_id: p.job_id, removidos: n, restantes: 0, markets: mk, versiones: antes.map(function (r) { return r._id.version }), aviso: null, error: null, job_cerrado: true, identity: 'sesion' }\n  }\n  return { ok: false, op: p.op, error: { code: 'OP_DESCONOCIDA', message: 'Operación desconocida: ' + p.op } }\n}\nfunction msgCaja(a, id) {\n  if (!a) return ''\n  const rol = a.tipo === 'error' ? 'alert' : 'status'\n  return '<div class=\"msg msg-' + attr(a.tipo) + '\" role=\"' + rol + '\"' + (id ? ' id=\"' + id + '\"' : '') + '>' + esc(a.texto) + '</div>'\n}\nfunction chipsMk(lista, nuevos) {\n  const l = unirMercados(lista, [])\n  if (!l.length) return '<span class=\"t2\">—</span>'\n  return l.map(function (c) { return '<span class=\"mkc' + (nuevos && nuevos.indexOf(c) >= 0 ? ' mkc-new' : '') + '\"' + (nuevos && nuevos.indexOf(c) >= 0 ? ' title=\"Mercado nuevo para este artículo\"' : '') + '>' + esc(c) + (nuevos && nuevos.indexOf(c) >= 0 ? ' +' : '') + '</span>' }).join('')\n}\nfunction pill(clase, texto, titulo) { return '<span class=\"pill pill-' + clase + '\"' + (titulo ? ' title=\"' + attr(titulo) + '\"' : '') + '>' + esc(texto) + '</span>' }\nfunction vistaProgreso(d2) {\n  const p = d2.state.prog\n  if (!p) return ''\n  const pct = p.total ? Math.min(100, Math.round((p.hecho / p.total) * 100)) : 0\n  return '<div class=\"prog-w\">'\n    + '<div class=\"prog-l\"><span>' + esc(p.etiqueta) + '</span><span>' + p.hecho + ' de ' + p.total + '</span></div>'\n    + '<div class=\"prog\" role=\"progressbar\" aria-label=\"' + attr(p.etiqueta) + '\" aria-valuemin=\"0\" aria-valuemax=\"' + p.total + '\" aria-valuenow=\"' + p.hecho + '\"><i style=\"width:' + pct + '%\"></i></div>'\n    + '<div class=\"prog-r\"><button type=\"button\" class=\"btn sm detener\">Detener</button><span class=\"hint\">Se detiene al terminar la llamada en curso.</span></div>'\n    + '</div>'\n}\nfunction vistaFormulario(d2, bz) {\n  const p = leerIds(d2.state.idsText)\n  const mk = mercadosSel(d2)\n  const eco = !!d2.state.ecommerce\n  const pl = plan(d2)\n  const reg = regiones(d2)\n  const dis = bz ? ' disabled' : ''\n  const inval = p.invalidos.slice(0, 20)\n  const estadoIds = p.validos.length\n    ? '<b>' + plural(p.validos.length, 'ID válido', 'IDs válidos') + '</b>' + (p.duplicados ? ' · ' + plural(p.duplicados, 'duplicado omitido', 'duplicados omitidos') : '') + (p.validos.length > MAX_IDS ? ' · <span class=\"warn-t\">máximo ' + MAX_IDS + ' por importación</span>' : '')\n    : 'Sin IDs todavía.'\n  let instTxt = '<b>' + esc(pl.instance) + '</b>'\n  if (pl.forzada) instTxt += '<small>Resincronización de un artículo de ' + esc(pl.instance) + ': se busca solo allí y entra solo para MX. Cambiar mercados o e-commerce vuelve a la regla normal.</small>'\n  else if (eco) instTxt += '<small>Contenido de e-commerce para los mercados elegidos.</small>'\n  else if (pl.fallback) instTxt += '<small>MX: lo que no exista en naturalatam se busca en naturamexico y se importa solo para MX.</small>'\n  else instTxt += '<small>Instancia común para todos los mercados.</small>'\n  return '<div class=\"col-form\">'\n    + '<div class=\"fld\">'\n    + '<label for=\"ids\" class=\"lbl\">IDs de artículos de Beedoo</label>'\n    + '<textarea id=\"ids\" class=\"ids\" rows=\"7\" spellcheck=\"false\" autocomplete=\"off\" aria-describedby=\"ids-ayuda ids-estado\"' + dis + ' placeholder=\"130164&#10;130175&#10;211125\">' + esc(d2.state.idsText || '') + '</textarea>'\n    + '<p id=\"ids-ayuda\" class=\"hint\">Uno por línea (también se aceptan comas o espacios). Solo números; los repetidos se cuentan una vez.</p>'\n    + '<p id=\"ids-estado\" class=\"hint\" aria-live=\"polite\">' + estadoIds + '</p>'\n    + (inval.length ? '<div class=\"inval\" role=\"note\"><span>' + plural(p.invalidos.length, 'entrada inválida se ignora', 'entradas inválidas se ignoran') + ':</span> ' + inval.map(function (t, i) { return '<code data-key=\"inv-' + i + '\">' + esc(t.length > 24 ? t.slice(0, 23) + '…' : t) + '</code>' }).join(' ') + (p.invalidos.length > inval.length ? ' <span>y ' + (p.invalidos.length - inval.length) + ' más</span>' : '') + '</div>' : '')\n    + '</div>'\n    + '<fieldset class=\"fld mk\"' + dis + '>'\n    + '<legend class=\"lbl\">Mercados</legend>'\n    + '<div class=\"mk-grid\">' + MERCADOS.map(function (c) {\n      return '<label class=\"mk-op\" data-key=\"mk-' + c + '\"><input type=\"checkbox\" class=\"mk-in\" value=\"' + c + '\"' + (mk.indexOf(c) >= 0 ? ' checked' : '') + '> <b>' + c + '</b> <span>' + esc(reg[c]) + '</span></label>'\n    }).join('') + '</div>'\n    + '<div class=\"mk-acc\"><button type=\"button\" class=\"lnk mk-todos\">Todos</button><span aria-hidden=\"true\">·</span><button type=\"button\" class=\"lnk mk-ninguno\">Ninguno</button></div>'\n    + '<p class=\"hint\">Los mercados se suman a los que el artículo ya tenga en la base; nunca se quitan los de otro país.</p>'\n    + '</fieldset>'\n    + '<div class=\"fld sw\">'\n    + '<input type=\"checkbox\" role=\"switch\" id=\"eco\" class=\"eco\"' + (eco ? ' checked' : '') + dis + '>'\n    + '<label for=\"eco\"><b>Contenido de e-commerce</b><span>Usa la instancia naturaecolatam.</span></label>'\n    + '</div>'\n    + '<div class=\"inst\" aria-live=\"polite\"><span class=\"lbl\">Instancia Beedoo</span>' + instTxt + '</div>'\n    + '<div class=\"fld cred\">'\n    + '<div class=\"lbl\" id=\"cred-t\">Credenciales de Beedoo</div>'\n    + '<div class=\"cred-in\" id=\"cred-box\" data-d2-static role=\"group\" aria-labelledby=\"cred-t\">'\n    + '<label for=\"bd-email\">E-mail</label>'\n    + '<input id=\"bd-email\" class=\"bd bd-email\" type=\"email\" inputmode=\"email\" autocomplete=\"off\" spellcheck=\"false\" data-lpignore=\"true\" data-1p-ignore placeholder=\"nombre@natura.net\">'\n    + '<label for=\"bd-pass\">Contraseña</label>'\n    + '<input id=\"bd-pass\" class=\"bd bd-pass\" type=\"password\" autocomplete=\"off\" data-lpignore=\"true\" data-1p-ignore placeholder=\"Contraseña de Beedoo\">'\n    + '</div>'\n    + '<p class=\"hint\">Solo en la memoria de esta pantalla: no se guardan ni se registran. Se descartan al terminar la importación, al cerrar la pantalla o tras 15 minutos sin uso.</p>'\n    + '<div class=\"cred-r\"><span class=\"cred-st' + (d2.state.credOk ? ' on' : '') + '\">' + (d2.state.credOk ? 'Credenciales en memoria' : 'Sin credenciales cargadas') + '</span>'\n    + '<button type=\"button\" class=\"btn sm olvidar\">Olvidar credenciales</button></div>'\n    + '</div>'\n    + '<button type=\"button\" class=\"btn-p previsualizar\"' + dis + '>' + (d2.state.busy === 'buscar' ? 'Consultando…' : 'Previsualizar') + '</button>'\n    + '</div>'\n}\nfunction tarjetaPreview(d2, x, bz, cerrado) {\n  const k = idDom(x.article_id)\n  if (x.estado === 'pendiente') {\n    return '<article class=\"pv pv-pend\" data-key=\"pv-' + attr(x.article_id) + '\"><div class=\"pv-h\">' + pill('eq', 'Pendiente') + '<h3 class=\"pv-t\">Artículo ' + esc(x.article_id) + '</h3></div><div class=\"pv-m\">Esperando la consulta…</div></article>'\n  }\n  if (x.estado !== 'encontrado') {\n    const nf = x.estado === 'no_encontrado'\n    return '<article class=\"pv\" data-key=\"pv-' + attr(x.article_id) + '\"><div class=\"pv-h\">'\n      + (nf ? pill('nf', 'No encontrado') : pill('er', TIPOS_ERROR[x.tipo] || 'Error'))\n      + '<h3 class=\"pv-t\">Artículo ' + esc(x.article_id) + '</h3></div>'\n      + '<div class=\"pv-m\">' + esc(x.mensaje || (nf ? 'No existe en ' + x.instance + '.' : 'No se pudo leer.')) + '</div></article>'\n  }\n  const ok = listo(x)\n  const abierto = !!(d2.state.abiertos || {})[x.article_id]\n  const ex = x.existente\n  const final = unirMercados(ex ? ex.markets : [], x.mercados)\n  const nuevos = ex ? final.filter(function (c) { return (ex.markets || []).indexOf(c) < 0 }) : []\n  return '<article class=\"pv\" data-key=\"pv-' + attr(x.article_id) + '\">'\n    + '<div class=\"pv-h\">' + (ok ? pill('ok', 'Encontrado') : pill('er', TIPOS_ERROR[x.tipo] || 'Sin texto')) + (x.viaRespaldo ? pill('up', 'vía ' + x.instance, 'No existe en naturalatam: se importa solo para MX') : '') + '<h3 class=\"pv-t\">' + esc(x.titulo) + '</h3></div>'\n    + '<div class=\"pv-m\">ID ' + (urlSegura(x.url) ? '<a href=\"' + attr(urlSegura(x.url)) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(x.article_id) + '</a>' : esc(x.article_id)) + ' · ' + esc(x.instance)\n    + ' · ' + plural(x.fragmentos.length, 'fragmento', 'fragmentos') + ' · ' + plural(x.secciones, 'sección', 'secciones') + ' · ' + kchars(x.chars)\n    + (x.omitidos ? ' · ' + plural(x.omitidos, 'fragmento repetido o vacío omitido', 'fragmentos repetidos o vacíos omitidos') : '') + '</div>'\n    + (ok ? '<div class=\"pv-g\">'\n      + '<div><span class=\"k\">Mercados</span>' + chipsMk(final, nuevos) + '</div>'\n      + '<div><span class=\"k\">En la base</span>' + (ex ? 'v' + esc(ex.version) + ' · ' + plural(ex.chunks, 'fragmento', 'fragmentos') : (x.baseDesconocida ? 'Desconocido (no se pudo leer la base)' : 'Nuevo')) + '</div>'\n      + '<div><label class=\"k\" for=\"cat-' + k + '\">Categoría</label><select id=\"cat-' + k + '\" class=\"pv-cat\" data-a=\"' + attr(x.article_id) + '\"' + ((bz || cerrado) ? ' disabled' : '') + '>'\n      + (x.baseDesconocida ? '<option value=\"' + CONSERVAR + '\"' + (x.conservarCat ? ' selected' : '') + '>Conservar la de la base</option>' : '')\n      + '<option value=\"\"' + (!x.conservarCat && !x.categoria ? ' selected' : '') + '>Sin categoría</option>'\n      + CATEGORIAS.map(function (c) { return '<option value=\"' + attr(c[0]) + '\"' + (!x.conservarCat && x.categoria === c[0] ? ' selected' : '') + '>' + esc(c[1]) + '</option>' }).join('')\n      + (x.categoria && !CATEGORIAS.some(function (c) { return c[0] === x.categoria }) ? '<option value=\"' + attr(x.categoria) + '\"' + (!x.conservarCat ? ' selected' : '') + '>' + esc(x.categoria) + '</option>' : '')\n      + '</select>' + (x.categoriaSugerida ? '<small class=\"t2\">sugerida</small>' : (x.sugerencia ? '<small class=\"t2\">sugerida: ' + esc(etiquetaCat(x.sugerencia)) + '</small>' : '')) + '</div>'\n      + '<div><span class=\"k\">Contexto</span>' + esc(x.contexto) + '</div>'\n      + (debeForzar(x) ? '<div class=\"pv-n\">Se graba una versión nueva aunque el texto no cambió: cambió la categoría.</div>' : '')\n      + '</div>' : '<div class=\"pv-m\">' + esc(x.mensaje || '') + '</div>')\n    + (x.fragmentos.length ? '<button type=\"button\" class=\"lnk pv-tog\" data-a=\"' + attr(x.article_id) + '\" aria-expanded=\"' + (abierto ? 'true' : 'false') + '\" aria-controls=\"tr-' + k + '\">' + (abierto ? 'Ocultar texto' : 'Ver texto (' + plural(x.fragmentos.length, 'fragmento', 'fragmentos') + ')') + '</button>' : '')\n    + (abierto ? '<ol class=\"tr-list\" id=\"tr-' + k + '\">' + x.fragmentos.map(function (t) {\n      return '<li class=\"tr\" data-key=\"' + attr(x.article_id + '-' + t.chunk_index) + '\"><div class=\"tr-h\"><b>#' + (t.chunk_index + 1) + '</b> <span>' + esc(t.title) + '</span><small>' + t.content.length + ' car. · sha-256 ' + esc(t.content_hash.slice(0, 10)) + '…</small></div><div class=\"tr-b\">' + esc(t.content) + '</div></li>'\n    }).join('') + '</ol>' : '')\n    + '</article>'\n}\nfunction vistaPreview(d2, bz) {\n  const pv = d2.state.preview\n  if (!pv) return ''\n  const it = pv.items || []\n  const ok = it.filter(listo)\n  const nf = it.filter(function (x) { return x.estado === 'no_encontrado' }).length\n  const pend = it.filter(function (x) { return x.estado === 'pendiente' }).length\n  const er = it.length - ok.length - nf - pend\n  const fragmentos = ok.reduce(function (s, x) { return s + x.fragmentos.length }, 0)\n  const vieja = !pv.importado && pv.firma !== firma(d2)\n  const reintentables = it.filter(reintentable).length\n  const respaldables = pv.fallback ? it.filter(respaldable).length : 0\n  const mks = unirMercados(ok.reduce(function (a, x) { return a.concat(x.mercados) }, []), [])\n  const b = d2.state.base\n  return '<section class=\"pvw\" aria-labelledby=\"pv-t\">'\n    + '<div class=\"sec-h\"><h2 id=\"pv-t\" class=\"h2\" tabindex=\"-1\">Previsualización</h2><span class=\"t2\">' + fecha(pv.at) + ' · ' + esc(pv.instance) + (pv.fallback ? ' (+ ' + esc(pv.fallback) + ' para MX)' : '') + '</span></div>'\n    + '<div class=\"chips\">' + pill('ok', 'Listos: ' + ok.length) + pill('nf', 'No encontrados: ' + nf) + pill('er', 'Con error: ' + er) + (pend ? pill('eq', 'Pendientes: ' + pend) : '') + '<span class=\"t2\">' + plural(fragmentos, 'fragmento', 'fragmentos') + ' en total</span></div>'\n    + (vieja ? '<div class=\"msg msg-info\" role=\"status\">Los IDs, mercados o e-commerce cambiaron desde esta previsualización: previsualizar de nuevo para poder importar.</div>' : '')\n    + (!pv.importado && b && b.error ? msgCaja({ tipo: 'info', texto: b.error + ' Por eso los artículos que no figuran en la base aparecen como «desconocido»: los mercados se suman igual en el servidor y la categoría vigente se conserva salvo que se elija otra.' }) : '')\n    + (pv.importado ? '' : '<div class=\"pv-acc\">'\n      + '<button type=\"button\" class=\"btn-p importar\"' + ((bz || !ok.length || vieja) ? ' disabled' : '') + '>Importar ' + plural(ok.length, 'artículo', 'artículos') + '</button>'\n      + (reintentables && !bz ? '<button type=\"button\" class=\"btn reintentar\">Reintentar ' + plural(reintentables, 'con error', 'con error') + '</button>' : '')\n      + (respaldables && !bz ? '<button type=\"button\" class=\"btn respaldo\">Buscar ' + respaldables + ' en ' + esc(pv.fallback) + '</button>' : '')\n      + '<button type=\"button\" class=\"btn descartar\"' + (bz ? ' disabled' : '') + '>Descartar</button>'\n      + (ok.length ? '<p class=\"hint\">Se graban ' + plural(ok.length, 'artículo', 'artículos') + ' (' + plural(fragmentos, 'fragmento', 'fragmentos') + ') para ' + esc(mks.join(', ')) + '. Una versión nueva se graba completa antes de quitar la anterior; si algo falla, la versión vigente queda intacta.' + ((nf || er) ? ' Los no encontrados y los que tuvieron error quedan registrados en el historial.' : '') + '</p>' : '')\n      + '</div>')\n    + '<div class=\"pv-list\">' + it.map(function (x) { return tarjetaPreview(d2, x, bz, pv.importado) }).join('') + '</div>'\n    + '</section>'\n}\nfunction vistaResultado(d2) {\n  const r = d2.state.resultado\n  if (!r) return ''\n  const c = contar(r.items)\n  return '<section class=\"res\" aria-labelledby=\"res-t\">'\n    + '<div class=\"sec-h\"><h2 id=\"res-t\" class=\"h2\" tabindex=\"-1\">Resultado de la importación</h2><span class=\"t2\">Registro ' + esc(r.job_id) + ' · ' + duracion(r.duracion) + '</span></div>'\n    + '<div class=\"chips\">' + ORDEN_ESTADOS.map(function (k) { return pill(ESTADOS[k][1], ESTADOS[k][0] + ': ' + (c[k] || 0)) }).join('') + '</div>'\n    + (r.corte ? msgCaja({ tipo: r.corte.tipo === 'detenido' ? 'info' : 'error', texto: 'La importación se interrumpió: ' + sinPunto(r.corte.texto) + '. Los artículos no procesados quedan marcados con error y no se grabó nada en ellos (la versión vigente, si existía, sigue intacta).' }) : '')\n    + (r.cierre ? msgCaja({ tipo: 'info', texto: r.cierre }) : '')\n    + '<div class=\"tbw\"><table class=\"tb\"><caption class=\"sr\">Resultado por artículo</caption><thead><tr><th scope=\"col\">Artículo</th><th scope=\"col\">Estado</th><th scope=\"col\" class=\"num\">Fragmentos</th><th scope=\"col\">Detalle</th></tr></thead><tbody>'\n    + r.items.map(function (it) {\n      const e = ESTADOS[it.status] || ['Error', 'er']\n      return '<tr data-key=\"r-' + attr(it.article_id) + '\"><td>' + esc(it.article_id) + '</td><td>' + pill(e[1], it.status === 'error' && it.tipo ? (TIPOS_ERROR[it.tipo] || e[0]) : e[0]) + '</td><td class=\"num\">' + esc(it.chunks) + '</td><td>' + esc(it.message) + '</td></tr>'\n    }).join('')\n    + '</tbody></table></div>'\n    + '<p class=\"hint\">Las credenciales de Beedoo ya se descartaron. La pestaña Base muestra el estado actualizado.</p>'\n    + '</section>'\n}\nfunction vistaImportar(d2, ses) {\n  const bz = !!d2.state.busy\n  const hay = d2.state.preview || d2.state.resultado || d2.state.prog\n  return '<div class=\"imp\">'\n    + vistaFormulario(d2, bz)\n    + '<div class=\"col-out\">'\n    + (!isDemo(d2) && !ses.ok ? '<div class=\"msg msg-info\" role=\"status\">No hay una sesión de supervisor identificada en esta pantalla: el importador va a rechazar las acciones.</div>' : '')\n    + vistaProgreso(d2)\n    + msgCaja(d2.state.aviso)\n    + vistaResultado(d2)\n    + vistaPreview(d2, bz)\n    + (hay ? '' : '<div class=\"empty\"><b>Importar wikis de Beedoo</b><span>1. Pegar los IDs. 2. Elegir mercados (y e-commerce si corresponde). 3. Completar el login de Beedoo. 4. Previsualizar el texto limpio y, si está bien, importar.</span><span>Nada se graba durante la previsualización.</span></div>')\n    + '</div></div>'\n}\nfunction filtrarBase(d2, rows) {\n  const fm = d2.state.fMk || '', fe = d2.state.fEco || '', ft = norm(d2.state.fTxt || '').trim()\n  return rows.filter(function (r) {\n    if (fm && (r.markets || []).indexOf(fm) < 0) return false\n    if (fe === 'si' && !r.ecommerce) return false\n    if (fe === 'no' && r.ecommerce) return false\n    if (ft && norm(r.titulo + ' ' + r.article_id + ' ' + r.instance + ' ' + etiquetaCat(r.category)).indexOf(ft) < 0) return false\n    return true\n  })\n}\nfunction vistaBase(d2) {\n  const b = d2.state.base\n  const cargando = !!d2.state.cargandoBase\n  const bz = !!d2.state.busy\n  const rows = (b && b.rows) || []\n  const vis = filtrarBase(d2, rows)\n  const reg = regiones(d2)\n  const fragmentosTot = vis.reduce(function (s, r) { return s + (r.chunks || 0) }, 0)\n  return '<div class=\"bar\" role=\"search\">'\n    + '<div class=\"f\"><label for=\"f-mk\">Mercado</label><select id=\"f-mk\" class=\"f-mk\"><option value=\"\">Todos</option>' + MERCADOS.map(function (c) { return '<option value=\"' + c + '\"' + (d2.state.fMk === c ? ' selected' : '') + '>' + c + ' · ' + esc(reg[c]) + '</option>' }).join('') + '</select></div>'\n    + '<div class=\"f\"><label for=\"f-eco\">E-commerce</label><select id=\"f-eco\" class=\"f-eco\"><option value=\"\">Todos</option><option value=\"si\"' + (d2.state.fEco === 'si' ? ' selected' : '') + '>Solo e-commerce</option><option value=\"no\"' + (d2.state.fEco === 'no' ? ' selected' : '') + '>Sin e-commerce</option></select></div>'\n    + '<div class=\"f f-g\"><label for=\"f-txt\">Buscar</label><input id=\"f-txt\" class=\"f-txt\" type=\"search\" placeholder=\"Título, ID o categoría\" value=\"' + attr(d2.state.fTxt || '') + '\"></div>'\n    + '<button type=\"button\" class=\"btn b-act\"' + (cargando ? ' disabled' : '') + '>' + (cargando ? 'Cargando…' : 'Actualizar') + '</button>'\n    + '</div>'\n    + msgCaja(d2.state.avisoBase)\n    + (b && b.error ? msgCaja({ tipo: 'error', texto: b.error }) : '')\n    + (b && b.parcial ? msgCaja({ tipo: 'info', texto: 'Lista parcial: la base es más grande que el límite de lectura de esta pantalla.' }) : '')\n    + (b && b.sinAutor ? '<p class=\"t2\">El DataSet conectado al parámetro «wikis» no expone imported_by: el autor de cada importación figura como «—» (ver el historial).</p>' : '')\n    + (!b ? '<div class=\"empty\"><span>' + (cargando ? 'Cargando la base…' : 'La base todavía no se cargó.') + '</span></div>'\n      : '<p class=\"t2 cnt\" aria-live=\"polite\">' + plural(vis.length, 'artículo', 'artículos') + ' · ' + plural(fragmentosTot, 'fragmento', 'fragmentos') + (vis.length !== rows.length ? ' (de ' + rows.length + ')' : '') + (b.at ? ' · leído ' + fecha(b.at) : '') + '</p>'\n      + (!vis.length ? '<div class=\"empty\"><span>' + (rows.length ? 'Ningún artículo coincide con los filtros.' : 'La base está vacía: importar artículos en la pestaña Importar.') + '</span></div>'\n        : '<div class=\"tbw\"><table class=\"tb tb-base\"><caption class=\"sr\">Artículos en la base</caption><thead><tr>'\n        + '<th scope=\"col\">Artículo</th><th scope=\"col\">Instancia</th><th scope=\"col\">Mercados</th><th scope=\"col\">E-com.</th><th scope=\"col\" class=\"num\">Fragmentos</th><th scope=\"col\">Versión</th><th scope=\"col\">Importado</th><th scope=\"col\"><span class=\"sr\">Acciones</span></th>'\n        + '</tr></thead><tbody>'\n        + vis.map(function (r) {\n          const por = r.imported_by || ''\n          const u = urlSegura(r.url)\n          return '<tr data-key=\"' + attr(r.key) + '\">'\n            + '<td><div class=\"t1\">' + esc(r.titulo) + '</div><div class=\"t2\">ID ' + (u ? '<a href=\"' + attr(u) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(r.article_id) + '</a>' : esc(r.article_id)) + (r.category ? ' · ' + esc(etiquetaCat(r.category)) : '') + '</div></td>'\n            + '<td>' + esc(r.instance) + '</td>'\n            + '<td>' + chipsMk(r.markets) + '</td>'\n            + '<td>' + (r.ecommerce ? 'Sí' : 'No') + '</td>'\n            + '<td class=\"num\">' + esc(r.chunks) + '</td>'\n            + '<td>v' + esc(r.version) + (r.nVersiones > 1 ? ' ' + pill('nf', plural(r.nVersiones, 'versión', 'versiones'), 'Hay fragmentos de más de una versión: una grabación anterior no terminó de quitar la versión vieja. Resincronizar lo resuelve.') : '') + '</td>'\n            + '<td>' + fecha(r.imported_at) + '<div class=\"t2\">' + esc(por || '—') + '</div></td>'\n            + '<td class=\"acc\"><button type=\"button\" class=\"btn sm resync\" data-k=\"' + attr(r.key) + '\"' + (bz ? ' disabled' : '') + ' aria-label=\"Resincronizar el artículo ' + attr(r.article_id) + '\">Resincronizar</button>'\n            + '<button type=\"button\" class=\"btn-d sm quitar\" data-k=\"' + attr(r.key) + '\"' + (bz ? ' disabled' : '') + ' aria-label=\"Quitar el artículo ' + attr(r.article_id) + '\">Quitar</button></td>'\n            + '</tr>'\n        }).join('')\n        + '</tbody></table></div>'))\n}\nfunction etiquetaJob(j) {\n  const e = ESTADOS_JOB[j.status] || [String(j.status || 'sin estado'), 'eq']\n  const viejo = j.status === 'importando' && tiempoDe(j.started_at || j.created_at) && (Date.now() - tiempoDe(j.started_at || j.created_at) > 30 * 60000)\n  return viejo ? ['Sin cierre', 'nf', 'La importación empezó hace más de 30 min y no se cerró (pantalla cerrada o falla). Revisar la base.'] : [e[0], e[1], '']\n}\nfunction vistaHistorial(d2) {\n  const j = d2.state.jobs\n  const cargando = !!d2.state.cargandoJobs\n  const rows = (j && j.rows) || []\n  const ab = d2.state.jobAbierto || {}\n  return '<div class=\"bar\"><p class=\"t2 cnt\" aria-live=\"polite\">' + (j ? plural(rows.length, 'registro', 'registros') + ' de importación y remoción' + (rows.length >= 50 ? ' (los 50 más recientes)' : '') : '') + '</p>'\n    + '<button type=\"button\" class=\"btn j-act\"' + (cargando ? ' disabled' : '') + '>' + (cargando ? 'Cargando…' : 'Actualizar') + '</button></div>'\n    + (j && j.error ? msgCaja({ tipo: 'error', texto: j.error }) : '')\n    + (!j ? '<div class=\"empty\"><span>' + (cargando ? 'Cargando el historial…' : 'El historial todavía no se cargó.') + '</span></div>'\n      : (!rows.length ? '<div class=\"empty\"><span>Todavía no hay importaciones registradas.</span></div>'\n        : '<div class=\"jobs\">' + rows.map(function (job, i) {\n          const k = String(job.job_id || job._id || ('job-' + i))\n          const abierto = !!ab[k]\n          const res = Array.isArray(job.results) ? job.results : []\n          const c = contar(res)\n          const e = etiquetaJob(job)\n          const nIds = Array.isArray(job.article_ids) ? job.article_ids.length : res.length\n          const dur = job.duration_ms || (tiempoDe(job.finished_at) && tiempoDe(job.started_at) ? tiempoDe(job.finished_at) - tiempoDe(job.started_at) : 0)\n          return '<article class=\"job\" data-key=\"' + attr(k) + '\">'\n            + '<button type=\"button\" class=\"job-h j-tog\" data-j=\"' + attr(k) + '\" aria-expanded=\"' + (abierto ? 'true' : 'false') + '\" aria-controls=\"jd-' + idDom(k) + '\">'\n            + '<span class=\"job-1\">' + pill(e[1], e[0], e[2]) + '<b>' + fecha(job.created_at || job.started_at || job.createdAt) + '</b><span class=\"t2\">' + esc(job.created_by || '—') + '</span></span>'\n            + '<span class=\"job-2\">' + esc(job.instance || '—') + ' · ' + chipsMk(job.markets) + (job.ecommerce ? ' · e-commerce' : '') + ' · ' + plural(nIds, 'artículo', 'artículos') + ' · ' + duracion(dur) + '</span>'\n            + '<span class=\"job-3\">' + ORDEN_HIST.filter(function (s) { return c[s] }).map(function (s) { return pill(ESTADOS[s][1], ESTADOS[s][0] + ' ' + c[s]) }).join('') + '</span>'\n            + '</button>'\n            + (abierto ? '<div class=\"job-d\" id=\"jd-' + idDom(k) + '\">' + (res.length\n              ? '<table class=\"tb\"><caption class=\"sr\">Detalle por artículo</caption><thead><tr><th scope=\"col\">Artículo</th><th scope=\"col\">Estado</th><th scope=\"col\" class=\"num\">Fragmentos</th><th scope=\"col\">Detalle</th></tr></thead><tbody>'\n                + res.map(function (r, n) {\n                  const es = ESTADOS[r.status] || [String(r.status || '—'), 'eq']\n                  return '<tr data-key=\"' + attr(k + '-' + (r.article_id || n)) + '\"><td>' + esc(r.article_id) + '</td><td>' + pill(es[1], es[0]) + '</td><td class=\"num\">' + esc(r.chunks == null ? '—' : r.chunks) + '</td><td>' + esc(r.message || '') + '</td></tr>'\n                }).join('') + '</tbody></table>'\n              : '<p class=\"t2\">Sin detalle por artículo (importación sin cierre o anterior al registro de resultados).</p>') + '</div>' : '')\n            + '</article>'\n        }).join('') + '</div>'))\n}\nfunction vistaDialogo(d2) {\n  const c = d2.state.confirmar\n  if (!c) return ''\n  const bz = d2.state.busy === 'remover'\n  return '<div class=\"scrim\">'\n    + '<div class=\"dlg\" role=\"alertdialog\" aria-modal=\"true\" aria-labelledby=\"dlg-t\" aria-describedby=\"dlg-d\">'\n    + '<h2 id=\"dlg-t\" class=\"h2\">Quitar artículo de la base</h2>'\n    + '<div id=\"dlg-d\"><p>¿Quitar <b>' + esc(c.titulo) + '</b> (ID ' + esc(c.article_id) + ' · ' + esc(c.instance) + ')?</p>'\n    + '<p>Se eliminan sus ' + plural(c.chunks, 'fragmento', 'fragmentos') + ' para <b>todos</b> los mercados (' + esc((c.markets || []).join(', ') || '—') + '). El copiloto deja de usarlo enseguida; para recuperarlo hay que importarlo de nuevo. La remoción queda registrada en el historial.</p></div>'\n    + '<div class=\"dlg-r\"><button type=\"button\" class=\"btn dlg-no\"' + (bz ? ' disabled' : '') + '>Cancelar</button><button type=\"button\" class=\"btn-d dlg-si\"' + (bz ? ' disabled' : '') + '>' + (bz ? 'Quitando…' : 'Sí, quitar artículo') + '</button></div>'\n    + '</div></div>'\n}\nconst TABS = [['importar', 'Importar'], ['base', 'Base'], ['historial', 'Historial']]\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '[hidden]{display:none!important}'\n    + '.app{--cream:rgb(254,251,244);--surf:#fff;--soft:#faf6ef;--ink:#162b37;--ink2:rgba(22,43,55,.68);--line:#e3ddd2;--olive:rgb(230,238,189);--accent:var(--acc,#FF6C0E);'\n    + '--ok-b:#e4f3d6;--ok-f:#2f5a12;--up-b:#dde9f5;--up-f:#1e4a70;--eq-b:#eeeae2;--eq-f:#46535b;--nf-b:#fbefd2;--nf-f:#77560e;--er-b:#fde6e3;--er-f:#a3261d;'\n    + 'display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.55 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;position:relative;overflow:hidden;color-scheme:light}'\n    + 'button,input,select,textarea{font:inherit;color:inherit}'\n    + 'a{color:var(--ink);text-decoration:underline;text-underline-offset:2px}'\n    + ':focus-visible{outline:2px solid var(--ink);outline-offset:2px;box-shadow:0 0 0 4px var(--accent)}'   // anillo ink ≥ 3:1 sobre crema/blanco (WCAG 1.4.11) + naranja de marca\n    + '.h2[tabindex=\"-1\"]:focus:not(:focus-visible){outline:none;box-shadow:none}'\n    + '.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:18px;padding:14px 22px;border-bottom:1px solid var(--line);background:var(--surf);flex-wrap:wrap}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}'\n    + '.brand b{font-size:22px;font-weight:700;letter-spacing:.5px}'\n    + '.brand span{font-size:12px;color:var(--ink2)}'\n    + '.sp{flex:1 1 auto;min-width:8px}'\n    + '.who{font-size:12px;color:var(--ink2);text-align:right;line-height:1.3;min-width:0}'\n    + '.who b{display:block;color:var(--ink);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:320px}'\n    + '.tag{font-size:11px;border:1px dashed rgba(22,43,55,.35);border-radius:6px;padding:2px 7px;color:var(--ink2)}'\n    + '.tabs{flex:none;display:flex;gap:2px;padding:0 22px;background:var(--surf);border-bottom:1px solid var(--line);overflow-x:auto}'\n    + '.tab{border:0;background:transparent;padding:12px 14px 10px;font-size:13px;font-weight:600;line-height:1;color:var(--ink2);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}'\n    + '.tab[aria-selected=\"true\"]{color:var(--ink);border-bottom-color:var(--accent)}'\n    + '.tab:hover{color:var(--ink)}'\n    + '.tab .n{font-size:11px;color:var(--ink2);margin-left:6px;background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:1px 7px}'\n    + '.body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}'\n    + '.pn{flex:1 1 auto;min-height:0;overflow:auto;padding:18px 22px 26px}'\n    + '.imp{display:grid;grid-template-columns:minmax(290px,370px) minmax(0,1fr);gap:22px;align-items:start}'\n    + '.col-form{display:flex;flex-direction:column;gap:14px;background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:16px}'\n    + '.col-out{min-width:0;display:flex;flex-direction:column;gap:14px}'\n    + '.fld{margin:0;padding:0;border:0;min-width:0}'\n    + '.lbl{display:block;font-weight:700;font-size:13px;margin-bottom:6px;padding:0}'\n    + '.hint{margin:6px 0 0;font-size:12px;color:var(--ink2)}'\n    + '.warn-t{color:var(--er-f);font-weight:700}'\n    + '.ids{width:100%;resize:vertical;min-height:120px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px}'\n    + '.ids:disabled,.bd:disabled,select:disabled{background:var(--soft);color:var(--ink2)}'\n    + '.inval{margin-top:8px;font-size:12px;color:var(--er-f);background:var(--er-b);border-radius:8px;padding:7px 9px;line-height:1.7}'\n    + '.inval code{background:#fff;border:1px solid rgba(163,38,29,.25);border-radius:4px;padding:0 5px;font-size:11.5px;color:var(--er-f)}'\n    + '.mk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}'\n    + '.mk-op{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;cursor:pointer;background:#fff;font-size:13px;min-width:0}'\n    + '.mk-op span{color:var(--ink2);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.mk-op:has(input:checked){border-color:var(--ink);background:var(--olive)}'\n    + '.mk-op input,.sw input{accent-color:var(--ink);width:16px;height:16px;margin:0;flex:none}'\n    + '.mk-acc{display:flex;gap:6px;align-items:center;margin-top:6px;font-size:12px;color:var(--ink2)}'\n    + '.lnk{border:0;background:transparent;padding:2px 0;font-size:12px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:2px;cursor:pointer}'\n    + '.lnk:disabled{opacity:.5;cursor:default}'\n    + '.sw{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}'\n    + '.sw input{margin-top:3px}'\n    + '.sw label{display:flex;flex-direction:column;cursor:pointer;font-size:13px}'\n    + '.sw label span{font-size:12px;color:var(--ink2)}'\n    + '.inst{background:var(--soft);border:1px dashed var(--line);border-radius:10px;padding:9px 12px;font-size:13px}'\n    + '.inst .lbl{margin-bottom:2px;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--ink2)}'\n    + '.inst b{font-size:14px}'\n    + '.inst small{display:block;color:var(--ink2);font-size:12px;margin-top:2px}'\n    + '.cred-in{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 10px;align-items:center;font-size:13px}'\n    + '.bd{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}'\n    + '.cred-r{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-top:8px;flex-wrap:wrap}'\n    + '.cred-st{font-size:12px;color:var(--ink2)}'\n    + '.cred-st::before{content:\"\";display:inline-block;width:8px;height:8px;border-radius:50%;background:#c9c2b6;margin-right:6px;vertical-align:1px}'\n    + '.cred-st.on{color:var(--ok-f);font-weight:600}.cred-st.on::before{background:#5aa52a}'\n    + '.btn-p{border:0;border-radius:8px;padding:11px 20px;background:var(--ink);color:#fff;font-size:14px;font-weight:600;line-height:1;cursor:pointer}'\n    + '.btn-p:hover:not(:disabled){background:#0d1d26}'\n    + '.btn-p:disabled{opacity:.4;cursor:default}'\n    + '.btn,.btn-d{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;line-height:1.1;cursor:pointer;color:var(--ink)}'\n    + '.btn:hover:not(:disabled){border-color:var(--ink)}'\n    + '.btn-d{border-color:rgba(163,38,29,.45);color:var(--er-f)}'\n    + '.btn-d:hover:not(:disabled){background:var(--er-b)}'\n    + '.btn:disabled,.btn-d:disabled{opacity:.45;cursor:default}'\n    + '.sm{padding:5px 10px;font-size:12px}'\n    + '.msg{border-radius:9px;padding:10px 12px;font-size:13px}'\n    + '.msg-error{background:#fff0ef;border:1px solid rgba(255,60,51,.45);color:#b3261e}'\n    + '.msg-ok{background:#eef8e6;border:1px solid #bfe0a6;color:var(--ok-f)}'\n    + '.msg-info{background:#fff6e6;border:1px solid #f0dcb4;color:#6f520f}'\n    + '.prog-w{background:var(--surf);border:1px solid var(--line);border-radius:12px;padding:12px 14px}'\n    + '.prog-l{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:7px}'\n    + '.prog{height:8px;border-radius:5px;background:rgba(22,43,55,.09);overflow:hidden}'\n    + '.prog i{display:block;height:100%;background:var(--accent);border-radius:5px;transition:width .25s}'\n    + '.prog-r{display:flex;align-items:center;gap:10px;margin-top:9px}.prog-r .hint{margin:0}'\n    + '.empty{display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center;color:var(--ink2);font-size:13px;padding:34px 18px;border:1px dashed var(--line);border-radius:14px;background:rgba(255,255,255,.5)}'\n    + '.empty b{color:var(--ink);font-size:15px}'\n    + '.sec-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}'\n    + '.h2{margin:0;font-size:16px;font-weight:700}'\n    + '.t1{font-weight:600}'\n    + '.t2{font-size:12px;color:var(--ink2)}'\n    + '.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:10px}'\n    + '.pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.2px;border-radius:5px;padding:2px 8px;white-space:nowrap;margin-right:4px}'\n    + '.pill-ok{background:var(--ok-b);color:var(--ok-f)}.pill-up{background:var(--up-b);color:var(--up-f)}.pill-eq{background:var(--eq-b);color:var(--eq-f)}.pill-nf{background:var(--nf-b);color:var(--nf-f)}.pill-er{background:var(--er-b);color:var(--er-f)}'\n    + '.mkc{display:inline-block;font-size:11px;font-weight:700;border:1px solid var(--line);border-radius:5px;padding:0 6px;margin:0 3px 3px 0;background:#fff;line-height:18px}'\n    + '.mkc-new{border-color:var(--ink);background:var(--olive)}'\n    + '.pvw,.res{background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:14px 16px}'\n    + '.pv-acc{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:4px 0 12px}.pv-acc .hint{flex-basis:100%;margin:2px 0 0}'\n    + '.pv-list{display:flex;flex-direction:column;gap:10px}'\n    + '.pv{border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:#fff}'\n    + '.pv-pend{opacity:.7}'\n    + '.pv-h{display:flex;align-items:center;gap:4px;flex-wrap:wrap}'\n    + '.pv-t{margin:0 0 0 4px;font-size:14px;font-weight:700;line-height:1.35;min-width:0;flex:1 1 220px}'\n    + '.pv-m{font-size:12px;color:var(--ink2);margin-top:5px}'\n    + '.pv-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin-top:9px;font-size:12.5px}'\n    + '.pv-g .k{display:block;font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--ink2);margin-bottom:2px;font-weight:600}'\n    + '.pv-g select{padding:4px 7px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:12.5px;max-width:100%}'\n    + '.pv-g small{margin-left:6px}'\n    + '.pv-n{grid-column:1/-1;font-size:12px;color:var(--up-f);background:var(--up-b);border-radius:7px;padding:5px 9px}'\n    + '.pv-tog{margin-top:8px}'\n    + '.tr-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}'\n    + '.tr{border:1px solid var(--line);border-radius:9px;background:var(--soft);padding:8px 10px}'\n    + '.tr-h{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap;font-size:12px}'\n    + '.tr-h span{font-weight:600;flex:1 1 auto;min-width:0}'\n    + '.tr-h small{color:var(--ink2);font-size:11px}'\n    + '.tr-b{margin-top:5px;font-size:12.5px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto}'\n    + '.bar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px}'\n    + '.f{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink2)}'\n    + '.f select,.f input{padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:13px;min-width:150px}'\n    + '.f-g{flex:1 1 220px}.f-g input{width:100%}'\n    + '.cnt{margin:0 0 8px}'\n    + '.bar .cnt{margin:0;flex:1}'\n    + '.tbw{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:#fff}'\n    + '.tb{width:100%;border-collapse:collapse;font-size:12.5px}'\n    + '.tb th{text-align:left;color:var(--ink2);font-weight:600;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--soft);white-space:nowrap}'\n    + '.tb td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}'\n    + '.tb tbody tr:last-child td{border-bottom:0}'\n    + '.tb .num{text-align:right;white-space:nowrap}'\n    + '.tb .acc{white-space:nowrap;text-align:right}.tb .acc .btn,.tb .acc .btn-d{margin-left:6px}'\n    + '.res .tbw{margin-top:4px}.res .hint{margin-top:10px}'\n    + '.jobs{display:flex;flex-direction:column;gap:8px}'\n    + '.job{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}'\n    + '.job-h{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;border:0;background:transparent;padding:11px 13px;cursor:pointer}'\n    + '.job-h:hover{background:var(--soft)}'\n    + '.job-h[aria-expanded=\"true\"]{background:var(--soft);border-bottom:1px solid var(--line)}'\n    + '.job-1{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}'\n    + '.job-2{font-size:12px;color:var(--ink2)}'\n    + '.job-3{display:flex;flex-wrap:wrap;gap:4px}'\n    + '.job-d{padding:10px 13px}'\n    + '.job-d .tb{border:1px solid var(--line);border-radius:8px}'\n    + '.scrim{position:absolute;inset:0;background:rgba(0,0,0,.44);display:grid;place-items:center;z-index:9;padding:16px}'\n    + '.dlg{background:var(--cream);border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.28);max-width:520px;width:100%;padding:22px 24px}'\n    + '.dlg p{margin:10px 0;font-size:13.5px}'\n    + '.dlg-r{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;flex-wrap:wrap}'\n    + '@media (max-width:900px){'\n    + '.hd{gap:10px;padding:12px 16px}.brand b{font-size:19px}.who b{max-width:200px}'\n    + '.tabs{padding:0 10px}.pn{padding:14px 16px 22px}'\n    + '.imp{grid-template-columns:minmax(0,1fr)}'\n    + '.pv-g{grid-template-columns:minmax(0,1fr)}'\n    + '.f select,.f input{min-width:0}.f{flex:1 1 140px}'\n    + '.tb-base{min-width:820px}.tb-base td:first-child{min-width:200px}'\n    + '}',\n  render(d2) {\n    const tab = d2.state.tab || 'importar'\n    const ses = sesion(d2)\n    const demo = isDemo(d2)\n    const nBase = d2.state.base && d2.state.base.rows ? d2.state.base.rows.length : null\n    const nJobs = d2.state.jobs && d2.state.jobs.rows ? d2.state.jobs.rows.length : null\n    const cuenta = { base: nBase, historial: nJobs }\n    return '<div class=\"app\" data-ready style=\"--acc:' + attr(acento(d2)) + '\">'\n      + '<header class=\"hd\">'\n      + '<div class=\"brand\"><b>NASVI</b><span>Base de wikis</span></div>'\n      + '<div class=\"sp\"></div>'\n      + (demo ? '<span class=\"tag\" title=\"Datos ficticios: contraseña «x» simula login rechazado; IDs que terminan en 0 no existen; en 9, solo en naturamexico; 999 da error de Beedoo; 998, falla de red.\">demo</span>' : '')\n      + '<div class=\"who\"><b>' + esc(ses.email || (ses.ok ? 'Sesión activa' : 'Sin sesión')) + '</b>' + (ses.ok ? 'Sesión de Agents Tools' : 'Ingresar como supervisor') + '</div>'\n      + '</header>'\n      + '<div class=\"tabs\" role=\"tablist\" aria-label=\"Secciones de la base de wikis\">'\n      + TABS.map(function (t) {\n        const sel = t[0] === tab\n        return '<button type=\"button\" role=\"tab\" class=\"tab\" id=\"tb-' + t[0] + '\" data-tab=\"' + t[0] + '\" aria-selected=\"' + (sel ? 'true' : 'false') + '\" aria-controls=\"pn-' + t[0] + '\" tabindex=\"' + (sel ? '0' : '-1') + '\">' + t[1] + (cuenta[t[0]] != null ? '<span class=\"n\">' + cuenta[t[0]] + '</span>' : '') + '</button>'\n      }).join('')\n      + '</div>'\n      + '<div class=\"body\">'\n      + '<section class=\"pn\" role=\"tabpanel\" id=\"pn-importar\" aria-labelledby=\"tb-importar\"' + (tab === 'importar' ? '' : ' hidden') + '>' + vistaImportar(d2, ses) + '</section>'\n      + '<section class=\"pn\" role=\"tabpanel\" id=\"pn-base\" aria-labelledby=\"tb-base\"' + (tab === 'base' ? '' : ' hidden') + '>' + (tab === 'base' ? vistaBase(d2) : '') + '</section>'\n      + '<section class=\"pn\" role=\"tabpanel\" id=\"pn-historial\" aria-labelledby=\"tb-historial\"' + (tab === 'historial' ? '' : ' hidden') + '>' + (tab === 'historial' ? vistaHistorial(d2) : '') + '</section>'\n      + '</div>'\n      + vistaDialogo(d2)\n      + '</div>'\n  },\n  mounted(d2) {\n    const v = vida(d2)\n    v.activo = true\n    const vault = { email: '', password: '' }\n    let reloj = null\n    const limpiarInputs = function (soloClave) {\n      const p = d2.$('#bd-pass'); if (p) p.value = ''\n      if (!soloClave) { const e = d2.$('#bd-email'); if (e) e.value = '' }\n    }\n    const ctx = {\n      vault: vault,\n      tocar: function () {\n        if (reloj) clearTimeout(reloj)\n        reloj = setTimeout(function () {\n          if (d2.state.busy) { ctx.tocar(); return }\n          if (vault.email || vault.password || d2.state.credOk) ctx.olvidar('inactividad')\n        }, OLVIDO_MS)\n      },\n      olvidar: function (motivo) {\n        vault.email = ''; vault.password = ''\n        if (reloj) { clearTimeout(reloj); reloj = null }\n        limpiarInputs(false)\n        const o = { credOk: false }\n        if (motivo === 'inactividad') o.aviso = { tipo: 'info', texto: 'Las credenciales de Beedoo se descartaron tras 15 minutos sin uso.' }\n        if (motivo === 'manual') o.aviso = { tipo: 'info', texto: 'Credenciales de Beedoo descartadas.' }\n        poner(d2, o)\n      },\n      olvidarClave: function () {\n        vault.password = ''\n        limpiarInputs(true)\n        poner(d2, { credOk: false })\n        v.foco = '#bd-pass'\n      }\n    }\n    const marcarCred = function () {\n      leerCred(d2, ctx)\n      const ok = !!(vault.email && vault.password)\n      if (ok !== !!d2.state.credOk) poner(d2, { credOk: ok })\n      if (vault.email || vault.password) ctx.tocar()\n    }\n    d2.onUnmount(function () {\n      v.activo = false\n      vault.email = ''; vault.password = ''\n      if (reloj) clearTimeout(reloj)\n    })\n    d2.on(window, 'pagehide', function () { vault.email = ''; vault.password = ''; limpiarInputs(false); poner(d2, { credOk: false }) })\n    if (!d2.state.tab) {\n      const ini = { tab: 'importar', mercados: [], ecommerce: false, idsText: '' }\n      if (isDemo(d2)) { ini.idsText = '130164\\n130175\\n211125\\n132750\\n175799\\n999\\n211125\\nabc'; ini.mercados = ['AR', 'MX'] }\n      d2.setState(ini)\n    }\n    const r0 = d2.data('regiones')\n    if (r0 && !r0.records().length) r0.refresh()\n    const irA = function (t) {\n      d2.state.tab = t\n      if (t === 'base' && !d2.state.base && !d2.state.cargandoBase) cargarBase(d2, ctx)\n      if (t === 'historial' && !d2.state.jobs && !d2.state.cargandoJobs) cargarJobs(d2, ctx)\n    }\n    d2.on('.tab', 'click', function (e, el) { irA(el.dataset.tab) })\n    d2.on('.tab', 'keydown', function (e, el) {\n      const orden = TABS.map(function (t) { return t[0] })\n      let i = orden.indexOf(el.dataset.tab)\n      if (e.key === 'ArrowRight') i = (i + 1) % orden.length\n      else if (e.key === 'ArrowLeft') i = (i + orden.length - 1) % orden.length\n      else if (e.key === 'Home') i = 0\n      else if (e.key === 'End') i = orden.length - 1\n      else return\n      e.preventDefault()\n      irA(orden[i])\n      v.foco = '#tb-' + orden[i]\n    })\n    d2.on('#ids', 'input', function (e, el) { d2.state.idsText = el.value })\n    d2.on('.mk-in', 'change', function (e, el) {\n      const m = mercadosSel(d2).filter(function (c) { return c !== el.value })\n      if (el.checked) m.push(el.value)\n      d2.setState({ mercados: m, instForzada: null })\n    })\n    d2.on('.mk-todos', 'click', function () { if (!d2.state.busy) d2.setState({ mercados: MERCADOS.slice(), instForzada: null }) })\n    d2.on('.mk-ninguno', 'click', function () { if (!d2.state.busy) d2.setState({ mercados: [], instForzada: null }) })\n    d2.on('.eco', 'change', function (e, el) { d2.setState({ ecommerce: !!el.checked, instForzada: null }) })\n    d2.on('.bd', 'input', marcarCred)\n    d2.on('.bd', 'change', marcarCred)\n    d2.on('.bd-pass', 'keydown', function (e) { if (e.key === 'Enter') { e.preventDefault(); previsualizar(d2, ctx, 'nuevo') } })\n    d2.on('.olvidar', 'click', function () { ctx.olvidar('manual') })\n    d2.on('.previsualizar', 'click', function () { previsualizar(d2, ctx, 'nuevo') })\n    d2.on('.reintentar', 'click', function () { previsualizar(d2, ctx, 'reintentar') })\n    d2.on('.respaldo', 'click', function () { previsualizar(d2, ctx, 'respaldo') })\n    d2.on('.detener', 'click', function () {\n      if (!d2.state.busy) return\n      v.detener = true\n      poner(d2, { prog: Object.assign({}, d2.state.prog, { etiqueta: 'Deteniendo al terminar la llamada en curso…' }) })\n    })\n    d2.on('.descartar', 'click', function () { if (!d2.state.busy) d2.setState({ preview: null, abiertos: {}, aviso: null }) })\n    d2.on('.importar', 'click', function () { importar(d2, ctx) })\n    d2.on('.pv-tog', 'click', function (e, el) {\n      const a = Object.assign({}, d2.state.abiertos || {})\n      a[el.dataset.a] = !a[el.dataset.a]\n      d2.state.abiertos = a\n    })\n    d2.on('.pv-cat', 'change', function (e, el) {\n      const pv = d2.state.preview\n      if (!pv || d2.state.busy) return\n      const conservar = el.value === CONSERVAR\n      d2.state.preview = Object.assign({}, pv, { items: pv.items.map(function (x) { return x.article_id === el.dataset.a ? Object.assign({}, x, { categoria: conservar ? '' : el.value, conservarCat: conservar, categoriaManual: !conservar, categoriaSugerida: false }) : x }) })\n    })\n    d2.on('.f-mk', 'change', function (e, el) { d2.state.fMk = el.value })\n    d2.on('.f-eco', 'change', function (e, el) { d2.state.fEco = el.value })\n    d2.on('.f-txt', 'input', function (e, el) { d2.state.fTxt = el.value })\n    d2.on('.b-act', 'click', function () { if (!d2.state.cargandoBase) { d2.state.avisoBase = null; cargarBase(d2, ctx) } })\n    d2.on('.resync', 'click', function (e, el) {\n      if (d2.state.busy) return\n      const r = filaBase(d2, el.dataset.k)\n      if (!r) return\n      const mk = (r.markets || []).filter(function (c) { return MERCADOS.indexOf(c) >= 0 })\n      d2.setState({\n        tab: 'importar', idsText: r.article_id, mercados: r.instance === INST.mx ? ['MX'] : mk,\n        ecommerce: r.instance === INST.eco, instForzada: r.instance === INST.mx ? INST.mx : null,\n        preview: null, resultado: null, abiertos: {},\n        aviso: { tipo: 'info', texto: 'Artículo ' + r.article_id + ' cargado para resincronizar (' + r.instance + ' · ' + (mk.join(', ') || 'sin mercados') + '). Completar el login de Beedoo y previsualizar.' }\n      })\n      v.foco = d2.state.credOk ? '.previsualizar' : '#bd-email'\n    })\n    d2.on('.quitar', 'click', function (e, el) {\n      if (d2.state.busy) return\n      const r = filaBase(d2, el.dataset.k)\n      if (!r) return\n      v.volver = el.dataset.k\n      d2.setState({ confirmar: { article_id: r.article_id, instance: r.instance, titulo: r.titulo, chunks: r.chunks, markets: r.markets } })\n    })\n    const cerrarDlg = function () { if (d2.state.busy !== 'remover') d2.state.confirmar = null }\n    d2.on('.dlg-no', 'click', cerrarDlg)\n    d2.on('.dlg-si', 'click', function () { quitar(d2, ctx) })\n    d2.on('.scrim', 'click', function (e, el) { if (e.target === el) cerrarDlg() })\n    d2.on('.dlg', 'keydown', function (e) {\n      if (e.key !== 'Tab') return\n      const f = d2.$$('.dlg button:not([disabled])')\n      if (!f.length) return\n      const raiz = d2.root && d2.root.getRootNode ? d2.root.getRootNode() : document\n      const act = raiz.activeElement\n      if (e.shiftKey && act === f[0]) { e.preventDefault(); f[f.length - 1].focus() }\n      else if (!e.shiftKey && act === f[f.length - 1]) { e.preventDefault(); f[0].focus() }\n    })\n    d2.on(document, 'keydown', function (e) { if (e.key === 'Escape' && d2.state.confirmar) cerrarDlg() })\n    d2.on('.j-act', 'click', function () { if (!d2.state.cargandoJobs) cargarJobs(d2, ctx) })\n    d2.on('.j-tog', 'click', function (e, el) {\n      const a = Object.assign({}, d2.state.jobAbierto || {})\n      a[el.dataset.j] = !a[el.dataset.j]\n      d2.state.jobAbierto = a\n    })\n  },\n  updated(d2) {\n    const v = vida(d2)\n    const bz = !!d2.state.busy\n    d2.$$('.bd').forEach(function (el) { if (el.disabled !== bz) el.disabled = bz })\n    const dlg = d2.$('.dlg')\n    if (dlg && !v.dlg) {\n      v.dlg = true\n      const b = d2.$('.dlg-no')\n      if (b) b.focus()\n    } else if (!dlg && v.dlg) {\n      v.dlg = false\n      const back = v.volver ? d2.$$('.quitar').filter(function (b) { return b.dataset.k === v.volver })[0] : null\n      const alt = d2.$('.b-act')\n      if (back) back.focus(); else if (alt) alt.focus()\n      v.volver = null\n    }\n    if (v.foco) {\n      const el = d2.$(v.foco)\n      v.foco = null\n      if (el && !el.disabled) el.focus()\n    }\n  }\n}\n"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}},"wikis":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"wikis"}}}},"jobs":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"jobs"}}}},"regiones":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"regiones"}}}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"6acee31db48793739f877d94","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"NasviCopiloto","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// NasviCopiloto — NASVI v4, copiloto del asesor (Agents Tools AR / MX).\n// Todo el trabajo pesado corre en el listener nasvi-v4-api-operador: perfil de la sesión,\n// búsqueda híbrida (FAQ curada + wikis), prompt, IA (cerebras) y telemetría. La pantalla\n// solo arma el pedido y muestra la respuesta. Sin fuente confiable la API no llama a la IA\n// y la pantalla dice \"sin información\" en vez de inventar.\n// Respuestas con fuente piden voto 1–5 antes de la próxima consulta (comentario si nota <= 2).\n// El texto de la IA se muestra con un markdown propio que escapa todo el HTML.\n\nconst VERSION = 'copiloto-4.2.2'\nconst MERCADOS = ['AR', 'MX', 'CO', 'PE', 'CL', 'EC']\nconst NOMBRES = { AR: 'Argentina', MX: 'México', CO: 'Colombia', PE: 'Perú', CL: 'Chile', EC: 'Ecuador' }\nconst ORIGENES = [['chat', 'Chat'], ['voz', 'Voz'], ['video', 'Video']]\nconst VOTO = {\n  1: ['No encontré nada útil', 'Sin respuesta o sin relevancia para la consulta'],\n  2: ['Encontré muy poca información', 'Respuesta incompleta o poco relevante'],\n  3: ['Encontré parte de la información', 'Resolvió parcialmente, hubo que buscar más'],\n  4: ['Encontré casi todo lo que buscaba', 'Útil en gran parte, con pequeños vacíos'],\n  5: ['Encontré exactamente lo que necesitaba', 'Respuesta clara, completa y satisfactoria']\n}\nconst PEND_MS = 8 * 3600 * 1000\nconst LIMITE_MS = 90000\nconst AYUDA = 'Soy **NASVI**, tu copiloto durante la atención.\\n\\n'\n  + '- Busco primero en las **wikis del asesor** (Beedoo) y completo con la **FAQ de AVI**: es la más actualizada, pero está escrita para la consultora, así que la uso solo como dato.\\n'\n  + '- Cada dato de la respuesta indica su fuente con un número, por ejemplo [1]. Tocá el número para ver esa fuente en el panel **Fuentes**.\\n'\n  + '- Si no encuentro una fuente confiable, te lo digo y **no invento** una respuesta.\\n'\n  + '- Después de cada respuesta, evaluala de 1 a 5. Con nota 1 o 2, contanos qué faltó: así se mejora la base.\\n\\n'\n  + 'Atajos: **Enter** envía · **Shift+Enter** nueva línea.'\nconst TIPOS = { faq: 'FAQ de AVI (bot)', beedoo: 'Wiki del asesor · AR', mx: 'Wiki del asesor · MX', regla: 'Regla operativa México', wiki: 'Wiki del asesor' }\n\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;').replace(/'/g, '&#39;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\nfunction dormir(ms) { return new Promise(function (r) { setTimeout(r, ms) }) }\nfunction urlSegura(u) { const s = String(u || '').trim(); return /^https?:\\/\\/[^\\s\"'<>]+$/i.test(s) ? s : '' }\nfunction acento(d2) {\n  const v = String(d2.param('accent', '') || '').trim()\n  return /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\([0-9.,%\\s/deg]+\\)|[a-z]{3,24})$/i.test(v) ? v : '#FF6C0E'\n}\nfunction appDe(d2) { const a = String(d2.param('app', 'ar') || 'ar').toLowerCase(); return a === 'mx' ? 'mx' : 'ar' }\nfunction nf(n, d) { const v = Number(n); if (!isFinite(v)) return '—'; return v.toLocaleString('es', { minimumFractionDigits: d || 0, maximumFractionDigits: d || 0 }) }\n\n// ---- estado no reactivo (borradores) ----\nconst VIDA = new WeakMap()\nfunction vida(d2) {\n  let v = VIDA.get(d2)\n  if (!v) { v = { activo: true, borrador: '', comentario: '', reloj: null }; VIDA.set(d2, v) }\n  return v\n}\nfunction poner(d2, o) { if (vida(d2).activo) d2.setState(o) }\n\n// ---- localStorage (siempre en try/catch; por usuario) ----\nfunction lsGet(k) { try { const v = window.localStorage.getItem(k); return v ? JSON.parse(v) : null } catch (e) { return null } }\nfunction lsSet(k, v) { try { window.localStorage.setItem(k, JSON.stringify(v)) } catch (e) { /* sin almacenamiento */ } }\nfunction lsDel(k) { try { window.localStorage.removeItem(k) } catch (e) { /* sin almacenamiento */ } }\nfunction kPend(email) { return 'nasvi.v4.pendiente.' + String(email || '').toLowerCase() }\nfunction kMk(email) { return 'nasvi.v4.mercado.' + String(email || '').toLowerCase() }\n\n// ---- markdown seguro: escapa TODO y después aplica un subconjunto ----\n// 【1】, [1, 2], [1†fuente] -> [1][2]: la IA a veces cita con otros formatos\nfunction normCitas(t) {\n  return String(t || '').replace(/[【\\[]+\\s*(\\d{1,2})\\s*[,;]\\s*(\\d{1,2})\\s*[,;]\\s*(\\d{1,2})\\s*[\\]】]+/g, '[$1][$2][$3]')\n    .replace(/[【\\[]+\\s*(\\d{1,2})\\s*[,;]\\s*(\\d{1,2})\\s*[\\]】]+/g, '[$1][$2]')\n    .replace(/[【\\[]+\\s*(\\d{1,2})(?:\\s*†[^\\]】]*)?\\s*[\\]】]+/g, '[$1]')\n    .replace(/【\\s*(\\d{1,2})\\s*(?:[:†,;][^】]*)?】/g, '[$1]')\n}\nfunction enlace(url, txt) { return '<a href=\"' + attr(url) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + txt + '</a>' }\n// inerte = números de cita sin acción (ayuda, voto pendiente antes de cargar las fuentes)\nfunction inline(t, nf, inerte) {\n  const code = [], links = []\n  function guardar(h) { links.push(h); return '\\u0001' + (links.length - 1) + '\\u0001' }\n  let s = normCitas(t).replace(/`([^`]+)`/g, function (m, c) { code.push(c); return '\\u0000' + (code.length - 1) + '\\u0000' })\n  s = s.replace(/\\[([^\\]]+)\\]\\((https?:\\/\\/[^\\s)]+)\\)/g, function (m, txt, u) {\n    const url = urlSegura(u.replace(/&amp;/g, '&'))\n    return url ? guardar(enlace(url, txt)) : txt\n  })\n  // URL suelta (la IA copia el link de la wiki): enlace seguro, sin la puntuación final\n  s = s.replace(/https?:\\/\\/[^\\s<\\[\\u0001*]+/g, function (m) {\n    const fin = (m.match(/[.,;:!?)\\]]+$/) || [''])[0]\n    const base = fin ? m.slice(0, m.length - fin.length) : m\n    const url = urlSegura(base.replace(/&amp;/g, '&'))\n    return url ? guardar(enlace(url, base)) + fin : m\n  })\n  s = s.replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>')\n  s = s.replace(/(^|[^*])\\*([^*\\s][^*]*)\\*/g, '$1<em>$2</em>')\n  s = s.replace(/\\s*\\[(\\d{1,2})\\]/g, function (m, n) {\n    const k = Number(n)\n    if (inerte) return k >= 1 ? ' <span class=\"cit cit-i\">' + k + '</span>' : ''\n    if (k >= 1 && k <= nf) return ' <button class=\"cit\" data-n=\"' + k + '\" title=\"Ver fuente ' + k + '\" aria-label=\"Fuente ' + k + '\">' + k + '</button>'\n    return ''\n  })\n  // citas seguidas quedan juntas y pegadas a la palabra anterior (no se parten entre líneas)\n  s = s.replace(/(?: <(?:button|span) class=\"cit[^\"]*\"[^>]*>\\d{1,2}<\\/(?:button|span)>)+/g, function (m) { return '&nbsp;<span class=\"cits\">' + m.replace(/ </g, '<') + '</span>' })\n  s = s.replace(/\\u0001(\\d+)\\u0001/g, function (m, i) { return links[Number(i)] })\n  s = s.replace(/\\u0000(\\d+)\\u0000/g, function (m, i) { return '<code>' + code[Number(i)] + '</code>' })\n  return s\n}\nfunction markdown(texto, nFuentes, inerte) {\n  const lineas = esc(texto).replace(/\\r/g, '').split('\\n')\n  const out = []\n  let lista = null, parr = [], sub = false\n  function ln(x) { return inline(x, nFuentes, inerte) }\n  function cerrarParr() { if (parr.length) { out.push('<p>' + ln(parr.join(' ')) + '</p>'); parr = [] } }\n  function cerrarSub() { if (sub) { out.push('</ul></li>'); sub = false } }\n  function cerrarLista() { cerrarSub(); if (lista) { if (lista === 'ol' && out.length && /<\\/li>$/.test(out[out.length - 1]) === false && /<li>/.test(out[out.length - 1])) out.push('</li>'); out.push('</' + lista + '>'); lista = null } }\n  for (let i = 0; i < lineas.length; i++) {\n    const l = lineas[i]\n    const t = l.trim()\n    if (!t) { cerrarParr(); cerrarLista(); continue }\n    let m = t.match(/^(#{1,4})\\s+(.*)$/)\n    if (m) { cerrarParr(); cerrarLista(); out.push('<h4>' + ln(m[2]) + '</h4>'); continue }\n    m = t.match(/^&gt;\\s?(.*)$/)\n    if (m) { cerrarParr(); cerrarLista(); out.push('<blockquote>' + ln(m[1]) + '</blockquote>'); continue }\n    m = t.match(/^(\\d{1,2})[.)]\\s+(.*)$/)\n    if (m) {\n      cerrarParr(); cerrarSub()\n      if (lista !== 'ol') { cerrarLista(); out.push('<ol start=\"' + Number(m[1]) + '\">'); lista = 'ol' }\n      out.push('<li>' + ln(m[2]) + '</li>'); continue\n    }\n    m = t.match(/^[-*•]\\s+(.*)$/)\n    if (m) {\n      cerrarParr()\n      // viñeta con sangría dentro de una lista numerada = sublista del último paso\n      if (lista === 'ol' && /^\\s{2,}/.test(l) && /<\\/li>$/.test(out[out.length - 1] || '')) {\n        if (!sub) { out[out.length - 1] = out[out.length - 1].replace(/<\\/li>$/, ''); out.push('<ul>'); sub = true }\n        out.push('<li>' + ln(m[1]) + '</li>'); continue\n      }\n      cerrarSub()\n      if (lista !== 'ul') { cerrarLista(); out.push('<ul>'); lista = 'ul' }\n      out.push('<li>' + ln(m[1]) + '</li>'); continue\n    }\n    cerrarLista()\n    parr.push(t)\n  }\n  cerrarParr(); cerrarLista()\n  return out.join('')\n}\nfunction textoPlano(t) { return String(t || '').replace(/\\*\\*([^*]+)\\*\\*/g, '$1').replace(/`([^`]+)`/g, '$1') }\n// texto para pegar en el ticket: citas normalizadas + lista de las fuentes citadas al final\nfunction textoCopia(answer, fuentes) {\n  let t = normCitas(textoPlano(answer))\n  t = t.split('\\n').map(function (l) { return l.replace(/\\s+$/, '') }).join('\\n').replace(/\\n{3,}/g, '\\n\\n').trim()\n  if (!t) return ''\n  const usadas = {}\n  t.replace(/\\[(\\d{1,2})\\]/g, function (m, n) { usadas[Number(n)] = true; return m })\n  const lista = (fuentes || []).filter(function (f) { return usadas[Number(f.n)] }).map(function (f) {\n    const u = urlSegura(f.url)\n    return '[' + f.n + '] ' + (f.tipo || TIPOS[f.corpus] || '') + ' — ' + (f.titulo || '') + (u ? ' (' + u + ')' : '')\n  })\n  return lista.length ? t + '\\n\\nFuentes:\\n' + lista.join('\\n') : t\n}\nfunction copiar(d2, t) {\n  function viejo() {\n    try {\n      const ta = document.createElement('textarea')\n      ta.value = t; ta.setAttribute('readonly', ''); ta.style.position = 'fixed'; ta.style.top = '0'; ta.style.opacity = '0'\n      const host = d2.$('.app') || document.body\n      host.appendChild(ta); ta.focus(); ta.select()\n      const ok = document.execCommand('copy')\n      ta.remove()\n      return !!ok\n    } catch (e) { return false }\n  }\n  try {\n    if (navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard.writeText(t).then(function () { return true }, function () { return viejo() })\n  } catch (e) { /* sigue con el método viejo */ }\n  return Promise.resolve(viejo())\n}\n\n// ---- llamada a la API ----\nfunction errTipo(msg, tipo, status) { const e = new Error(msg); e.tipoNasvi = tipo; e.status = status || 0; return e }\nfunction conLimite(p, ms) {\n  let t = null\n  const reloj = new Promise(function (_, rej) { t = setTimeout(function () { rej(errTipo('La API no respondió a tiempo.', 'tiempo')) }, ms) })\n  return Promise.race([Promise.resolve(p), reloj]).finally(function () { clearTimeout(t) })\n}\nfunction esResp(o) { return !!o && typeof o === 'object' && !Array.isArray(o) && ('ok' in o || 'op' in o) }\nfunction desenvolver(res) {\n  let r = res\n  for (let i = 0; i < 3; i++) {\n    if (!r || typeof r !== 'object' || Array.isArray(r)) break\n    if (esResp(r)) break\n    if (esResp(r.data)) { r = r.data; continue }\n    if (esResp(r.body)) { r = r.body; continue }\n    if (r.data && typeof r.data === 'object') { r = r.data; continue }\n    break\n  }\n  if (r && typeof r === 'object' && r.error && (r.code || r.statusCode) && !('ok' in r)) {\n    throw errTipo(String(r.error.message || r.error), 'servidor', Number(r.code || r.statusCode) || 0)\n  }\n  return (r && typeof r === 'object') ? r : {}\n}\nfunction clasificar(e) {\n  if (e && e.tipoNasvi) return { tipo: e.tipoNasvi, texto: e.message }\n  const msg = String((e && (e.message || e.statusText)) || e || '')\n  const st = Number((e && (e.status || e.statusCode || (e.response && e.response.status))) || 0) || Number((msg.match(/\\b([45]\\d\\d)\\b/) || [])[1] || 0)\n  if (st === 401 || st === 403 || /unauthori|no permissions|forbidden/i.test(msg)) return { tipo: 'sesion', texto: 'Su sesión expiró o no tiene permiso. Vuelva a iniciar sesión.' }\n  if (/failed to fetch|network|load failed|net::|offline/i.test(msg)) return { tipo: 'red', texto: 'Sin conexión con el servidor. Verifique su red e intente nuevamente.' }\n  if (/timeout|tiempo/i.test(msg)) return { tipo: 'tiempo', texto: 'El servidor tardó demasiado. Intente nuevamente.' }\n  return { tipo: 'servidor', texto: 'Error del servidor' + (st ? ' (' + st + ')' : '') + '. Intente nuevamente.' }\n}\n// El e-mail de la sesión viaja en cada pedido: la policy del listener solo deja pasar si es\n// IGUAL al de la sesión ($session.credentials.email), así la API puede confiar en él.\n// De .user solo se lee .email (las credenciales incluyen la contraseña).\n// .user / .session vienen vacíos después del login (el runtime limpia cursor.current.credentials);\n// la sesión completa está en raw.getSelectedSession().credentials.\nasync function emailSesion(d2) {\n  try {\n    const a = d2.auth(d2.params.auth)\n    if (!a) return ''\n    const c = []\n    try {\n      let g = a.raw && typeof a.raw.getSelectedSession === 'function' ? a.raw.getSelectedSession() : null\n      if (g && typeof g.then === 'function') g = await g\n      if (g && g.credentials) c.push(g.credentials.email)\n    } catch (e) { /* sigue con los otros caminos */ }\n    const u = a.user || {}\n    const s = a.session || {}\n    c.push(u.email, s.credentials && s.credentials.email, s.email)\n    for (let i = 0; i < c.length; i++) if (typeof c[i] === 'string' && c[i].indexOf('@') > 0) return c[i].trim().toLowerCase()\n  } catch (e) { /* sin sesión */ }\n  return ''\n}\nasync function api(d2, payload) {\n  if (isDemo(d2)) return demoApi(d2, payload)\n  const ref = d2.params && d2.params.api\n  if (!ref) throw errTipo('El parámetro \"api\" no está conectado.', 'config')\n  const email = await emailSesion(d2)\n  if (!email) throw errTipo('No se encontró tu sesión. Volvé a iniciar sesión.', 'sesion')\n  const h = d2.rush(ref)\n  return desenvolver(await conLimite(h.invoke(Object.assign({}, payload, { email: email })), LIMITE_MS))\n}\n\n// ---- modo demo (dry_render / preview sin backend) ----\nconst DEMO_PERFIL = { nombre: 'Ana Gómez', email: 'ana.gomez@natura.net', mercados: ['AR', 'MX'], ecommerce: false, supervisor: true, paises: ['AR', 'MX'] }\nconst DEMO_FUENTES = [\n  { n: 1, corpus: 'beedoo', tipo: 'Wiki del asesor · AR', titulo: 'Proceso Documentado Créditos y Cobranzas - CAN Argentina › 2. Asignación de Límites', tema: 'AUMENTAR LÍNEA DE CRÉDITO', categoria: 'PAGOS', sv: 0, sk: 0.45, citada: true, url: 'https://naturalatam.beedoo.io/wiki/476936/lll', texto: 'Ejemplo de demostración: la asignación de límites se revisa cada ciclo según el historial de pagos de la consultora.' },\n  { n: 2, corpus: 'beedoo', tipo: 'Wiki del asesor · AR', titulo: 'Proceso Documentado Créditos y Cobranzas - CAN Argentina › 8. Aplicación del pago y restablecimiento del límite', tema: '', categoria: 'PAGOS', sv: 0, sk: 0.47, citada: true, url: 'https://naturalatam.beedoo.io/wiki/476936/lll', texto: 'Ejemplo de demostración: cuando el pago se aplica, el límite de crédito se restablece.' },\n  { n: 3, corpus: 'faq', tipo: 'FAQ de AVI (bot)', titulo: 'AUMENTAR LÍNEA DE CRÉDITO', categoria: null, sv: 0.749, sk: 0, citada: true, url: null, texto: 'Ejemplo de demostración: el aumento de crédito es automático, con un reencuadramiento mensual.' }\n]\nconst DEMO_RESP = 'Estimado asesor,\\n\\n**Qué hacer**\\n1. Revise el historial de pagos de la consultora: el límite se asigna cada ciclo según ese historial [1].\\n2. Si ya pagó, verifique que el pago esté aplicado: así se restablece el límite [2].\\n\\n**Qué explicarle a la consultora**\\n- El aumento de crédito es automático, con un reencuadramiento mensual [3].'\nasync function demoApi(d2, p) {\n  await dormir(500)\n  if (p.op === 'perfil') return { ok: true, op: 'perfil', perfil: DEMO_PERFIL, pendiente: null, telemetria: false, api_version: 'demo', prompt_version: 'demo' }\n  if (p.op === 'perguntar') {\n    await dormir(700)\n    if (/capital|futbol|clima/i.test(p.pregunta)) return { ok: true, op: 'perguntar', query_id: 'demo-nf-' + Date.now(), not_found: true, fuentes: [], cercanas: [{ corpus: 'faq', titulo: 'PLAZOS DE ENTREGA DE PEDIDOS ELO', score: 0.61 }], registrado: false, indices: { faq: 'ok', beedoo: 'texto', mx: 'off', wiki: 'vacio' }, latencias: { busqueda_ms: 820, ia_ms: 0, total_ms: 830 }, mercado: p.mercado }\n    return { ok: true, op: 'perguntar', query_id: 'demo-' + Date.now(), not_found: false, answer: DEMO_RESP, fuentes: DEMO_FUENTES, citas: [1, 2, 3], registrado: false, indices: { faq: 'ok', beedoo: 'texto', mx: 'off', wiki: 'vacio' }, latencias: { busqueda_ms: 940, ia_ms: 1310, total_ms: 2290 }, diag: { prompt_chars: 4120 }, mercado: p.mercado, prompt_version: 'demo' }\n  }\n  if (p.op === 'votar') return { ok: false, op: 'votar', error: { code: 'TELEMETRIA_NO_DISPONIBLE', message: 'Demo: el voto no se guarda.' } }\n  if (p.op === 'historial') return { ok: false, op: 'historial', items: [], telemetria: false }\n  return { ok: false, op: p.op, error: { code: 'OP_DESCONOCIDA', message: 'demo' } }\n}\n\n// ---- perfil, mercado y voto pendiente ----\nfunction opcionesMercado(perfil) { return (perfil && Array.isArray(perfil.mercados)) ? MERCADOS.filter(function (c) { return perfil.mercados.indexOf(c) >= 0 }) : [] }\nfunction mercadoActual(d2) {\n  const ops = opcionesMercado(d2.state.perfil)\n  if (!ops.length) return ''\n  if (ops.length === 1) return ops[0]\n  const m = d2.state.mercado\n  return ops.indexOf(m) >= 0 ? m : ops[0]\n}\nasync function cargarPerfil(d2) {\n  poner(d2, { cargandoPerfil: true, errPerfil: '' })\n  try {\n    const r = await api(d2, { op: 'perfil', app: appDe(d2), client_version: VERSION })\n    if (!r.ok) {\n      const c = r.error && r.error.code\n      const txt = c === 'PERFIL_NO_ENCONTRADO' ? 'Tu usuario no está registrado en Agents Tools. Pedí el alta a tu supervisor.'\n        : c === 'SESION_NO_IDENTIFICADA' ? 'No fue posible identificar tu sesión. Volvé a iniciar sesión.'\n        : (r.error && r.error.message) || 'No fue posible cargar tu perfil.'\n      poner(d2, { cargandoPerfil: false, errPerfil: txt })\n      return\n    }\n    const p = r.perfil || {}\n    const guardado = lsGet(kMk(p.email))\n    const ops = opcionesMercado(p)\n    const pref = appDe(d2) === 'mx' ? 'MX' : 'AR'\n    const mk = ops.indexOf(guardado) >= 0 ? guardado : (ops.indexOf(pref) >= 0 ? pref : (ops[0] || ''))\n    let pend = null\n    if (r.pendiente && r.pendiente.query_id) {\n      pend = { query_id: r.pendiente.query_id, pregunta: r.pendiente.question || '', answer: r.pendiente.answer || '', mercado: r.pendiente.market || mk, ts: Date.now(), origen: 'servidor' }\n    } else {\n      const lp = lsGet(kPend(p.email))\n      if (lp && lp.query_id && lp.email === String(p.email || '').toLowerCase() && (Date.now() - Number(lp.ts || 0)) < PEND_MS) pend = { query_id: lp.query_id, pregunta: lp.pregunta || '', answer: '', mercado: lp.mercado || mk, ts: lp.ts, origen: 'local' }\n    }\n    poner(d2, { cargandoPerfil: false, perfil: p, mercado: mk, telemetria: r.telemetria !== false, pend: pend, apiVersion: r.api_version || '', promptVersion: r.prompt_version || '' })\n    if (pend && pend.origen === 'servidor' && pend.answer) fuentesPend(d2, pend.query_id)\n  } catch (e) {\n    const inf = clasificar(e)\n    poner(d2, { cargandoPerfil: false, errPerfil: inf.texto })\n  }\n}\n// Voto pendiente después de recargar: el perfil trae solo la respuesta; las fuentes salen del historial\n// (sin ellas los números de cita quedan como texto, sin enlace).\nasync function fuentesPend(d2, qid) {\n  try {\n    const r = await api(d2, { op: 'historial', limite: 5 })\n    const it = r && r.ok ? (r.items || []).filter(function (x) { return x.query_id === qid })[0] : null\n    const pend = d2.state.pend\n    if (!it || !pend || pend.query_id !== qid) return\n    const fs = (it.fuentes || []).map(function (f) { return { n: f.n, corpus: f.corpus, tipo: TIPOS[f.corpus] || f.corpus, titulo: f.titulo, url: f.url, citada: f.citada, texto: '' } })\n    poner(d2, { pend: Object.assign({}, pend, { fuentes: fs }) })\n  } catch (e) { /* sigue sin fuentes */ }\n}\nfunction guardarPend(d2, pend) {\n  const p = d2.state.perfil || {}\n  if (!pend) { lsDel(kPend(p.email)); return }\n  lsSet(kPend(p.email), { query_id: pend.query_id, pregunta: String(pend.pregunta || '').slice(0, 120), mercado: pend.mercado, ts: pend.ts, email: String(p.email || '').toLowerCase() })\n}\n\n// ---- preguntar ----\nasync function preguntar(d2) {\n  const v = vida(d2)\n  const q = String(v.borrador || '').trim()\n  if (d2.state.busy || d2.state.pend) return\n  if (q.length < 3) { poner(d2, { aviso: 'Escribí la pregunta de la consultora (mínimo 3 caracteres).' }); return }\n  const mk = mercadoActual(d2)\n  if (!mk) { poner(d2, { aviso: 'Tu usuario no tiene mercados asignados.' }); return }\n  const t0 = Date.now()\n  v.borrador = ''\n  const area = d2.$('.q'); if (area) area.value = ''\n  poner(d2, { busy: true, aviso: '', conv: { pregunta: q, mercado: mk, estado: 'buscando', res: null, t0: t0 }, abiertas: {}, resaltada: 0 })\n  arrancarReloj(d2)\n  try {\n    const r = await api(d2, { op: 'perguntar', pregunta: q, mercado: mk, origen: d2.state.origen || 'chat', app: appDe(d2), client_version: VERSION })\n    pararReloj(d2)\n    const dur = Date.now() - t0\n    const hist = (d2.state.hist || []).slice(0, 19)\n    if (r.ok && r.not_found) {\n      hist.unshift({ pregunta: q, answer: '', not_found: true, mercado: mk, ts: Date.now() })\n      poner(d2, { busy: false, conv: { pregunta: q, mercado: mk, estado: 'sin_info', res: r, dur: dur }, hist: hist })\n      return\n    }\n    if (r.ok) {\n      const pend = { query_id: r.query_id, pregunta: q, answer: r.answer, mercado: mk, ts: Date.now(), origen: 'actual' }\n      guardarPend(d2, pend)\n      vida(d2).comentario = ''\n      hist.unshift({ pregunta: q, answer: r.answer, not_found: false, mercado: mk, ts: Date.now(), fuentes: r.fuentes })\n      poner(d2, { busy: false, conv: { pregunta: q, mercado: mk, estado: 'ok', res: r, dur: dur }, pend: pend, voto: { nota: 0, enviando: false, err: '' }, hist: hist })\n      return\n    }\n    const code = r.error && r.error.code\n    poner(d2, { busy: false, conv: { pregunta: q, mercado: mk, estado: 'error', res: r, dur: dur, err: (r.error && r.error.message) || 'No fue posible responder.', code: code } })\n  } catch (e) {\n    pararReloj(d2)\n    const inf = clasificar(e)\n    poner(d2, { busy: false, conv: { pregunta: q, mercado: mk, estado: 'error', res: null, err: inf.texto, tipo: inf.tipo } })\n  }\n}\nfunction arrancarReloj(d2) {\n  const v = vida(d2)\n  pararReloj(d2)\n  v.reloj = setInterval(function () { if (v.activo && d2.state.busy) d2.setState({ tick: Date.now() }) }, 1000)\n}\nfunction pararReloj(d2) { const v = vida(d2); if (v.reloj) { clearInterval(v.reloj); v.reloj = null } }\n\n// ---- votar ----\nasync function votar(d2) {\n  const pend = d2.state.pend\n  const vt = d2.state.voto || {}\n  const nota = Number(vt.nota || 0)\n  const com = String(vida(d2).comentario || '').trim()\n  if (!pend || vt.enviando) return\n  if (!(nota >= 1 && nota <= 5)) { poner(d2, { voto: Object.assign({}, vt, { err: 'Elegí una nota de 1 a 5.' }) }); return }\n  if (nota <= 2 && com.length < 3) { poner(d2, { voto: Object.assign({}, vt, { err: 'Con nota 1 o 2, contanos qué faltó (mínimo 3 caracteres).' }) }); return }\n  poner(d2, { voto: Object.assign({}, vt, { enviando: true, err: '' }) })\n  let local = false, errTxt = ''\n  try {\n    const r = await api(d2, { op: 'votar', query_id: pend.query_id, nota: nota, comentario: com, client_version: VERSION })\n    if (!r.ok) {\n      const c = r.error && r.error.code\n      if (c === 'TELEMETRIA_NO_DISPONIBLE' || c === 'CONSULTA_NO_ENCONTRADA') local = true\n      else if (c === 'YA_VOTADO') local = false\n      else errTxt = (r.error && r.error.message) || 'No fue posible guardar el voto.'\n    }\n  } catch (e) {\n    errTxt = clasificar(e).texto\n  }\n  if (errTxt) { poner(d2, { voto: Object.assign({}, vt, { enviando: false, err: errTxt + ' Podés reintentar.' }) }); return }\n  guardarPend(d2, null)\n  vida(d2).comentario = ''\n  // voto de una respuesta restaurada (recarga): la respuesta sigue en pantalla después de votar\n  const sigue = !d2.state.conv && pend.answer ? { conv: { pregunta: pend.pregunta, mercado: pend.mercado, estado: 'ok', res: { query_id: pend.query_id, answer: pend.answer, fuentes: pend.fuentes || [] } } } : {}\n  poner(d2, Object.assign(sigue, { pend: null, voto: { nota: 0, enviando: false, err: '' }, avisoVoto: local ? 'Gracias. Tu evaluación quedó registrada solo en esta pantalla: el registro de votos se activa con la próxima publicación.' : 'Gracias por tu evaluación.' }))\n  setTimeout(function () { if (vida(d2).activo) d2.setState({ avisoVoto: '' }) }, 6000)\n  setTimeout(function () { const el = d2.$('.q'); if (el) try { el.focus() } catch (x) { /* sin foco */ } }, 50)\n}\n\n// ---- historial ----\nasync function abrirHistorial(d2) {\n  poner(d2, { panel: 'hist', histRemoto: { cargando: true, items: [], telemetria: true, err: '' }, hsel: null })\n  try {\n    const r = await api(d2, { op: 'historial', limite: 20 })\n    if (r.ok) poner(d2, { histRemoto: { cargando: false, items: r.items || [], telemetria: true, err: '' } })\n    else poner(d2, { histRemoto: { cargando: false, items: [], telemetria: false, err: '' } })\n  } catch (e) {\n    poner(d2, { histRemoto: { cargando: false, items: [], telemetria: false, err: clasificar(e).texto } })\n  }\n}\nfunction rel(ts) {\n  const t = typeof ts === 'number' ? ts : Date.parse(ts)\n  if (!t) return ''\n  const m = Math.round((Date.now() - t) / 60000)\n  if (m < 1) return 'recién'\n  if (m < 60) return 'hace ' + m + (m === 1 ? ' minuto' : ' minutos')\n  const h = Math.round(m / 60)\n  if (h < 24) return 'hace ' + h + (h === 1 ? ' hora' : ' horas')\n  const d = Math.round(h / 24)\n  if (d === 1) return 'ayer'\n  if (d < 30) return 'hace ' + d + ' días'\n  try { return new Date(t).toLocaleDateString('es') } catch (e) { return '' }\n}\n\n// ---- piezas de la vista ----\nfunction chipScore(f) {\n  const out = []\n  if (Number(f.sv) > 0) out.push('<span class=\"sc sc-v\" title=\"Similitud semántica\">sem ' + nf(f.sv, 2) + '</span>')\n  if (Number(f.sk) > 0) out.push('<span class=\"sc sc-t\" title=\"Coincidencia de términos\">texto ' + nf(f.sk, 2) + '</span>')\n  return out.join('')\n}\nfunction catTexto(c) { return (Array.isArray(c) ? c.join(', ') : String(c == null ? '' : c)).replace(/_/g, ' ').trim() }\nfunction verTecnico(d2) { return !!(d2.state.perfil && d2.state.perfil.supervisor) || d2.param('debug') === true }\n// la ventana del trecho viene cortada en cualquier letra: después de \"…\" se descarta la palabra partida\nfunction trecho(t) { return String(t || '').replace(/^…\\s*\\S*\\s+/, '… ') }\nfunction tarjeta(d2, f) {\n  const cat = catTexto(f.categoria)\n  const abierta = !!(d2.state.abiertas || {})[f.n]\n  const res = Number(d2.state.resaltada || 0) === Number(f.n)\n  const url = urlSegura(f.url)\n  const txt = trecho(f.texto)\n  const largo = txt.length > 260\n  return '<article class=\"src' + (res ? ' src-on' : '') + '\" id=\"fuente-' + attr(f.n) + '\" data-key=\"f' + attr(f.n) + '\">'\n    + '<header class=\"src-h\"><span class=\"src-n\">' + esc(f.n) + '</span><h3 class=\"src-t\">' + esc(f.titulo || '(sin título)') + '</h3></header>'\n    + '<div class=\"src-m\"><span class=\"tp tp-' + attr(f.corpus) + '\">' + esc(f.tipo || TIPOS[f.corpus] || f.corpus) + '</span>'\n    + (cat ? '<span class=\"src-c\">' + esc(cat) + '</span>' : '')\n    + (f.tema ? '<span class=\"src-c\" title=\"Tema de la wiki\">' + esc(f.tema) + '</span>' : '')\n    + (verTecnico(d2) ? chipScore(f) : '')\n    + (f.citada ? '<span class=\"src-cit\" title=\"Citada en la respuesta\">citada</span>' : '') + '</div>'\n    + (txt ? '<p class=\"src-b' + (abierta ? ' src-b-on' : '') + '\">' + esc(txt) + '</p>' : '')\n    + '<div class=\"src-a\">' + (largo ? '<button class=\"lnk ver\" data-n=\"' + attr(f.n) + '\">' + (abierta ? 'ver menos' : 'ver más') + '</button>' : '')\n    + (url ? '<a class=\"lnk\" href=\"' + attr(url) + '\" target=\"_blank\" rel=\"noopener noreferrer\">Abrir en Beedoo ↗</a>' : '') + '</div>'\n    + '</article>'\n}\nfunction bloqueVoto(d2) {\n  const vt = d2.state.voto || {}\n  const g = Number(vt.nota || 0)\n  const lab = VOTO[g]\n  const com = vida(d2).comentario || ''\n  const listo = g >= 1 && (g > 2 || com.trim().length >= 3)\n  return '<section class=\"vote\" aria-labelledby=\"vt-h\" data-key=\"voto\">'\n    + '<div class=\"vote-h\" id=\"vt-h\"><b>¿Qué tan útil fue la respuesta?</b><span>Obligatorio para hacer la próxima consulta.</span></div>'\n    + '<div class=\"scale\" role=\"radiogroup\" aria-label=\"Nota de 1 a 5\">' + [1, 2, 3, 4, 5].map(function (n) {\n      return '<button class=\"dot\" role=\"radio\" data-g=\"' + n + '\" aria-checked=\"' + (n === g ? 'true' : 'false') + '\" title=\"' + attr(VOTO[n][0]) + '\">' + n + '</button>'\n    }).join('') + '</div>'\n    + '<div class=\"vdesc\">' + (lab ? '<b>' + esc(lab[0]) + '</b> · ' + esc(lab[1]) : 'Elegí una nota: 1 = nada útil · 5 = exactamente lo que necesitaba') + '</div>'\n    + '<textarea class=\"vin\" rows=\"2\" maxlength=\"500\" placeholder=\"' + (g && g <= 2 ? '¿Qué faltó o qué estaba mal? (obligatorio)' : 'Comentario (opcional)') + '\">' + esc(com) + '</textarea>'\n    + (g && g <= 2 && com.trim().length < 3 ? '<div class=\"vreq\" role=\"status\">Con nota 1 o 2, contanos qué faltó (mínimo 3 caracteres).</div>' : '')\n    + '<div class=\"vrow\">' + (vt.err ? '<span class=\"verr\" role=\"alert\">' + esc(vt.err) + '</span>' : '<span></span>')\n    + '<button class=\"send vsend\"' + (listo && !vt.enviando ? '' : ' disabled') + '>' + (vt.enviando ? 'Enviando…' : 'Enviar evaluación') + '</button></div>'\n    + '</section>'\n}\nfunction conversacion(d2) {\n  const c = d2.state.conv\n  const pend = d2.state.pend\n  if (!c && pend) {\n    // voto pendiente de una consulta anterior (recarga de la página); las fuentes llegan después (fuentesPend)\n    const nFp = (pend.fuentes || []).length\n    return '<div class=\"you\">' + esc(pend.pregunta || 'Consulta anterior') + '</div>'\n      + '<div class=\"bot\"><div class=\"av\">N</div><div class=\"bw\">'\n      + (pend.answer ? '<div class=\"bub\">' + markdown(pend.answer, nFp, !nFp) + '</div><div class=\"acts\"><button class=\"act copy\">Copiar respuesta</button></div>' : '<div class=\"bub bub-muted\">Quedó pendiente la evaluación de tu última respuesta.</div>')\n      + bloqueVoto(d2) + '</div></div>'\n  }\n  if (!c) {\n    return '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M21 12a8 8 0 0 1-8 8H7l-4 3v-5a8 8 0 0 1 8-11h2a8 8 0 0 1 8 5z\" stroke-linejoin=\"round\"/></svg></b>Escribí la duda de la consultora: NASVI busca en las wikis del asesor y en la FAQ de AVI por vos.</div>'\n  }\n  const you = '<div class=\"you\">' + esc(c.pregunta) + '</div>'\n  if (c.estado === 'buscando') {\n    const s = Math.max(0, Math.round((Date.now() - (c.t0 || Date.now())) / 1000))\n    return you + '<div class=\"bot\"><div class=\"av\">N</div><div class=\"bub bub-muted\"><span class=\"spin\" aria-hidden=\"true\"></span>' + (s < 3 ? 'Buscando en las fuentes…' : 'Preparando la respuesta…') + ' <span class=\"secs\">' + s + ' s</span></div></div>'\n  }\n  if (c.estado === 'sin_info') {\n    const cer = (c.res && c.res.cercanas) || []\n    return you + '<div class=\"bot\"><div class=\"av av-nf\">?</div><div class=\"bw\"><div class=\"bub bub-nf\">'\n      + '<p><b>No encontré información confiable para responder.</b></p>'\n      + '<p>Ninguna FAQ o wiki de ' + esc(NOMBRES[c.mercado] || c.mercado) + ' alcanzó la similitud mínima, así que no generé una respuesta para no inventar.</p>'\n      + (cer.length ? '<p class=\"nf-l\">Lo más cercano (no alcanzó el mínimo):</p><ul>' + cer.map(function (x) { return '<li>' + esc(catTexto(x.titulo)) + (verTecnico(d2) ? ' <span class=\"nf-s\">' + nf(x.score, 2) + '</span>' : '') + '</li>' }).join('') + '</ul>' : '')\n      + '<p class=\"nf-t\">Probá con otras palabras (por ejemplo, el nombre del proceso) o consultá a tu supervisor.</p>'\n      + '</div></div></div>'\n  }\n  if (c.estado === 'error') {\n    return you + '<div class=\"bot\"><div class=\"av av-er\">!</div><div class=\"bw\"><div class=\"bub bub-er\"><p>' + esc(c.err || 'Error') + '</p>'\n      + '<div class=\"acts\"><button class=\"act reintentar\">Reintentar</button></div></div></div></div>'\n  }\n  const r = c.res || {}\n  const nF = (r.fuentes || []).length\n  const pendiente = !!(d2.state.pend && d2.state.pend.query_id === r.query_id)\n  return you + '<div class=\"bot\"><div class=\"av\">N</div><div class=\"bw\">'\n    + '<div class=\"bub\">' + markdown(r.answer || '', nF) + '</div>'\n    + '<div class=\"acts\"><button class=\"act copy\">Copiar respuesta</button></div>'\n    + (pendiente ? bloqueVoto(d2) : '')\n    + '</div></div>'\n}\nfunction modal(d2) {\n  const p = d2.state.panel\n  if (p === 'help') {\n    return '<div class=\"scrim\" data-key=\"scrim-help\"><div class=\"dlg w-help\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dlg-t\"><div class=\"dlg-h\"><h2 id=\"dlg-t\">NASVI: el copiloto del asesor</h2><button class=\"x\" aria-label=\"Cerrar\">×</button></div><div class=\"dlg-b md\">' + markdown(AYUDA, 0, true) + '</div></div></div>'\n  }\n  if (p === 'hist') {\n    const hr = d2.state.histRemoto || {}\n    const remoto = hr.telemetria !== false\n    const items = remoto ? (hr.items || []).map(function (x) { return { pregunta: x.question, answer: x.answer, not_found: x.not_found, mercado: x.market, ts: x.createdAt, grade: x.grade, fuentes: x.fuentes } })\n      : (d2.state.hist || [])\n    const sel = Number(d2.state.hsel || 0)\n    const cur = items[sel] || items[0]\n    const lista = hr.cargando ? '<div class=\"empty\" style=\"padding:20px\">Cargando…</div>'\n      : items.length ? items.map(function (x, i) {\n        return '<button class=\"hitem\" data-h=\"' + i + '\" aria-selected=\"' + (i === sel ? 'true' : 'false') + '\"><b>' + esc(x.pregunta) + '</b><span>' + esc(rel(x.ts)) + ' · ' + esc(x.mercado || '') + (x.not_found ? ' · sin información' : '') + (x.grade ? ' · nota ' + esc(x.grade) : '') + '</span></button>'\n      }).join('') : '<div class=\"empty\" style=\"padding:20px\">Sin consultas todavía.</div>'\n    return '<div class=\"scrim\" data-key=\"scrim-hist\"><div class=\"dlg w-hist\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"dlg-h\"><div class=\"dlg-h hh\"><h2 id=\"dlg-h\">Historial</h2><button class=\"x\" aria-label=\"Cerrar\">×</button></div>'\n      + (!remoto && !hr.cargando ? '<div class=\"pv hpv\">' + esc(hr.err || 'El historial guardado se activa con la próxima publicación. Se muestran las consultas de esta sesión.') + '</div>' : '')\n      + '<div class=\"hlist\">' + lista + '</div>'\n      + '<div class=\"hdet\">' + (cur && !hr.cargando ? '<div class=\"you\" style=\"align-self:flex-start;max-width:100%\">' + esc(cur.pregunta) + '</div>'\n        + (cur.not_found ? '<div class=\"bot\"><div class=\"av av-nf\">?</div><div class=\"bub bub-nf\"><p><b>Sin información</b>: no se encontraron fuentes confiables.</p></div></div>'\n          : '<div class=\"bot\"><div class=\"av\">N</div><div class=\"bub\">' + markdown(cur.answer || '', (cur.fuentes || []).length) + '</div></div>')\n        + ((cur.fuentes || []).length ? '<ul class=\"hf\">' + cur.fuentes.map(function (f) {\n          const u = urlSegura(f.url)\n          const on = Number(d2.state.hres || 0) === Number(f.n)\n          return '<li data-n=\"' + attr(f.n) + '\"' + (on ? ' class=\"hf-on\"' : '') + '><span class=\"src-n\">' + esc(f.n) + '</span><span class=\"hf-t\">' + (u ? '<a href=\"' + attr(u) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(f.titulo) + '</a>' : esc(f.titulo))\n            + ' <span class=\"hf-tp\">' + esc(TIPOS[f.corpus] || f.corpus || '') + '</span>' + (f.citada ? ' <span class=\"src-cit\">citada</span>' : '') + '</span></li>'\n        }).join('') + '</ul>' : '') : '') + '</div>'\n      + '</div></div>'\n  }\n  return ''\n}\n\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '.app{--cream:rgb(254,251,244);--ink:#162b37;--ink2:rgba(22,43,55,.66);--line:#e3ddd2;--olive:rgb(230,238,189);--ok:#2e7d32;--accent:var(--acc,#FF6C0E);display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.55 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;position:relative;overflow:hidden}'\n    + 'button{font-family:inherit}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:16px;padding:12px 22px;border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}'\n    + '.brand b{font-size:22px;font-weight:700;letter-spacing:.5px}'\n    + '.brand span{font-size:12px;color:var(--ink2)}'\n    + '.chips{display:flex;gap:6px;flex:none}'\n    + '.chip{flex:none;border:1px solid var(--line);border-radius:16px;padding:6px 14px;font-weight:600;font-size:12px;line-height:1;color:var(--ink);background:#fff;cursor:pointer}'\n    + '.chip[aria-pressed=\"true\"]{background:var(--ink);border-color:var(--ink);color:#fff}'\n    + '.spacer{flex:1 1 auto;min-width:8px}'\n    + '.mk{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink2);flex:none}'\n    + '.mk select{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink)}'\n    + '.lock{flex:none;border:1px solid var(--line);border-radius:7px;padding:5px 10px;font-weight:700;background:#faf6ef;color:var(--ink)}'\n    + '.who{font-size:12px;color:var(--ink2);text-align:right;line-height:1.3;flex:none;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.who b{display:block;color:var(--ink);font-size:13px;overflow:hidden;text-overflow:ellipsis}'\n    + '.nav{display:flex;gap:6px;flex:none}'\n    + '.nl{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 11px;font-weight:600;font-size:12px;line-height:1;color:var(--ink);cursor:pointer;text-decoration:none}'\n    + '.nl:hover,.ico:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.ico{flex:none;width:34px;height:34px;padding:0;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;font-weight:700;font-size:15px;line-height:1;display:grid;place-items:center}'\n    + '.pv{flex:none;background:#fff6e6;border-bottom:1px solid #f0dcb4;color:#6b4e0e;font-size:12px;padding:7px 22px}'\n    + '.okb{position:absolute;left:50%;bottom:64px;transform:translateX(-50%);z-index:8;max-width:92%;background:#eaf5ea;border:1px solid #c8e3c8;border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.12);color:#1d5c20;font-size:12.5px;padding:8px 16px}'\n    + '.erb{flex:none;background:#fdf0f0;border-bottom:1px solid #f3cccc;color:#8c2f2f;font-size:13px;padding:10px 22px;display:flex;gap:12px;align-items:center}'\n    + '.main{flex:1 1 auto;display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,34%,420px);min-height:0}'\n    + '.left{display:flex;flex-direction:column;min-height:0;padding:18px 22px;gap:12px}'\n    + '.ask label{display:block;font-weight:600;margin-bottom:6px}'\n    + '.q{width:100%;height:92px;resize:none;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}'\n    + '.q:focus,.vin:focus{outline:2px solid var(--accent);outline-offset:-1px}'\n    + '.q:disabled{background:#f4f1ea;color:var(--ink2)}'\n    + '.ask-r{display:flex;align-items:center;gap:12px;margin-top:8px}'\n    + '.hint{font-size:12px;color:var(--ink2)}'\n    + '.hint-w{color:#8a4a10;font-weight:600}'\n    + '.send{flex:none;margin-left:auto;border:0;border-radius:8px;padding:10px 20px;background:var(--ink);color:#fff;font-weight:600;font-size:14px;line-height:1;cursor:pointer}'\n    + '.send:disabled{opacity:.4;cursor:default}'\n    + '.send:focus-visible,.chip:focus-visible,.dot:focus-visible,.act:focus-visible,.cit:focus-visible,.lnk:focus-visible,.nl:focus-visible,.ico:focus-visible{outline:2px solid var(--accent);outline-offset:2px}'\n    + '.log{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}'\n    + '.you{align-self:flex-end;max-width:82%;background:#fff;border:1px solid var(--line);border-radius:12px 12px 2px 12px;padding:10px 14px;white-space:pre-wrap;word-break:break-word}'\n    + '.bot{display:flex;gap:10px;max-width:96%}'\n    + '.bw{min-width:0;display:flex;flex-direction:column;gap:8px;flex:1}'\n    + '.av{width:34px;height:34px;flex:none;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;line-height:1}'\n    + '.av-nf{background:#8a6d1f}.av-er{background:#b3261e}'\n    + '.bub{background:var(--olive);border-radius:2px 16px 16px 16px;padding:12px 16px;min-width:0;word-break:break-word}'\n    + '.bub p{margin:0 0 8px}.bub p:last-child{margin:0}.bub ul,.bub ol{margin:6px 0;padding-left:22px}.bub li{margin:2px 0}'\n    + '.bub h4{font-size:14.5px;margin:8px 0 4px}.bub code{background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px}'\n    + '.bub blockquote{margin:8px 0;padding-left:10px;border-left:3px solid rgba(22,43,55,.25);color:var(--ink2)}'\n    + '.bub a{color:#0b57d0}'\n    + '.bub-muted{background:#f2efe7;color:var(--ink2);display:flex;align-items:center;gap:8px}'\n    + '.bub-nf{background:#fff6e6;border:1px solid #f0dcb4}.bub-nf ul{margin:4px 0 8px}.nf-l{font-size:12.5px;color:var(--ink2)}.nf-s{font-size:11px;color:var(--ink2)}.nf-t{font-size:12.5px}'\n    + '.bub-er{background:#fff0ef;border:1px solid rgba(179,38,30,.35);color:#8c1d16}'\n    + '.secs{font-size:12px;opacity:.8}'\n    + '.spin{width:14px;height:14px;border:2px solid rgba(22,43,55,.25);border-top-color:var(--ink);border-radius:50%;animation:gi .8s linear infinite;display:inline-block}'\n    + '@keyframes gi{to{transform:rotate(360deg)}}'\n    + '@media (prefers-reduced-motion:reduce){.spin{animation:none}}'\n    + '.cit{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;margin:0 1px;border:0;border-radius:9px;background:var(--ink);color:#fff;font-weight:700;font-size:10.5px;line-height:1;vertical-align:2px;cursor:pointer}'\n    + '.cit:hover{background:var(--accent)}.cits{white-space:nowrap}.cit-i{cursor:default}.cit-i:hover{background:var(--ink)}'\n    + '.acts{display:flex;gap:8px}'\n    + '.act{border:1px solid rgba(22,43,55,.22);background:rgba(255,255,255,.7);border-radius:7px;padding:5px 11px;font-weight:600;font-size:12px;line-height:1.4;color:var(--ink);cursor:pointer}'\n    + '.act:hover{border-color:var(--ink)}'\n    + '.vote{background:#fff;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:12px 14px}'\n    + '.vote-h{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.vote-h span{font-size:12px;color:var(--ink2)}'\n    + '.scale{display:flex;gap:9px;margin:4px 0 8px}'\n    + '.dot{flex:none;width:40px;height:40px;padding:0;border-radius:50%;border:1px solid rgba(22,43,55,.35);background:#fff;color:var(--ink);font-weight:700;font-size:16px;line-height:1;cursor:pointer}'\n    + '.dot[aria-checked=\"true\"]{background:var(--ink);color:#fff;border-color:var(--ink)}'\n    + '.vdesc{min-height:20px;font-size:12.5px;color:var(--ink2);margin-bottom:8px}'\n    + '.vin{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff;color:var(--ink);resize:vertical}'\n    + '.vrow{display:flex;align-items:center;gap:12px;margin-top:8px}.verr{font-size:12.5px;color:#b3261e}.vreq{font-size:12px;color:#8a4a10;margin-top:4px}'\n    + '.irvoto{border:0;background:transparent;padding:0;text-align:left;font-size:12px;font-weight:700;line-height:1.4;color:#8a4a10;text-decoration:underline;cursor:pointer}.irvoto:focus-visible{outline:2px solid var(--accent);outline-offset:2px}'\n    + '.empty{margin:auto;text-align:center;color:var(--ink2);max-width:340px;font-size:13px}'\n    + '.empty b{display:block;margin-bottom:8px;opacity:.3}.empty svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:1.6}'\n    + '.right{border-left:1px solid var(--line);background:#fffdf9;display:flex;flex-direction:column;min-height:0}'\n    + '.rh{display:flex;align-items:baseline;gap:8px;padding:16px 18px 8px;flex-wrap:wrap}'\n    + '.rh h2{margin:0;font-size:11px;letter-spacing:1.3px;text-transform:uppercase;color:var(--ink2)}'\n    + '.rh span{font-size:11px;color:var(--ink2);margin-left:auto}'\n    + '.srcs{flex:1;min-height:0;overflow:auto;padding:0 16px 16px;display:flex;flex-direction:column;gap:10px}'\n    + '.src{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;transition:box-shadow .2s,border-color .2s}'\n    + '.src-on{border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,108,14,.18)}'\n    + '.src-h{display:flex;gap:9px;align-items:flex-start}'\n    + '.src-n{flex:none;display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:10px;background:var(--ink);color:#fff;font-weight:700;font-size:11px;line-height:1;margin-top:1px}'\n    + '.src-t{flex:1;margin:0;font-size:13.5px;font-weight:700;line-height:1.35}'\n    + '.src-m{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}'\n    + '.tp{font-size:10px;letter-spacing:.4px;border-radius:5px;padding:2px 7px;font-weight:700;white-space:nowrap}'\n    + '.tp-faq{background:#e7dcf5;color:#4b2a78}.tp-beedoo{background:#dde9f5;color:#1e4a70}.tp-mx{background:#e6eebd;color:#4a5a17}.tp-wiki{background:#f6e2cd;color:#8a4a10}.tp-regla{background:#fde2e2;color:#7a1f1f}'\n    + '.src-c{font-size:10px;letter-spacing:.4px;background:#f2ede4;border-radius:5px;padding:2px 7px;color:var(--ink2)}'\n    + '.sc{font-size:10px;border-radius:5px;padding:2px 6px;border:1px solid var(--line);color:var(--ink2)}'\n    + '.src-cit{font-size:10px;border-radius:5px;padding:2px 6px;background:#eaf5ea;color:#1d5c20;font-weight:700}'\n    + '.src-b{margin:8px 0 0;font-size:12.5px;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap}'\n    + '.src-b-on{display:block;-webkit-line-clamp:unset}'\n    + '.src-a{display:flex;gap:14px;margin-top:8px}'\n    + '.lnk{border:0;background:transparent;padding:0;font-weight:600;font-size:12px;line-height:1.4;color:var(--accent);text-decoration:underline;cursor:pointer}'\n    + '.ft{flex:none;display:flex;align-items:center;gap:14px;padding:9px 22px;border-top:1px solid var(--line);background:#fff;font-size:12px;color:var(--ink2);flex-wrap:wrap}'\n    + '.tag{font-size:11px;border:1px dashed rgba(22,43,55,.35);border-radius:6px;padding:2px 7px;color:var(--ink2)}'\n    + '.hist{flex:none;margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 14px;font-weight:600;font-size:12px;line-height:1;color:var(--ink);cursor:pointer}'\n    + '.hist:hover{border-color:var(--accent);color:var(--accent)}'\n    + '.scrim{position:absolute;inset:0;background:rgba(0,0,0,.44);display:grid;place-items:center;z-index:9}'\n    + '.dlg{background:var(--cream);border-radius:18px;box-shadow:0 18px 50px rgba(0,0,0,.28);position:relative;max-width:94%;max-height:88%;display:flex;flex-direction:column}'\n    + '.dlg-h{display:flex;align-items:center;padding:20px 22px 10px}'\n    + '.dlg-h h2{margin:0;font-size:20px;font-weight:700}'\n    + '.x{margin-left:auto;width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;font-weight:700;font-size:22px;line-height:1;color:var(--ink);cursor:pointer;padding:0}.x:hover{background:rgba(22,43,55,.08)}.x:focus-visible{outline:2px solid var(--accent);outline-offset:1px}'\n    + '.dlg-b{padding:0 22px 22px;overflow:auto;min-height:0}.md p{margin:0 0 8px}.md ul{padding-left:20px}'\n    + '.w-help{width:640px}'\n    + '.w-hist{width:1000px;height:80%;display:grid;grid-template-columns:300px 1fr;grid-template-rows:auto auto minmax(0,1fr);gap:10px 18px;padding:0 22px 22px;overflow:hidden}'\n    + '.hh{grid-column:1/-1;padding:18px 0 0}.hpv{grid-column:1/-1;border-radius:8px;border:1px solid #f0dcb4}'\n    + '.hlist{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;grid-row:3}'\n    + '.hitem{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:10px 12px;cursor:pointer;color:var(--ink)}'\n    + '.hitem:hover{background:#faf6ef}.hitem[aria-selected=\"true\"]{background:var(--olive)}'\n    + '.hitem b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12.5px;font-weight:600;overflow:hidden}'\n    + '.hitem span{font-size:11px;color:var(--ink2)}'\n    + '.hdet{overflow:auto;padding-right:6px;display:flex;flex-direction:column;gap:12px;grid-row:3}'\n    + '.hf{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:12.5px}.hf li{display:flex;gap:8px;align-items:flex-start;border-radius:8px;padding:3px 4px;transition:background .2s}.hf a{color:#0b57d0}.hf-on{background:rgba(255,108,14,.16)}.hf-tp{font-size:11px;color:var(--ink2);white-space:nowrap}'\n    + '@media (max-width:900px){'\n    + '.hd{gap:8px 10px;padding:10px 14px}.who{display:none}.brand b{font-size:19px}.mk>span:not(.lock){display:none}'\n    + '.left{padding:12px 14px;flex:1 1 auto;min-height:0;gap:10px}.q{height:64px}.right-vacio{display:none}'\n    + '.main{display:flex;flex-direction:column}'\n    + '.right{flex:0 0 auto;border-left:0;border-top:1px solid var(--line);max-height:40%}'\n    + '.w-hist{width:96vw;grid-template-columns:1fr;grid-template-rows:auto auto auto minmax(0,1fr)}.hlist{grid-row:auto;max-height:32vh}.hdet{grid-row:auto}'\n    + '.w-help{width:94vw}.ft{gap:10px;padding:8px 14px}.okb{bottom:58px}'\n    + '}'\n    + '@media (max-width:600px){.hint-k{display:none}'\n    + '}'\n    + '@media (hover:none) and (pointer:coarse){.hint-k{display:none}.cit{min-width:22px;height:22px;border-radius:11px}}',\n\n  render(d2) {\n    const p = d2.state.perfil\n    const mk = mercadoActual(d2)\n    const ops = opcionesMercado(p)\n    const c = d2.state.conv\n    const r = (c && c.estado === 'ok' && c.res) || null\n    const fuentes = (r && r.fuentes) || (c && c.estado === 'error' && c.res && c.res.fuentes) || (!c && d2.state.pend && d2.state.pend.fuentes) || []\n    const pend = d2.state.pend\n    const bloqueado = !!pend || !!d2.state.busy || !p || !ops.length\n    const sup = !!(p && p.supervisor)\n    const debug = d2.param('debug') === true\n\n    const selector = !p ? '<span class=\"lock\">—</span>'\n      : ops.length > 1 ? '<select class=\"sel\" aria-label=\"Mercado\">' + ops.map(function (x) { return '<option value=\"' + attr(x) + '\"' + (x === mk ? ' selected' : '') + '>' + esc(x + ' · ' + (NOMBRES[x] || x)) + '</option>' }).join('') + '</select>'\n        : '<span class=\"lock\" title=\"Tu usuario está asignado a un solo mercado\">' + esc(mk ? mk + ' · ' + (NOMBRES[mk] || mk) : '—') + '</span>'\n\n    const enlaces = sup ? '<nav class=\"nav\" aria-label=\"Supervisor\"><a class=\"nl\" href=\"' + attr(d2.param('panelUrl', '/dashboard') || '/dashboard') + '\">Panel</a><a class=\"nl\" href=\"' + attr(d2.param('wikisUrl', '/upload-wikis') || '/upload-wikis') + '\">Wikis</a></nav>' : ''\n\n    const idx = (r && r.indices) || null\n    const lat = (c && c.res && c.res.latencias) || null\n    const tec = sup || debug\n    // estado de los índices: lo técnico solo para supervisor; lo que afecta la respuesta, para todos\n    const notaIdx = idx ? [idx.beedoo === 'texto' && tec ? 'wikis AR por texto' : idx.beedoo === 'error' ? 'wikis AR no disponibles' : '', idx.mx === 'degradado' ? 'índice MX degradado' : '', idx.wiki === 'ok' && tec ? 'base nueva activa' : ''].filter(Boolean).join(' · ') : ''\n\n    // con voto pendiente la dica vira botón que lleva al bloque de evaluación (puede quedar abajo de la respuesta)\n    let hint = '<span class=\"hint hint-k\">Enter envía · Shift+Enter nueva línea</span>'\n    if (pend) hint = '<button class=\"irvoto\">Evaluá la respuesta para hacer una nueva consulta ↓</button>'\n    else if (p && !ops.length) hint = '<span class=\"hint hint-w\">Tu usuario no tiene mercados asignados.</span>'\n\n    const banners = (isDemo(d2) ? '<div class=\"pv\">Modo demostración: datos ficticios, nada se guarda.</div>' : '')\n      + (d2.state.errPerfil ? '<div class=\"erb\" role=\"alert\"><span>' + esc(d2.state.errPerfil) + '</span><button class=\"act reperfil\">Reintentar</button></div>' : '')\n      + (d2.state.avisoVoto ? '<div class=\"okb\" role=\"status\">' + esc(d2.state.avisoVoto) + '</div>' : '')\n      + (d2.state.cargandoPerfil ? '<div class=\"pv\">Cargando tu perfil…</div>' : '')\n\n    return '<div class=\"app\" data-ready style=\"--acc:' + attr(acento(d2)) + '\">'\n      + '<header class=\"hd\">'\n      + '<div class=\"brand\"><b>NASVI</b><span>Copiloto del asesor</span></div>'\n      + '<div class=\"chips\" role=\"group\" aria-label=\"Canal de atención\">' + ORIGENES.map(function (o) { return '<button class=\"chip\" data-o=\"' + o[0] + '\" aria-pressed=\"' + ((d2.state.origen || 'chat') === o[0] ? 'true' : 'false') + '\">' + o[1] + '</button>' }).join('') + '</div>'\n      + '<div class=\"spacer\"></div>'\n      + '<div class=\"mk\"><span>Mercado</span>' + selector + '</div>'\n      + (p ? '<div class=\"who\" title=\"' + attr((p.nombre || '') + ' · ' + (p.email || '')) + '\"><b>' + esc(p.nombre || 'Asesor') + '</b>' + esc(p.email || '') + '</div>' : '')\n      + enlaces\n      + '<button class=\"ico help\" title=\"Ayuda\" aria-label=\"Ayuda\">?</button>'\n      + (isDemo(d2) ? '' : '<button class=\"nl salir\" title=\"Cerrar sesión\">Salir</button>')\n      + '</header>'\n      + banners\n      + '<div class=\"main\">'\n      + '<section class=\"left\">'\n      + '<div class=\"ask\"><label for=\"q\">¿Cuál es la pregunta de la consultora?</label>'\n      + '<textarea class=\"q\" id=\"q\" maxlength=\"1000\" placeholder=\"Escribí la duda tal como te la hicieron…\"' + (bloqueado ? ' disabled' : '') + '>' + esc(vida(d2).borrador) + '</textarea>'\n      + '<div class=\"ask-r\">' + hint\n      + (isDemo(d2) ? '<button class=\"act try\">Consulta de ejemplo</button>' : '')\n      + '<button class=\"send go\"' + (bloqueado ? ' disabled' : '') + '>' + (d2.state.busy ? 'Buscando…' : 'Enviar pregunta') + '</button></div>'\n      + (d2.state.aviso ? '<div class=\"hint hint-w\" role=\"alert\" style=\"margin-top:6px\">' + esc(d2.state.aviso) + '</div>' : '')\n      + '</div>'\n      + '<div class=\"log\" aria-live=\"polite\">' + conversacion(d2) + '</div>'\n      + '</section>'\n      + '<aside class=\"right' + (fuentes.length ? '' : ' right-vacio') + '\" aria-label=\"Fuentes\"><div class=\"rh\"><h2>Fuentes</h2>' + (notaIdx ? '<span>' + esc(notaIdx) + '</span>' : '') + '</div><div class=\"srcs\">'\n      + (fuentes.length ? fuentes.map(function (f) { return tarjeta(d2, f) }).join('')\n        : '<div class=\"empty\"><b><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" stroke-linejoin=\"round\"/><path d=\"M14 3v5h5M9 13h6M9 17h4\" stroke-linecap=\"round\"/></svg></b>' + (c && c.estado === 'sin_info' ? 'Sin fuentes confiables para esta consulta.' : 'Las wikis y FAQ usadas en la respuesta aparecen aquí.') + '</div>')\n      + '</div></aside>'\n      + '</div>'\n      + '<footer class=\"ft\">'\n      + (lat && lat.total_ms ? '<span>Respuesta en ' + nf(lat.total_ms / 1000, 1) + ' s</span>' : '')\n      + '<span>' + fuentes.length + (fuentes.length === 1 ? ' fuente' : ' fuentes') + '</span>'\n      + '<span>Mercado ' + esc(mk || '—') + '</span>'\n      + ((sup || debug) && r && r.diag ? '<span class=\"tag\">vec ' + esc(String((r.diag.faq_pasan || 0) + (r.diag.mx_vec_pasan || 0) + (r.diag.wiki_vec_pasan || 0))) + ' · texto ' + esc(String(r.diag.texto_pasan || 0)) + (r.diag.prompt_chars ? ' · ' + nf(r.diag.prompt_chars / 1000, 1) + 'k car.' : '') + '</span>' : '')\n      + ((sup || debug) && c && c.res && c.res.registrado === false ? '<span class=\"tag\" title=\"La tabla de consultas se activa con la próxima publicación\">telemetría pendiente</span>' : '')\n      + (isDemo(d2) ? '<span class=\"tag\">demo</span>' : '')\n      + '<button class=\"hist\">Historial</button>'\n      + '</footer>'\n      + modal(d2)\n      + '</div>'\n  },\n\n  mounted(d2) {\n    const v = vida(d2)\n    d2.onUnmount(function () { v.activo = false; pararReloj(d2) })\n    if (d2.param('debug') === true) {\n      try { window.__nasviApi = function (payload) { return api(d2, payload) }; window.__nasviD2 = d2 } catch (e) { /* sin ventana */ }\n    }\n    d2.setState({ origen: 'chat', hist: [], abiertas: {}, voto: { nota: 0, enviando: false, err: '' } })\n    cargarPerfil(d2)\n\n    d2.on('.q', 'input', function (e, el) { v.borrador = el.value; if (d2.state.aviso && String(el.value).trim().length >= 3) d2.setState({ aviso: '' }) })\n    d2.on('.q', 'keydown', function (e) { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); v.borrador = e.target.value; preguntar(d2) } })\n    d2.on('.go', 'click', function () { const el = d2.$('.q'); if (el) v.borrador = el.value; preguntar(d2) })\n    d2.on('.try', 'click', function () { v.borrador = '¿Por qué el pedido quedó retenido por límite de crédito?'; preguntar(d2) })\n    d2.on('.reintentar', 'click', function () { const c = d2.state.conv; if (c && c.pregunta) { v.borrador = c.pregunta; d2.setState({ conv: null }); preguntar(d2) } })\n    d2.on('.reperfil', 'click', function () { cargarPerfil(d2) })\n    d2.on('.chip', 'click', function (e, el) { d2.state.origen = el.dataset.o })\n    d2.on('.sel', 'change', function (e, el) {\n      d2.state.mercado = el.value\n      const p = d2.state.perfil; if (p) lsSet(kMk(p.email), el.value)\n    })\n    d2.on('.help', 'click', function () { d2.state.panel = 'help' })\n    d2.on('.hist', 'click', function () { abrirHistorial(d2) })\n    d2.on('.x', 'click', function () { d2.state.panel = null })\n    d2.on('.scrim', 'click', function (e, el) { if (e.target === el) d2.state.panel = null })\n    d2.on('.hitem', 'click', function (e, el) { d2.setState({ hsel: Number(el.dataset.h), hres: 0 }) })\n    d2.on('.irvoto', 'click', function () {\n      const vb = d2.$('.vote'); if (vb && vb.scrollIntoView) vb.scrollIntoView({ block: 'center', behavior: 'smooth' })\n      setTimeout(function () { const b = d2.$('.vote .dot'); if (b) try { b.focus({ preventScroll: true }) } catch (x) { /* sin foco */ } }, 400)\n    })\n    d2.on('.dot', 'click', function (e, el) { d2.setState({ voto: Object.assign({}, d2.state.voto || {}, { nota: Number(el.dataset.g), err: '' }) }) })\n    d2.on('.vin', 'input', function (e, el) {\n      const antes = String(v.comentario || '').trim().length >= 3\n      v.comentario = el.value\n      const ahora = String(v.comentario || '').trim().length >= 3\n      if (antes !== ahora) d2.setState({ tick: Date.now() })\n    })\n    d2.on('.vsend', 'click', function () { const el = d2.$('.vin'); if (el) v.comentario = el.value; votar(d2) })\n    d2.on('.cit', 'click', function (e, el) {\n      const n = Number(el.dataset.n)\n      if (!n) return\n      if (el.closest && el.closest('.hdet')) {\n        // en el historial: resalta la fuente en la lista del propio diálogo\n        d2.setState({ hres: n })\n        setTimeout(function () { const li = d2.$('.hf li[data-n=\"' + n + '\"]'); if (li && li.scrollIntoView) li.scrollIntoView({ block: 'nearest', behavior: 'smooth' }) }, 30)\n        setTimeout(function () { if (vida(d2).activo && Number(d2.state.hres) === n) d2.setState({ hres: 0 }) }, 2600)\n        return\n      }\n      d2.setState({ resaltada: n })\n      setTimeout(function () { const card = d2.$('#fuente-' + n); if (card && card.scrollIntoView) card.scrollIntoView({ block: 'nearest', behavior: 'smooth' }) }, 30)\n      setTimeout(function () { if (vida(d2).activo && Number(d2.state.resaltada) === n) d2.setState({ resaltada: 0 }) }, 2600)\n    })\n    d2.on('.ver', 'click', function (e, el) {\n      const a = Object.assign({}, d2.state.abiertas || {})\n      a[el.dataset.n] = !a[el.dataset.n]\n      d2.state.abiertas = a\n    })\n    d2.on('.copy', 'click', function (e, el) {\n      const c = d2.state.conv\n      const pend = d2.state.pend\n      const res = c && c.res\n      const t = res ? textoCopia(res.answer, res.fuentes) : textoCopia(pend && pend.answer, pend && pend.fuentes)\n      if (!t) return\n      copiar(d2, t).then(function (ok) {\n        try { el.textContent = ok ? 'Copiado' : 'No se pudo copiar' } catch (x) { /* ya no existe */ }\n        setTimeout(function () { try { el.textContent = 'Copiar respuesta' } catch (x) { /* ya no existe */ } }, 1600)\n      })\n    })\n    d2.on('.salir', 'click', async function () {\n      try {\n        const a = d2.auth(d2.params.auth)\n        if (a && typeof a.logout === 'function') await a.logout()\n      } catch (e) { /* sigue */ }\n      try { window.location.reload() } catch (e) { /* sin ventana */ }\n    })\n    d2.on(document, 'keydown', function (e) { if (e.key === 'Escape' && d2.state.panel) d2.state.panel = null })\n  },\n\n  updated(d2) {\n    const c = d2.state.conv\n    const key = c ? (c.estado + ':' + (c.res && c.res.query_id || '')) : ''\n    const v = vida(d2)\n    if (key && key !== v.ultimaVista) {\n      v.ultimaVista = key\n      const log = d2.$('.log'); if (log) log.scrollTop = 0\n    }\n    // diálogos: el foco entra en el diálogo al abrir y vuelve al botón que lo abrió al cerrar\n    const pn = d2.state.panel || ''\n    if (pn !== (v.panelVisto || '')) {\n      const antes = v.panelVisto || ''\n      v.panelVisto = pn\n      if (pn) { const x = d2.$('.dlg .x'); if (x) try { x.focus() } catch (e) { /* sin foco */ } }\n      else if (antes) { const b = d2.$(antes === 'hist' ? '.hist' : '.help'); if (b) try { b.focus() } catch (e) { /* sin foco */ } }\n    }\n  }\n}\n"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}},"app":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"app"}}}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"debug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"debug"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}},"panelUrl":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"panelUrl"}}}},"wikisUrl":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"wikisUrl"}}}}}}}}}},{"_id":"6aceeea737f71ecd10acd19c","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","component":"NasviPanel","package":"natura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// NasviPanel — NASVI v4, panel del supervisor (Agents Tools).\n// Todas las métricas salen del listener nasvi-v4-api-operador (op \"panel\"), que solo responde a\n// role = supervisor y solo devuelve agregados. Tres secciones: Uso, Calidad y Base de conocimiento.\n// Cada tarjeta muestra la serie del sistema anterior (legado) y la del copiloto nuevo (v4) por separado.\n// CSV por tarjeta. Sin librerías externas.\n\nconst VERSION = 'panel-4.3.2'\nconst TIPOS = { beedoo: 'Wiki AR', mx: 'Wiki MX', wiki: 'Wiki (base nueva)', faq: 'FAQ de AVI', regla: 'Regla MX' }\nconst MERCADOS = ['AR', 'MX', 'CO', 'PE', 'CL', 'EC']\nconst NOMBRES = { AR: 'Argentina', MX: 'México', CO: 'Colombia', PE: 'Perú', CL: 'Chile', EC: 'Ecuador' }\n// hora local del mercado = hora UTC + desvío (CL usa horario de verano desde septiembre)\nconst DESVIO = { AR: -3, MX: -6, CO: -5, PE: -5, CL: -3, EC: -5 }\nconst SECCIONES = [['uso', 'Uso'], ['calidad', 'Calidad'], ['base', 'Base de conocimiento']]\nconst LIMITE_MS = 90000\n\nfunction esc(s) { return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;') }\nfunction attr(s) { return esc(s).replace(/\"/g, '&quot;').replace(/'/g, '&#39;') }\nfunction isDemo(d2) { return d2.param('demo') === true }\nfunction nf(n, d) { const v = Number(n); if (!isFinite(v)) return '—'; return v.toLocaleString('es', { minimumFractionDigits: d || 0, maximumFractionDigits: d || 0 }) }\nfunction pct(a, b, d) { const x = Number(a), y = Number(b); if (!y || !isFinite(x)) return '—'; return nf((x / y) * 100, d == null ? 1 : d) + '%' }\nfunction iso(dt) { return new Date(dt).toISOString().slice(0, 10) }\nfunction haceDias(n) { const d = new Date(); d.setUTCDate(d.getUTCDate() - n); return d }\nfunction urlSegura(u) { const s = String(u || '').trim(); return /^https?:\\/\\/[^\\s\"'<>]+$/i.test(s) ? s : '' }\nfunction acento(d2) {\n  const v = String(d2.param('accent', '') || '').trim()\n  return /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\([0-9.,%\\s/deg]+\\)|[a-z]{3,24})$/i.test(v) ? v : '#FF6C0E'\n}\nfunction fecha(v) {\n  const t = typeof v === 'number' ? v : Date.parse(v)\n  if (!t) return '—'\n  try { return new Date(t).toLocaleString('es', { day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit' }) } catch (e) { return String(v).slice(0, 16) }\n}\nconst VIDA = new WeakMap()\nfunction vida(d2) { let v = VIDA.get(d2); if (!v) { v = { activo: true, pedido: 0 }; VIDA.set(d2, v) } return v }\nfunction poner(d2, o) { if (vida(d2).activo) d2.setState(o) }\n\n// ---- API (mismo contrato que el copiloto: el e-mail de la sesión viaja y la policy lo verifica) ----\nasync function emailSesion(d2) {\n  try {\n    const a = d2.auth(d2.params.auth)\n    if (!a) return ''\n    const c = []\n    try {\n      let g = a.raw && typeof a.raw.getSelectedSession === 'function' ? a.raw.getSelectedSession() : null\n      if (g && typeof g.then === 'function') g = await g\n      if (g && g.credentials) c.push(g.credentials.email)\n    } catch (e) { /* sigue */ }\n    const u = a.user || {}, s = a.session || {}\n    c.push(u.email, s.credentials && s.credentials.email)\n    for (let i = 0; i < c.length; i++) if (typeof c[i] === 'string' && c[i].indexOf('@') > 0) return c[i].trim().toLowerCase()\n  } catch (e) { /* sin sesión */ }\n  return ''\n}\nfunction conLimite(p, ms) {\n  let t = null\n  const reloj = new Promise(function (_, rej) { t = setTimeout(function () { rej(new Error('La API no respondió a tiempo.')) }, ms) })\n  return Promise.race([Promise.resolve(p), reloj]).finally(function () { clearTimeout(t) })\n}\nfunction esResp(o) { return !!o && typeof o === 'object' && !Array.isArray(o) && ('ok' in o || 'op' in o) }\nfunction desenvolver(res) {\n  let r = res\n  for (let i = 0; i < 3; i++) {\n    if (!r || typeof r !== 'object' || Array.isArray(r) || esResp(r)) break\n    if (esResp(r.data)) { r = r.data; continue }\n    if (r.data && typeof r.data === 'object') { r = r.data; continue }\n    break\n  }\n  return (r && typeof r === 'object') ? r : {}\n}\nfunction textoError(e) {\n  const msg = String((e && e.message) || e || '')\n  if (/\\b40[13]\\b|unauthori|no permissions/i.test(msg)) return 'Sesión vencida o sin permiso. Vuelva a iniciar sesión.'\n  if (/failed to fetch|network|load failed/i.test(msg)) return 'Sin conexión con el servidor.'\n  return msg.slice(0, 200) || 'Error desconocido.'\n}\nasync function api(d2, payload) {\n  if (isDemo(d2)) return demoApi(payload)\n  const ref = d2.params && d2.params.api\n  if (!ref) throw new Error('El parámetro \"api\" no está conectado.')\n  const email = await emailSesion(d2)\n  if (!email) throw new Error('No se encontró la sesión. Vuelva a iniciar sesión.')\n  return desenvolver(await conLimite(d2.rush(ref).invoke(Object.assign({}, payload, { email: email, client_version: VERSION })), LIMITE_MS))\n}\n\n// ---- demo ----\nfunction demoApi(p) {\n  return new Promise(function (res) {\n    setTimeout(function () {\n      if (p.op === 'perfil') return res({ ok: true, perfil: { nombre: 'Supervisora Demo', email: 'sup@natura.net', supervisor: true, mercados: MERCADOS } })\n      if (p.seccion === 'uso') {\n        const dias = []\n        for (let i = 0; i < 30; i++) { const d = iso(haceDias(29 - i)); dias.push({ _id: { d: d, c: 'AR' }, n: Math.round(20 + 15 * Math.sin(i / 3)) }, { _id: { d: d, c: 'MX' }, n: Math.round(8 + 6 * Math.cos(i / 4)) }) }\n        return res({ ok: true, seccion: 'uso', legado: { por_dia: dias.filter(function (x, i) { return i < 20 }), por_hora: [{ _id: { h: '13', c: 'AR' }, n: 40 }, { _id: { h: '15', c: 'AR' }, n: 55 }, { _id: { h: '18', c: 'MX' }, n: 22 }], por_canal: [{ _id: 'chat', n: 120 }, { _id: 'voz', n: 30 }], top: [{ _id: 'ana@natura.net', nombre: 'Ana Gómez', n: 44, c: 'AR' }], activos_total: [{ n: 14 }], sin_email: [{ n: 12 }] }, registrados: { por_mercado: [{ _id: 'AR', n: 40 }, { _id: 'MX', n: 30 }], total: [{ n: 70 }] }, v4: { por_dia: dias.slice(20), por_hora: [{ _id: { h: '14', c: 'AR' }, n: 30 }], por_canal: [{ _id: 'chat', n: 80 }, { _id: 'video', n: 9 }], top: [{ _id: 'jose@natura.net', nombre: 'José Pérez', n: 31, c: 'AR' }], activos_total: [{ n: 13 }], consultas_operadores: [{ n: 520 }] }, supervisores_excluidos: true, errores: [] })\n      }\n      if (p.seccion === 'calidad') return res({ ok: true, seccion: 'calidad', legado: { votos: [{ _id: 5, n: 30 }, { _id: 4, n: 22 }, { _id: 2, n: 6 }, { _id: 1, n: 4 }], eventos: [{ _id: 'assistant_ask', n: 300 }, { _id: 'answer_not_found', n: 12 }] }, v4: { resumen: [{ n: 120, nf: 14, rated: 90, deg: 0, err: 1, txt: 6, best: 0.77 }], notas: [{ _id: 5, n: 50 }, { _id: 4, n: 25 }, { _id: 3, n: 8 }, { _id: 2, n: 4 }, { _id: 1, n: 3 }], latencia_500ms: [{ _id: 4, n: 20 }, { _id: 5, n: 40 }, { _id: 6, n: 30 }, { _id: 9, n: 10 }], score_005: [{ _id: 14, n: 10 }, { _id: 15, n: 60 }, { _id: 16, n: 36 }], citas_tipo: [{ _id: 'v4.5', n: 20, con_wiki: 6, con_faq: 18, w_of: 30, w_ci: 7, f_of: 70, f_ci: 30 }, { _id: 'v4.6', n: 12, con_wiki: 10, con_faq: 8, w_of: 40, w_ci: 18, f_of: 30, f_ci: 10 }], curaduria: [{ question: '¿Cómo cambio la dirección?', answer: 'Estimado asesor, …', comment: 'Faltó el paso del sistema', grade: 2, operator_name: 'Ana Gómez', operator_email: 'ana@natura.net', market: 'AR', createdAt: new Date().toISOString(), fuentes: [{ n: 1, titulo: 'DIRECCIÓN DE ENTREGA', url: null, citada: true }] }] }, errores: [] })\n      return res({ ok: true, seccion: 'base', legado: { beedoo_ar: [{ _id: null, n: 671, a: 49 }], beedoo_mx: [{ _id: null, n: 373, a: 24 }], faq_curada: [{ _id: 'a', n: 191 }], wikis_citadas: [{ _id: '469962', n: 40 }] }, v4: { wikis: [], faq_usadas: [{ _id: 'f1', titulo: 'PLAZOS DE ENTREGA DE PEDIDOS ELO', mk: 'AR', ofrecida: 14, citada: 9, ult: new Date().toISOString() }], wikis_usadas: [{ _id: { c: 'beedoo', id: 'w1' }, titulo: 'Proceso Documentado Reclamos Transporte - CAN Argentina › 2. Atraso de Entrega', url: null, ofrecida: 11, citada: 7, ult: new Date().toISOString() }], lagunas: [{ question: '¿Cuál es la capital de Francia?', market: 'AR', createdAt: new Date().toISOString(), operator_name: 'Ana' }], articulos: 0, nunca_citadas: [] }, regiones: { AR: 'a' }, errores: [] })\n    }, 400)\n  })\n}\n\n// ---- carga ----\nfunction filtros(d2) {\n  return { desde: d2.state.desde || iso(haceDias(29)), hasta: d2.state.hasta || iso(new Date()), mercado: d2.state.mercado || '' }\n}\nasync function cargar(d2) {\n  const f = filtros(d2)\n  if (f.desde > f.hasta) { poner(d2, { aviso: 'La fecha inicial es posterior a la final. Los números de abajo son del período anterior.', viejo: true }); return }\n  if ((Date.parse(f.hasta) - Date.parse(f.desde)) / 86400000 > 399) { poner(d2, { aviso: 'Elija un período de hasta 400 días. Los números de abajo son del período anterior.', viejo: true }); return }\n  const v = vida(d2)\n  const pedido = ++v.pedido\n  poner(d2, { cargando: { uso: true, calidad: true, base: true }, errSec: {}, aviso: '', viejo: false })\n  SECCIONES.forEach(function (s) {\n    api(d2, { op: 'panel', seccion: s[0], desde: f.desde, hasta: f.hasta, mercado: f.mercado }).then(function (r) {\n      if (pedido !== vida(d2).pedido) return\n      const datos = Object.assign({}, d2.state.datos || {})\n      const carg = Object.assign({}, d2.state.cargando || {})\n      const errs = Object.assign({}, d2.state.errSec || {})\n      carg[s[0]] = false\n      if (r.ok) datos[s[0]] = r\n      else errs[s[0]] = (r.error && r.error.message) || 'No fue posible cargar la sección.'\n      poner(d2, { datos: datos, cargando: carg, errSec: errs, actualizado: Date.now() })\n    }).catch(function (e) {\n      if (pedido !== vida(d2).pedido) return\n      const carg = Object.assign({}, d2.state.cargando || {})\n      const errs = Object.assign({}, d2.state.errSec || {})\n      carg[s[0]] = false; errs[s[0]] = textoError(e)\n      poner(d2, { cargando: carg, errSec: errs })\n    })\n  })\n}\nasync function iniciar(d2) {\n  poner(d2, { verificando: true, errPerfil: '' })\n  try {\n    const r = await api(d2, { op: 'perfil' })\n    if (!r.ok) { poner(d2, { verificando: false, errPerfil: (r.error && r.error.message) || 'No fue posible verificar el usuario.' }); return }\n    const p = r.perfil || {}\n    poner(d2, { verificando: false, perfil: p, pv: r.prompt_version || '' })\n    if (p.supervisor) cargar(d2)\n  } catch (e) { poner(d2, { verificando: false, errPerfil: textoError(e) }) }\n}\n\n// ---- transformaciones ----\nfunction arr(x) { return Array.isArray(x) ? x : [] }\nfunction n0(rows) { if (rows == null) return NaN; return Number((arr(rows)[0] || {}).n) || 0 }\nfunction diasDe(desde, hasta) {\n  const out = []\n  const a = Date.parse(desde + 'T00:00:00Z'), b = Date.parse(hasta + 'T00:00:00Z')\n  for (let t = a; t <= b && out.length < 400; t += 86400000) out.push(iso(t))\n  return out\n}\nfunction porDia(rows, dias) {\n  const m = {}\n  arr(rows).forEach(function (r) { const d = r._id && r._id.d; if (d) m[d] = (m[d] || 0) + (Number(r.n) || 0) })\n  return dias.map(function (d) { return m[d] || 0 })\n}\nfunction porMercado(rowsA, rowsB) {\n  const m = {}\n  arr(rowsA).concat(arr(rowsB)).forEach(function (r) { const c = (r._id && r._id.c) || 'sin dato'; m[c] = (m[c] || 0) + (Number(r.n) || 0) })\n  return Object.keys(m).map(function (k) { return { _id: k, n: m[k] } }).sort(function (a, b) { return b.n - a.n })\n}\nfunction porHoraLocal(rows) {\n  const out = []\n  for (let h = 0; h < 24; h++) out.push(0)\n  arr(rows).forEach(function (r) {\n    const h = Number(r._id && r._id.h), c = r._id && r._id.c\n    if (!isFinite(h)) return\n    const loc = (((h + (DESVIO[c] || 0)) % 24) + 24) % 24\n    out[loc] += Number(r.n) || 0\n  })\n  return out\n}\nfunction sumarPorId(rowsA, rowsB, etiqueta) {\n  const m = {}\n  arr(rowsA).concat(arr(rowsB)).forEach(function (r) { const k = r._id == null || r._id === '' ? etiqueta : String(r._id); m[k] = (m[k] || 0) + (Number(r.n) || 0) })\n  return Object.keys(m).map(function (k) { return { _id: k, n: m[k] } }).sort(function (a, b) { return b.n - a.n })\n}\nfunction percentil(bins, p) {\n  const rows = arr(bins).map(function (b) { return { k: Number(b._id), n: Number(b.n) || 0 } }).filter(function (b) { return isFinite(b.k) }).sort(function (a, b) { return a.k - b.k })\n  const tot = rows.reduce(function (s, b) { return s + b.n }, 0)\n  if (!tot) return null\n  let acc = 0\n  for (let i = 0; i < rows.length; i++) { acc += rows[i].n; if (acc >= tot * p) return (rows[i].k + 0.5) * 0.5 }\n  return null\n}\nfunction notaMedia(rows) {\n  let s = 0, q = 0\n  arr(rows).forEach(function (r) { const g = Number(r._id), n = Number(r.n) || 0; if (g >= 1 && g <= 5) { s += g * n; q += n } })\n  return q ? { media: s / q, n: q } : { media: null, n: 0 }\n}\nfunction codigoRegion(regiones, id) {\n  const ks = Object.keys(regiones || {})\n  for (let i = 0; i < ks.length; i++) if (String(regiones[ks[i]]) === String(id)) return ks[i]\n  return null\n}\n\n// ---- gráficos (HTML/CSS) ----\nfunction vacio(t) { return '<div class=\"empty\">' + esc(t || 'Sin datos en el período.') + '</div>' }\nfunction barrasH(rows, etiq) {\n  if (!rows || !rows.length) return vacio()\n  const max = Math.max.apply(null, rows.map(function (r) { return Number(r.n) || 0 })) || 1\n  return '<ul class=\"bars\">' + rows.map(function (r) {\n    const n = Number(r.n) || 0, w = Math.max(1.5, (n / max) * 100), lab = etiq ? etiq(r) : String(r._id)\n    return '<li data-key=\"' + attr(lab) + '\"><span class=\"bl\" title=\"' + attr(lab) + '\">' + esc(lab) + '</span><span class=\"bt\"><i style=\"width:' + w.toFixed(1) + '%\"></i></span><span class=\"bv\">' + esc(nf(n)) + '</span></li>'\n  }).join('') + '</ul>'\n}\nfunction columnasDia(dias, serieA, serieB) {\n  const tot = serieA.reduce(function (s, x) { return s + x }, 0) + serieB.reduce(function (s, x) { return s + x }, 0)\n  if (!tot) return vacio()\n  const max = Math.max.apply(null, dias.map(function (d, i) { return serieA[i] + serieB[i] })) || 1\n  const paso = Math.max(1, Math.round(dias.length / 8))\n  return '<div class=\"cols\">' + dias.map(function (d, i) {\n    const a = serieA[i], b = serieB[i]\n    const ult = i === dias.length - 1\n    const rot = ult || (i % paso === 0 && dias.length - 1 - i >= paso)\n    return '<div class=\"col\" data-key=\"' + attr(d) + '\" title=\"' + attr(d + ' — sistema anterior ' + a + ' · v4 ' + b) + '\"><div class=\"stk\"><i class=\"s2\" style=\"height:' + ((b / max) * 100).toFixed(1) + '%\"></i><i class=\"s1\" style=\"height:' + ((a / max) * 100).toFixed(1) + '%\"></i></div><span>' + (rot ? esc(d.slice(5)) : '') + '</span></div>'\n  }).join('') + '</div><ul class=\"leg\"><li><b class=\"dot s1\"></b>Sistema anterior</li><li><b class=\"dot s2\"></b>Copiloto v4</li></ul>'\n}\nfunction columnasHora(serie) {\n  const tot = serie.reduce(function (s, x) { return s + x }, 0)\n  if (!tot) return vacio()\n  const max = Math.max.apply(null, serie) || 1\n  return '<div class=\"cols\">' + serie.map(function (n, h) {\n    return '<div class=\"col\" data-key=\"h' + h + '\" title=\"' + h + ':00 — ' + attr(nf(n)) + '\"><div class=\"stk\"><i class=\"s1\" style=\"height:' + (n ? Math.max(2, (n / max) * 100) : 0).toFixed(1) + '%\"></i></div><span>' + (h % 3 === 0 ? h : '') + '</span></div>'\n  }).join('') + '</div>'\n}\nfunction distNotas(rows, rowsLeg) {\n  const v = [1, 2, 3, 4, 5].map(function (g) { return { g: g, n: arr(rows).filter(function (r) { return Number(r._id) === g }).reduce(function (s, r) { return s + (Number(r.n) || 0) }, 0) } })\n  const l = [1, 2, 3, 4, 5].map(function (g) { return { g: g, n: arr(rowsLeg).filter(function (r) { return Number(r._id) === g }).reduce(function (s, r) { return s + (Number(r.n) || 0) }, 0) } })\n  const tv = v.reduce(function (s, x) { return s + x.n }, 0), tl = l.reduce(function (s, x) { return s + x.n }, 0)\n  if (!tv && !tl) return vacio('Sin votos en el período.')\n  const fila = function (nombre, xs, t) {\n    return '<div class=\"dist\"><span class=\"dl\">' + esc(nombre) + '</span><div class=\"segbar\">' + xs.map(function (x) { return x.n ? '<i class=\"g' + x.g + '\" style=\"width:' + ((x.n / t) * 100).toFixed(2) + '%\" title=\"nota ' + x.g + ': ' + x.n + '\"></i>' : '' }).join('') + '</div><span class=\"dv\">' + esc(nf(t)) + '</span></div>'\n  }\n  return (tv ? fila('Copiloto v4', v, tv) : '') + (tl ? fila('Sistema anterior', l, tl) : '')\n    + '<ul class=\"leg\">' + [1, 2, 3, 4, 5].map(function (g) { return '<li><b class=\"dot g' + g + '\"></b>' + g + '</li>' }).join('') + '</ul>'\n}\nfunction histo(rows, rotulo, ancho) {\n  const xs = arr(rows).map(function (r) { return { k: Number(r._id), n: Number(r.n) || 0 } }).filter(function (r) { return isFinite(r.k) }).sort(function (a, b) { return a.k - b.k })\n  if (!xs.length) return vacio()\n  return barrasH(xs.map(function (x) { return { _id: rotulo(x.k), n: x.n } }), null)\n}\nfunction tabla(cols, rows, cls) {\n  if (!rows || !rows.length) return vacio()\n  return '<div class=\"tbw\"><table class=\"tb' + (cls ? ' ' + cls : '') + '\"><thead><tr>' + cols.map(function (c) { return '<th>' + esc(c[0]) + '</th>' }).join('') + '</tr></thead><tbody>'\n    + rows.map(function (r, i) { return '<tr data-key=\"r' + i + '\">' + cols.map(function (c) { return '<td>' + c[1](r) + '</td>' }).join('') + '</tr>' }).join('') + '</tbody></table></div>'\n}\n\n// ---- tarjetas ----\n// Cada tarjeta registra sus filas en d2 para el botón CSV.\nfunction tarjeta(d2, id, titulo, sub, cuerpo, csv, ancho) {\n  const reg = vida(d2).csv || (vida(d2).csv = {})\n  reg[id] = csv\n  return '<section class=\"card' + (ancho ? ' wide' : '') + '\" data-key=\"' + attr(id) + '\"><div class=\"cardhd\"><h3>' + esc(titulo) + '</h3>'\n    + (csv && csv.rows && csv.rows.length ? '<button class=\"tgl csv\" data-c=\"' + attr(id) + '\" title=\"Descargar CSV\">CSV</button>' : '') + '</div>'\n    + (sub ? '<div class=\"sub\">' + esc(sub) + '</div>' : '') + cuerpo + '</section>'\n}\nfunction mdMin(t) { return esc(t).replace(/\\*\\*([^*\\n]+)\\*\\*/g, '<strong>$1</strong>') }\n// FAQ/wikis más usadas: desempate estable (citada, ofrecida, último uso, título)\nfunction ordenUso(xs) {\n  return xs.slice().sort(function (a, b) { return (Number(b.citada) - Number(a.citada)) || (Number(b.ofrecida) - Number(a.ofrecida)) || ((Date.parse(b.ult) || 0) - (Date.parse(a.ult) || 0)) || String(a.titulo || '').localeCompare(String(b.titulo || '')) })\n}\nfunction kpi(v, l, n) { return '<div class=\"kpi\"><div class=\"v\">' + esc(v) + '</div><div class=\"l\">' + esc(l) + '</div>' + (n ? '<div class=\"n\">' + esc(n) + '</div>' : '') + '</div>' }\n\nfunction secUso(d2, r) {\n  const f0 = filtros(d2)\n  const f = { desde: r.desde || f0.desde, hasta: r.hasta || f0.hasta, mercado: r.mercado != null ? r.mercado : f0.mercado }\n  const dias = diasDe(f.desde, f.hasta)\n  const L = r.legado || {}, V = r.v4 || {}, R = r.registrados || {}\n  const sA = porDia(L.por_dia, dias), sB = porDia(V.por_dia, dias)\n  const totA = sA.reduce(function (s, x) { return s + x }, 0), totB = sB.reduce(function (s, x) { return s + x }, 0)\n  const regs = f.mercado ? arr(R.por_mercado).filter(function (x) { return x._id === f.mercado }).reduce(function (s, x) { return s + (Number(x.n) || 0) }, 0) : n0(R.total)\n  const actV = n0(V.activos_total), actL = n0(L.activos_total), consOp = n0(V.consultas_operadores), sinEmail = n0(L.sin_email)\n  vida(d2).periodo = { desde: f.desde, hasta: f.hasta }\n  const sinSup = r.supervisores_excluidos !== false\n  const horas = porHoraLocal(arr(L.por_hora).concat(arr(V.por_hora)))\n  const merc = porMercado(L.por_dia, V.por_dia)\n  const canal = sumarPorId(L.por_canal, V.por_canal, 'sin dato')\n  const top = arr(V.top).map(function (x) { return { email: x._id || '', nombre: x.nombre || '', mercado: x.c || '', n: x.n, serie: 'v4' } })\n    .concat(arr(L.top).map(function (x) { return { email: x._id || '', nombre: x.nombre || '', mercado: x.c || '', n: x.n, serie: 'legado' } }))\n    .sort(function (a, b) { return b.n - a.n }).slice(0, 15)\n  return '<div class=\"kpis\">'\n    + kpi(nf(totA + totB), 'Consultas en el período', nf(totB) + ' en el copiloto v4 · ' + nf(totA) + ' en el sistema anterior')\n    + kpi(pct(actV, regs, 1), 'Operadores activos (v4)', nf(actV) + ' de ' + nf(regs) + ' registrados (sin contar supervisores)' + (sinSup ? '' : ' · incluye supervisores (no se pudo leer la lista)'))\n    + kpi(nf(actL), 'Activos en el sistema anterior', 'con e-mail registrado y al menos una consulta' + (sinSup ? ', sin supervisores' : ' · incluye supervisores (no se pudo leer la lista)') + (sinEmail > 0 ? ' · ' + nf(sinEmail) + ' consultas sin e-mail' : ''))\n    + kpi(actV ? nf(consOp / actV, 1) : '—', 'Consultas por operador activo (v4)', sinSup ? 'sin contar a los supervisores' : 'incluye supervisores (no se pudo leer la lista)')\n    + '</div><div class=\"grid\">'\n    + tarjeta(d2, 'dia', 'Consultas por día', 'UTC · apilado: sistema anterior + copiloto v4', columnasDia(dias, sA, sB), { cols: ['dia', 'sistema_anterior', 'copiloto_v4'], rows: dias.map(function (d, i) { return [d, sA[i], sB[i]] }) }, true)\n    + tarjeta(d2, 'mercado', 'Consultas por mercado', 'ambos sistemas', barrasH(merc, function (x) { return x._id + (NOMBRES[x._id] ? ' · ' + NOMBRES[x._id] : '') }), { cols: ['mercado', 'consultas'], rows: merc.map(function (x) { return [x._id, x.n] }) })\n    + tarjeta(d2, 'canal', 'Consultas por canal', 'chat · voz · video', barrasH(canal), { cols: ['canal', 'consultas'], rows: canal.map(function (x) { return [x._id, x.n] }) })\n    + tarjeta(d2, 'hora', 'Horas de mayor actividad', 'hora local de cada mercado', columnasHora(horas), { cols: ['hora_local', 'consultas'], rows: horas.map(function (n, h) { return [h, n] }) })\n    + tarjeta(d2, 'top', 'Operadores con más consultas', 'nombre y e-mail · ' + (sinSup ? 'sin supervisores' : 'incluye supervisores') + ' · v4 y sistema anterior (este, solo registros con e-mail)',\n      tabla([['Operador', function (x) { return '<b>' + esc(x.nombre || '—') + '</b><br><span class=\"mut\">' + esc(x.email || 'sin e-mail') + '</span>' }], ['Mercado', function (x) { return esc(x.mercado) }], ['Serie', function (x) { return '<span class=\"tag tag-' + x.serie + '\">' + (x.serie === 'v4' ? 'v4' : 'anterior') + '</span>' }], ['Consultas', function (x) { return '<b>' + esc(nf(x.n)) + '</b>' }]], top),\n      { cols: ['nombre', 'email', 'mercado', 'serie', 'consultas'], rows: top.map(function (x) { return [x.nombre, x.email, x.mercado, x.serie, x.n] }) }, true)\n    + '</div>'\n}\n\nfunction secCalidad(d2, r) {\n  const L = r.legado || {}, V = r.v4 || {}\n  vida(d2).periodo = { desde: r.desde || filtros(d2).desde, hasta: r.hasta || filtros(d2).hasta }\n  const res = arr(V.resumen)[0] || {}\n  const n = Number(res.n) || 0, nfd = Number(res.nf) || 0, rated = Number(res.rated) || 0, soloTxt = Number(res.txt) || 0\n  const errIa = Number(res.err) || 0\n  const respondidas = Math.max(0, n - nfd - errIa)\n  const nm = notaMedia(V.notas), nl = notaMedia(L.votos)\n  const p50 = percentil(V.latencia_500ms, 0.5), p90 = percentil(V.latencia_500ms, 0.9)\n  const ev = {}; arr(L.eventos).forEach(function (x) { ev[x._id] = Number(x.n) || 0 })\n  const cur = arr(V.curaduria)\n  const ct = arr(V.citas_tipo)\n  const pv = d2.state.pv || ''\n  const ctPv = ct.filter(function (x) { return x._id === pv })[0] || null\n  return '<div class=\"kpis\">'\n    + kpi(nm.media == null ? '—' : nf(nm.media, 2), 'Nota media (v4)', nm.n + ' votos' + (nl.media == null ? '' : ' · anterior ' + nf(nl.media, 2) + ' (' + nl.n + ')'))\n    + kpi(pct(rated, respondidas, 0), 'Respuestas evaluadas (v4)', 'con nota del operador: ' + nf(rated) + ' de ' + nf(respondidas) + ' respuestas con fuente')\n    + kpi(pct(nfd, n, 1), 'Sin información (v4)', nf(nfd) + ' de ' + nf(n) + ' consultas no tuvieron fuente confiable')\n    + kpi(p50 == null ? '—' : '≈' + nf(p50, 1) + ' s', 'Latencia p50 (v4)', p90 == null ? '' : 'p90 ≈' + nf(p90, 1) + ' s · aproximado por franjas de 0,5 s')\n    + kpi(res.best == null ? '—' : nf(res.best, 2), 'Similitud media de la mejor fuente', 'consultas con fuente semántica (FAQ/wikis)')\n    + kpi(ctPv ? pct(ctPv.con_wiki, ctPv.n, 0) : '—', 'Respuestas que citan wiki' + (pv ? ' (' + pv + ')' : ''), ctPv ? nf(ctPv.con_wiki) + ' de ' + nf(ctPv.n) + ' · citan FAQ: ' + nf(ctPv.con_faq) : 'sin respuestas con el prompt actual en el período')\n    + '</div><div class=\"grid\">'\n    + tarjeta(d2, 'notas', 'Distribución de notas', '1 = nada útil · 5 = exactamente lo que necesitaba', distNotas(V.notas, L.votos), { cols: ['nota', 'copiloto_v4', 'sistema_anterior'], rows: [1, 2, 3, 4, 5].map(function (g) { return [g, arr(V.notas).filter(function (x) { return Number(x._id) === g }).reduce(function (s, x) { return s + x.n }, 0), arr(L.votos).filter(function (x) { return Number(x._id) === g }).reduce(function (s, x) { return s + x.n }, 0)] }) })\n    + tarjeta(d2, 'lat', 'Latencia de respuesta (v4)', 'segundos, en franjas de 0,5 s', histo(V.latencia_500ms, function (k) { return nf(k * 0.5, 1) + '–' + nf((k + 1) * 0.5, 1) + ' s' }), { cols: ['franja_s', 'consultas'], rows: arr(V.latencia_500ms).map(function (x) { return [x._id * 0.5, x.n] }) })\n    + tarjeta(d2, 'score', 'Similitud de la mejor fuente (v4)', 'franjas de 0,05 · más alto = fuente más parecida' + (soloTxt ? ' · ' + nf(soloTxt) + ' respuestas solo con fuente de texto (sin similitud)' : ''), histo(V.score_005, function (k) { return nf(k * 0.05, 2) + '–' + nf((k + 1) * 0.05, 2) }), { cols: ['franja', 'consultas'], rows: arr(V.score_005).map(function (x) { return [x._id * 0.05, x.n] }) })\n    + tarjeta(d2, 'tipos', 'Citas por tipo de fuente', 'por versión del prompt · ofrecidas = enviadas a la IA · citadas = usadas en la respuesta', tabla([['Prompt', function (x) { return esc(x._id || '—') }], ['Respuestas', function (x) { return esc(nf(x.n)) }], ['Citan wiki', function (x) { return '<b>' + esc(pct(x.con_wiki, x.n, 0)) + '</b>' }], ['Citan FAQ', function (x) { return esc(pct(x.con_faq, x.n, 0)) }], ['Wikis citadas / ofrecidas', function (x) { return esc(nf(x.w_ci) + ' / ' + nf(x.w_of)) }], ['FAQ citadas / ofrecidas', function (x) { return esc(nf(x.f_ci) + ' / ' + nf(x.f_of)) }]], ct, 'tb-t'), { cols: ['prompt', 'respuestas', 'citan_wiki', 'citan_faq', 'wikis_citadas', 'wikis_ofrecidas', 'faq_citadas', 'faq_ofrecidas'], rows: ct.map(function (x) { return [x._id, x.n, x.con_wiki, x.con_faq, x.w_ci, x.w_of, x.f_ci, x.f_of] }) }, true)\n    + tarjeta(d2, 'legado', 'Sistema anterior', 'eventos del período', '<div class=\"mini\">' + kpi(nf(ev.assistant_ask || 0), 'Preguntas', '') + kpi(nf(ev.answer_not_found || 0), 'Marcadas \"no encontrado\"', '') + '</div>', { cols: ['evento', 'cantidad'], rows: Object.keys(ev).map(function (k) { return [k, ev[k]] }) })\n    + tarjeta(d2, 'curaduria', 'Pendientes de curaduría (nota 1 o 2)', 'respuestas mal evaluadas para revisar la base', cur.length ? '<ul class=\"cur\">' + cur.map(function (c, i) {\n      return '<li data-key=\"c' + i + '\"><div class=\"ch\"><span class=\"nota n' + esc(c.grade) + '\">' + esc(c.grade) + '</span><b>' + esc(c.question) + '</b></div>'\n        + '<div class=\"mut\">' + esc((c.operator_name || '') + ' · ' + (c.operator_email || '') + ' · ' + (c.market || '') + ' · ' + fecha(c.createdAt)) + '</div>'\n        + (c.comment ? '<div class=\"com\">“' + esc(c.comment) + '”</div>' : '')\n        + '<details><summary>Ver respuesta y fuentes</summary><p class=\"ans\">' + mdMin(c.answer) + '</p><ul class=\"fl\">' + arr(c.fuentes).map(function (s) { const u = urlSegura(s.url); return '<li>[' + esc(s.n) + '] ' + (u ? '<a href=\"' + attr(u) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(s.titulo) + '</a>' : esc(s.titulo)) + (s.citada ? ' <span class=\"tag\">citada</span>' : '') + '</li>' }).join('') + '</ul></details></li>'\n    }).join('') + '</ul>' : vacio('No hay respuestas con nota 1 o 2 en el período.'), { cols: ['fecha', 'operador', 'email', 'mercado', 'nota', 'pregunta', 'comentario'], rows: cur.map(function (c) { return [c.createdAt, c.operator_name, c.operator_email, c.market, c.grade, c.question, c.comment] }) }, true)\n    + '</div>'\n}\n\nfunction secBase(d2, r) {\n  const L = r.legado || {}, V = r.v4 || {}, reg = r.regiones || {}\n  vida(d2).periodo = { desde: r.desde || filtros(d2).desde, hasta: r.hasta || filtros(d2).hasta }\n  const faq = {}\n  let otras = 0\n  arr(L.faq_curada).forEach(function (x) { const c = codigoRegion(reg, x._id); if (c) faq[c] = (faq[c] || 0) + (Number(x.n) || 0); else otras += Number(x.n) || 0 })\n  const faqRows = MERCADOS.map(function (c) { return { _id: c, n: faq[c] || 0 } })\n  const bAr = arr(L.beedoo_ar).filter(function (x) { return !x._id || (x._id.c === 'AR' && x._id.e !== true) }).reduce(function (s, x) { return { n: s.n + (Number(x.n) || 0), a: s.a + (Number(x.a) || 0) } }, { n: 0, a: 0 })\n  const bMx = arr(L.beedoo_mx)[0] || {}\n  const t1 = arr(V.wikis)\n  const t1Rows = t1.map(function (x) { return { mercado: (x._id && x._id.m) || '?', ecommerce: !!(x._id && x._id.e), trechos: x.n, articulos: x.a, ult: x.ult } })\n  const faqU = ordenUso(arr(V.faq_usadas)), wikU = ordenUso(arr(V.wikis_usadas)), lagunas = arr(V.lagunas), nunca = arr(V.nunca_citadas)\n  const legW = arr(L.wikis_citadas).filter(function (x) { return x._id != null && x._id !== '' })\n  const todos = filtros(d2).mercado ? ' · no depende del filtro de mercado' : ''\n  // lagunas: la misma pregunta repetida aparece una vez, con la cantidad y la fecha más reciente\n  const lagG = [], lagI = {}\n  lagunas.forEach(function (x) {\n    const k = String(x.question || '').trim().toLowerCase()\n    if (lagI[k] == null) { lagI[k] = lagG.length; lagG.push(Object.assign({}, x, { veces: 1 })) } else { const g = lagG[lagI[k]]; g.veces++; if ((Date.parse(x.createdAt) || 0) > (Date.parse(g.createdAt) || 0)) g.createdAt = x.createdAt }\n  })\n  return '<div class=\"kpis\">'\n    + kpi(nf(faqRows.reduce(function (s, x) { return s + x.n }, 0)), 'FAQ curadas activas', 'finalizadas, no pendientes y vigentes en los 6 mercados' + (otras ? ' · ' + nf(otras) + ' en otras regiones' : '') + todos)\n    + kpi(nf(bAr.a) + ' / ' + nf(bAr.n), 'Wikis AR (base anterior)', 'artículos / fragmentos · búsqueda por texto')\n    + kpi(nf(bMx.a) + ' / ' + nf(bMx.n), 'Wikis MX (base anterior)', 'artículos / fragmentos · búsqueda semántica')\n    + kpi(t1.length ? nf(V.articulos == null ? NaN : Number(V.articulos)) : '—', 'Base nueva de wikis (v4)', t1.length ? 'artículos importados' : 'pendiente de la carga inicial')\n    + '</div><div class=\"grid\">'\n    + tarjeta(d2, 'faq', 'FAQ curadas por mercado', 'solo las activas: finalizadas, no pendientes y vigentes' + todos, barrasH(faqRows, function (x) { return x._id + ' · ' + NOMBRES[x._id] }), { cols: ['mercado', 'faq_activas'], rows: faqRows.map(function (x) { return [x._id, x.n] }) })\n    + tarjeta(d2, 't1', 'Base nueva de wikis por mercado', 'fragmentos y artículos importados por el panel de wikis', t1Rows.length ? tabla([['Mercado', function (x) { return esc(x.mercado) + (x.ecommerce ? ' · e-commerce' : '') }], ['Artículos', function (x) { return esc(nf(x.articulos)) }], ['Fragmentos', function (x) { return esc(nf(x.trechos)) }], ['Última importación', function (x) { return esc(fecha(x.ult)) }]], t1Rows) : vacio('Todavía no hay artículos en la base nueva.'), { cols: ['mercado', 'ecommerce', 'articulos', 'fragmentos', 'ultima_importacion'], rows: t1Rows.map(function (x) { return [x.mercado, x.ecommerce, x.articulos, x.trechos, x.ult] }) })\n    + tarjeta(d2, 'faqus', 'FAQ más usadas (v4)', 'FAQ de AVI que entraron en las fuentes de una respuesta · citada = la respuesta la usó', tabla([['FAQ', function (x) { return esc(x.titulo || x._id) + '<br><span class=\"mut\">' + esc((x.mk || '') + (x.cat && [].concat(x.cat).length ? ' · ' + [].concat(x.cat).join(', ') : '')) + '</span>' }], ['Ofrecida', function (x) { return esc(nf(x.ofrecida)) }], ['Citada', function (x) { return '<b>' + esc(nf(x.citada)) + '</b>' }], ['% citada', function (x) { return esc(pct(x.citada, x.ofrecida, 0)) }], ['Último uso', function (x) { return esc(fecha(x.ult)) }]], faqU, 'tb-u'), { cols: ['faq', 'mercado', 'ofrecida', 'citada', 'pct_citada', 'ultimo_uso', 'id'], rows: faqU.map(function (x) { return [x.titulo, x.mk, x.ofrecida, x.citada, x.ofrecida ? Math.round((x.citada / x.ofrecida) * 100) : '', x.ult, x._id] }) }, true)\n    + tarjeta(d2, 'wikius', 'Wikis más usadas (v4)', 'fragmentos de wiki que entraron en las fuentes de una respuesta · citada = la respuesta la usó', tabla([['Wiki', function (x) { const u = urlSegura(x.url); return (u ? '<a href=\"' + attr(u) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(x.titulo) + '</a>' : esc(x.titulo)) + '<br><span class=\"mut\">' + esc(TIPOS[(x._id && x._id.c) || ''] || '') + '</span>' }], ['Ofrecida', function (x) { return esc(nf(x.ofrecida)) }], ['Citada', function (x) { return '<b>' + esc(nf(x.citada)) + '</b>' }], ['% citada', function (x) { return esc(pct(x.citada, x.ofrecida, 0)) }], ['Último uso', function (x) { return esc(fecha(x.ult)) }]], wikU, 'tb-u'), { cols: ['wiki', 'tipo', 'ofrecida', 'citada', 'pct_citada', 'ultimo_uso', 'url'], rows: wikU.map(function (x) { return [x.titulo, x._id && x._id.c, x.ofrecida, x.citada, x.ofrecida ? Math.round((x.citada / x.ofrecida) * 100) : '', x.ult, x.url] }) }, true)\n    + tarjeta(d2, 'lagunas', 'Lagunas: consultas sin información (v4)', 'preguntas para las que no había fuente confiable', lagG.length ? '<ul class=\"lag\">' + lagG.map(function (x, i) { return '<li data-key=\"l' + i + '\"><b>' + esc(x.question) + (x.veces > 1 ? ' <span class=\"tag\">×' + x.veces + '</span>' : '') + '</b><span class=\"mut\">' + esc((x.market || '') + ' · ' + (x.operator_name || '') + ' · ' + (x.veces > 1 ? 'última ' : '') + fecha(x.createdAt)) + '</span></li>' }).join('') + '</ul>' : vacio('Ninguna consulta sin información en el período.'), { cols: ['fecha', 'mercado', 'operador', 'pregunta'], rows: lagunas.map(function (x) { return [x.createdAt, x.market, x.operator_name, x.question] }) }, true)\n    + tarjeta(d2, 'nunca', 'Artículos de la base nueva nunca citados', 'candidatos a revisar o retirar', nunca.length ? tabla([['Artículo', function (x) { const u = urlSegura(x.url); return u ? '<a href=\"' + attr(u) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + esc(x.titulo || x._id) + '</a>' : esc(x.titulo || x._id) }], ['ID', function (x) { return esc(x._id) }]], nunca) : vacio(V.nunca_citadas == null && t1.length ? 'No disponible: falló el cálculo de artículos o citas.' : t1.length ? 'Todos los artículos fueron citados al menos una vez.' : 'Se calcula cuando la base nueva tenga artículos.'), { cols: ['article_id', 'titulo', 'url'], rows: nunca.map(function (x) { return [x._id, x.titulo, x.url] }) })\n    + tarjeta(d2, 'legw', 'Wikis más consultadas en el sistema anterior', 'evento assistant_ask · id del artículo', barrasH(legW.map(function (x) { return { _id: String(x._id), n: x.n } })), { cols: ['article_id', 'consultas'], rows: legW.map(function (x) { return [x._id, x.n] }) })\n    + '</div>'\n}\n\nfunction descargarCsv(d2, id) {\n  const c = (vida(d2).csv || {})[id]\n  if (!c || !c.rows) return\n  const celda = function (v) { let s = String(v == null ? '' : v); if (/^[=+\\-@\\t\\r]/.test(s)) s = \"'\" + s; return /[\",\\n;]/.test(s) ? '\"' + s.replace(/\"/g, '\"\"') + '\"' : s }\n  const txt = [c.cols.join(',')].concat(c.rows.map(function (r) { return r.map(celda).join(',') })).join('\\n')\n  try {\n    const blob = new Blob(['﻿' + txt], { type: 'text/csv;charset=utf-8' })\n    const url = URL.createObjectURL(blob)\n    const a = document.createElement('a')\n    const per = vida(d2).periodo || filtros(d2)\n    a.href = url; a.download = 'nasvi-' + id + '-' + per.desde + '_' + per.hasta + '.csv'\n    document.body.appendChild(a); a.click(); a.remove()\n    setTimeout(function () { URL.revokeObjectURL(url) }, 2000)\n  } catch (e) { poner(d2, { aviso: 'No fue posible generar el CSV.' }) }\n}\n\nexport default {\n  css: '*,*::before,*::after{box-sizing:border-box}'\n    + '.app{--cream:rgb(254,251,244);--surf:#fff;--ink:#162b37;--ink2:rgba(22,43,55,.64);--line:#e3ddd2;--acc:var(--a,#FF6C0E);--s1:#9aa5ad;--s2:#2a78d6;--g1:#c0392b;--g2:#e67e22;--g3:#c9b037;--g4:#7cb342;--g5:#2e7d32;display:flex;flex-direction:column;height:100%;width:100%;background:var(--cream);color:var(--ink);font:14px/1.5 \"Open Sans\",system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;overflow:hidden}'\n    + 'button,input,select{font-family:inherit}'\n    + '.hd{flex:none;display:flex;align-items:center;gap:14px;padding:12px 22px;border-bottom:1px solid var(--line);background:var(--surf);flex-wrap:wrap}'\n    + '.brand{display:flex;flex-direction:column;line-height:1.15;flex:none}.brand b{font-size:20px;font-weight:700}.brand span{font-size:12px;color:var(--ink2)}'\n    + '.sp{flex:1 1 auto}'\n    + '.f{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2);flex:none}'\n    + '.f select,.f input{font:inherit;padding:5px 8px;border:1px solid var(--line);border-radius:7px;background:var(--surf);color:var(--ink)}'\n    + '.btn,.nl{flex:none;border:1px solid var(--line);background:var(--surf);border-radius:8px;padding:6px 13px;font-weight:600;font-size:12px;line-height:1;color:var(--ink);cursor:pointer;text-decoration:none}'\n    + '.btn:hover,.nl:hover{border-color:var(--acc);color:var(--acc)}.btn-p{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-p:hover{color:#fff;opacity:.9}'\n    + '.tabs{flex:none;display:flex;gap:4px;padding:8px 22px 0;background:var(--surf);border-bottom:1px solid var(--line)}'\n    + '.tab{border:0;border-bottom:3px solid transparent;background:transparent;padding:8px 14px;font-weight:600;font-size:13px;line-height:1;color:var(--ink2);cursor:pointer}'\n    + '.tab[aria-selected=\"true\"]{color:var(--ink);border-bottom-color:var(--acc)}'\n    + '.tab:focus-visible,.btn:focus-visible,.nl:focus-visible,.tgl:focus-visible{outline:2px solid var(--acc);outline-offset:2px}'\n    + '.body{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 22px 22px}'\n    + '.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}'\n    + '.kpi{background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:14px 16px}'\n    + '.kpi .v{font-size:28px;font-weight:700;color:var(--acc);line-height:1.1}.kpi .l{font-size:12.5px;color:var(--ink);margin-top:4px;font-weight:600}.kpi .n{font-size:11px;color:var(--ink2);margin-top:4px}'\n    + '.mini{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mini .kpi{padding:10px 12px}.mini .kpi .v{font-size:22px}'\n    + '.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px}'\n    + '.card{background:var(--surf);border:1px solid var(--line);border-radius:14px;padding:14px 16px;min-width:0}.card.wide{grid-column:1/-1}'\n    + '.cardhd{display:flex;align-items:baseline;gap:8px}.card h3{margin:0 0 2px;font-size:13.5px;font-weight:700}.card .sub{font-size:11px;color:var(--ink2);margin-bottom:10px}'\n    + '.tgl{margin-left:auto;border:1px solid var(--line);background:transparent;color:var(--ink2);font-weight:600;font-size:11px;line-height:1;cursor:pointer;padding:4px 8px;border-radius:6px}.tgl:hover{color:var(--acc);border-color:var(--acc)}'\n    + '.pv{flex:none;background:#fff6e6;border-bottom:1px solid #f0dcb4;color:#6b4e0e;font-size:12px;padding:7px 22px}'\n    + '.err{background:#fff0ef;border:1px solid rgba(179,38,30,.35);color:#8c1d16;border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:12px}'\n    + '.empty{color:var(--ink2);font-size:12.5px;padding:18px 0;text-align:center}'\n    + '.warn{background:#fff6e6;border:1px solid #f0dcb4;color:#6b4a00;border-radius:10px;padding:10px 14px;margin:0 0 14px;font-size:13px}'\n    + '.load{color:var(--ink2);font-size:13px;padding:30px 0;text-align:center}'\n    + '.bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}'\n    + '.bars li{display:grid;grid-template-columns:minmax(0,170px) 1fr auto;align-items:center;gap:10px}'\n    + '.bl{font-size:12px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}'\n    + '.bt{background:rgba(22,43,55,.07);border-radius:4px;height:14px;overflow:hidden}.bt i{display:block;height:100%;border-radius:0 4px 4px 0;background:var(--s2)}'\n    + '.bv{font-size:12px;font-weight:700;min-width:46px;text-align:right}'\n    + '.cols{display:flex;align-items:flex-end;gap:3px;height:170px}'\n    + '.col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:5px;min-width:0}'\n    + '.stk{flex:1;width:100%;display:flex;flex-direction:column;justify-content:flex-end}.stk i{display:block;width:100%}.stk i:first-child{border-radius:3px 3px 0 0}'\n    + '.col span{font-size:9.5px;color:var(--ink2);height:12px;white-space:nowrap}'\n    + '.s1{background:var(--s1)}.s2{background:var(--s2)}.g1{background:var(--g1)}.g2{background:var(--g2)}.g3{background:var(--g3)}.g4{background:var(--g4)}.g5{background:var(--g5)}'\n    + '.leg{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:14px}.leg li{display:flex;align-items:center;gap:6px;font-size:12px}'\n    + '.dot{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}'\n    + '.dist{display:grid;grid-template-columns:120px 1fr 50px;gap:10px;align-items:center;margin-bottom:8px}.dl{font-size:12px;color:var(--ink2)}.dv{font-size:12px;font-weight:700;text-align:right}'\n    + '.segbar{display:flex;height:20px;border-radius:5px;overflow:hidden;gap:2px;background:rgba(22,43,55,.05)}.segbar i{display:block;height:100%}'\n    + '.tbw{overflow:auto;max-height:420px}.tb{width:100%;border-collapse:collapse;font-size:12.5px}'\n    + '.tb th{text-align:left;color:var(--ink2);font-weight:600;padding:6px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surf)}'\n    + '.tb td{padding:6px;border-bottom:1px solid var(--line);vertical-align:top}.tb td:first-child{overflow-wrap:anywhere;min-width:130px}.tb td:not(:first-child),.tb th{white-space:nowrap}'\n    + '.upd{margin:-16px -22px 12px}.stale .kpis,.stale .grid{opacity:.45}'\n    + '.mut{font-size:11px;color:var(--ink2)}'\n    + '.tag{font-size:10.5px;border-radius:5px;padding:1px 6px;background:#f2ede4;color:var(--ink2)}.tag-v4{background:#dde9f5;color:#1e4a70}'\n    + '.cur,.lag{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;max-height:460px;overflow:auto}'\n    + '.cur>li,.lag>li{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}'\n    + '.ch{display:flex;gap:8px;align-items:flex-start}.nota{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:#fff;font-weight:700;font-size:12px}.nota.n1{background:var(--g1)}.nota.n2{background:var(--g2)}'\n    + '.com{font-size:12.5px;font-style:italic}.ans{white-space:pre-wrap;font-size:12.5px;color:var(--ink2);margin:6px 0}.fl{margin:4px 0 0;padding-left:16px;font-size:12px}.fl a,.tb a{color:#0b57d0}'\n    + 'details summary{cursor:pointer;font-size:12px;color:var(--acc);font-weight:600}'\n    + '@media (max-width:900px){.hd{padding:10px 14px}.body{padding:12px 14px}.grid{grid-template-columns:1fr}.bars li{grid-template-columns:minmax(0,110px) 1fr auto}.upd{margin:-12px -14px 12px}}'\n    + '@media (max-width:600px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{padding:10px 12px}.kpi .v{font-size:22px}.f select,.f input{font-size:16px}.tb-u td:nth-child(5),.tb-u th:nth-child(5){display:none}.tb-t td:nth-child(n+5),.tb-t th:nth-child(n+5){display:none}}',\n\n  render(d2) {\n    const p = d2.state.perfil\n    const f = filtros(d2)\n    const sec = d2.state.seccion || 'uso'\n    const datos = d2.state.datos || {}\n    const carg = d2.state.cargando || {}\n    const errs = d2.state.errSec || {}\n    vida(d2).csv = {}\n    let cuerpo = ''\n    if (d2.state.verificando || !p) cuerpo = d2.state.errPerfil ? '<div class=\"err\">' + esc(d2.state.errPerfil) + ' <button class=\"btn reintentar\">Reintentar</button></div>' : '<div class=\"load\">Verificando acceso…</div>'\n    else if (!p.supervisor) cuerpo = '<div class=\"err\">El panel es exclusivo para supervisores. Si necesita acceso, solicítelo al responsable de Agents Tools.</div>'\n    else if (errs[sec]) cuerpo = '<div class=\"err\">' + esc(errs[sec]) + ' <button class=\"btn recargar\">Reintentar</button></div>'\n    else if (carg[sec] && !datos[sec]) cuerpo = '<div class=\"load\">Calculando métricas del período…</div>'\n    else if (datos[sec]) {\n      const errsSec = arr(datos[sec].errores)\n      const esSup = function (x) { return typeof x === 'string' && x.indexOf('supervisores:') === 0 }\n      const supFalla = errsSec.some(esSup)\n      const fallas = errsSec.filter(function (x) { return x != null && x !== '' && !esSup(x) }).length\n      const totalInd = errsSec.length - (sec === 'uso' ? 1 : 0)\n      cuerpo = (carg[sec] ? '<div class=\"pv upd\">Actualizando…</div>' : '')\n        + (fallas ? '<div class=\"warn\">' + fallas + ' de ' + totalInd + ' indicadores de esta sección no se pudieron calcular; los valores afectados aparecen como \"—\" o vacíos. <button class=\"btn recargar\">Reintentar</button></div>' : '')\n        + (supFalla ? '<div class=\"warn\">No se pudo leer la lista de supervisores: los indicadores de operadores pueden incluirlos. <button class=\"btn recargar\">Reintentar</button></div>' : '')\n        + (sec === 'uso' ? secUso(d2, datos.uso) : sec === 'calidad' ? secCalidad(d2, datos.calidad) : secBase(d2, datos.base))\n    }\n    const filtrosHtml = (p && p.supervisor) ? '<div class=\"f\"><span>Mercado</span><select class=\"selMk\" aria-label=\"Mercado\"><option value=\"\">Todos</option>' + MERCADOS.map(function (c) { return '<option value=\"' + c + '\"' + (c === f.mercado ? ' selected' : '') + '>' + c + ' · ' + NOMBRES[c] + '</option>' }).join('') + '</select></div>'\n      + '<div class=\"f\"><span>De</span><input class=\"inDesde\" type=\"date\" value=\"' + attr(f.desde) + '\" aria-label=\"Desde\"/></div>'\n      + '<div class=\"f\"><span>a</span><input class=\"inHasta\" type=\"date\" value=\"' + attr(f.hasta) + '\" aria-label=\"Hasta\"/></div>'\n      + '<button class=\"btn btn-p recargar\">Actualizar</button>' : ''\n    return '<div class=\"app\" data-ready style=\"--a:' + attr(acento(d2)) + '\">'\n      + '<header class=\"hd\"><div class=\"brand\"><b>NASVI</b><span>Panel del supervisor</span></div><div class=\"sp\"></div>' + filtrosHtml\n      + '<a class=\"nl\" href=\"' + attr(d2.param('copilotoUrl', '/') || '/') + '\">Copiloto</a>'\n      + '<a class=\"nl\" href=\"' + attr(d2.param('wikisUrl', '/upload-wikis') || '/upload-wikis') + '\">Wikis</a>'\n      + '</header>'\n      + (isDemo(d2) ? '<div class=\"pv\">Modo demostración: datos ficticios.</div>' : '')\n      + (d2.state.aviso ? '<div class=\"pv\">' + esc(d2.state.aviso) + '</div>' : '')\n      + ((p && p.supervisor) ? '<nav class=\"tabs\" role=\"tablist\" aria-label=\"Secciones\">' + SECCIONES.map(function (s) { return '<button class=\"tab\" role=\"tab\" data-s=\"' + s[0] + '\" aria-selected=\"' + (s[0] === sec ? 'true' : 'false') + '\">' + s[1] + (carg[s[0]] ? ' …' : '') + '</button>' }).join('') + '</nav>' : '')\n      + '<div class=\"body' + (d2.state.viejo ? ' stale' : '') + '\">' + cuerpo + '</div></div>'\n  },\n\n  mounted(d2) {\n    const v = vida(d2)\n    d2.onUnmount(function () { v.activo = false })\n    if (d2.param('debug') === true) { try { window.__nasviPanelApi = function (payload) { return api(d2, payload) }; window.__nasviPanelD2 = d2 } catch (e) { /* sin ventana */ } }\n    d2.setState({ seccion: 'uso', datos: {}, cargando: {}, errSec: {} })\n    iniciar(d2)\n    d2.on('.tab', 'click', function (e, el) { d2.state.seccion = el.dataset.s })\n    d2.on('.tab', 'keydown', function (e, el) {\n      if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return\n      const ids = SECCIONES.map(function (s) { return s[0] })\n      const i = ids.indexOf(el.dataset.s)\n      d2.state.seccion = ids[(i + (e.key === 'ArrowRight' ? 1 : ids.length - 1)) % ids.length]\n    })\n    d2.on('.selMk', 'change', function (e, el) { d2.state.mercado = el.value; cargar(d2) })\n    d2.on('.inDesde', 'change', function (e, el) { d2.state.desde = el.value })\n    d2.on('.inHasta', 'change', function (e, el) { d2.state.hasta = el.value })\n    d2.on('.recargar', 'click', function () { cargar(d2) })\n    d2.on('.reintentar', 'click', function () { iniciar(d2) })\n    d2.on('.csv', 'click', function (e, el) { descargarCsv(d2, el.dataset.c) })\n  }\n}\n"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}},"demo":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"demo"}}}},"debug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"debug"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}},"copilotoUrl":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"copilotoUrl"}}}},"wikisUrl":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"wikisUrl"}}}}}}}}}},{"_id":"65b2e47896f1fc092ed1ac14","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"3UcTJBMDap5uV1yKV_uLr","package":"natura","definition":{"params":{"actions":[{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__LoggerService"}},"prop":"log","args":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"data"}}}},{}]}}]},"component":"data2-core-flow@Parallel"},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult.0"}}}}]},"component":"data2-core-flow@Series"}}},{"_id":"66c7beb7fe3c9031e537cf88","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"PV4KIz6EZyjdWP2Eb7Laj","package":"natura","definition":{"params":{"order":[{"field":{"params":{"content":"time"},"component":"data2-core-primitives@String"},"order":"asc"}],"array":{"params":{"array":{"params":{"array":{"params":{"array":{"params":{"arrays":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages_1"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages_2"}}}}]},"component":"data2-core-functions@ArrayConcat"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.time"}}}}}}},"component":"data2-core-functions@ArrayFilter"},"field":{"params":{"content":"id"},"component":"data2-core-primitives@String"}},"component":"data2-core-functions@Uniq"},"mapper":{"params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"params":{"sources":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m"}}}},{"time":{"params":{"compare":{"params":{"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.time"}}}}},"component":"data2-core-functions@IsDate"},"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.time"}}}},"else":{"params":{"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.time"}}}}},"component":"data2-core-functions@DateParse"}},"component":"data2-core-flow@If"}}]},"component":"data2-core-functions@ObjectAssign"}},"component":"data2-core-functions@Function"}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-functions@Sort"}}},{"_id":"5ed9bed7b9e0891ce913e884","component":"data2-core-types@Component","params":{"package":"data2-core","component":"DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5f472ae463c680de4ff296e9","component":"data2-core-types@Component","params":{"package":"data2-core","component":"Data2TableDataSource","extends":"data2-core@DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5ecd05ded68ce41360f74b43","component":"data2-core-types@Component","params":{"extendable":{"placeholder":"children"},"component":"Block","package":"data2-core-primitives"}},{"_id":"61045854f302195bad7ea128","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-controls@Spinner","params":{"spinner":{"component":"data2-core-types@Reference","params":{"reference":"spinner"}},"color":{"component":"data2-core-types@Reference","params":{"reference":"super.textColor"}},"width":{"component":"data2-core-types@Reference","params":{"reference":"super.dimensions.width"}},"height":{"component":"data2-core-types@Reference","params":{"reference":"super.dimensions.height"}},"speed":{"component":"data2-core-types@Reference","params":{"reference":"speed"}},"size":{"component":"data2-core-types@Reference","params":{"reference":"super.textSize"}},"margin":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"margin"}},0]}}}}}},"component":"Spinner","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"66bbfea2c30926feb2325b3f","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"xfOwC8rL76iLazntit-k8","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"xfOwC8rL76iLazntit-k8"}}}}}},{"_id":"66bbfea2c30926feb2325b43","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"i61zGq5FNyMUSBWmMtTQu","package":"natura","definition":{"params":{"then":{"params":{"actions":[{"params":{"action":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"agent"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.status"}}}}},"component":"data2-core-comparison-operators@Equal"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"just_send_it"}}},"component":"data2-core-flow@Step"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SIzWg18Pjdvn6fZLcZHG4"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"ticking"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SIzWg18Pjdvn6fZLcZHG4"}},"prop":"start"},"component":"data2-core-types@Interaction"}},"component":"data2-core-flow@If","displayName":"start Chat Sync Timer if not ticking"},{"params":{"then":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.responding"}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"just_send_it"}}}}},"component":"data2-core-logical-operators@Not"}},"component":"data2-core-flow@If","displayName":"responding"},{"params":{"then":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.typing"}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"just_send_it"}}}}},"component":"data2-core-logical-operators@Not"}},"component":"data2-core-flow@If","displayName":"typing"},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}},"component":"data2-core-types@Getter"},"item":{"params":{"index":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}},"component":"data2-core-types@Getter"},"sender":{"component":"data2-core-primitives@String","params":{"content":"HUMAN"}},"time":{"params":{},"component":"data2-core-functions@DateNow"},"text":{"params":{"then":{"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.text"}}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.text"}}}}},"component":"data2-core-flow@If"},"type":{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"defaultCase":{"component":"data2-core-primitives@String","params":{"content":"all"}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.text"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio_url"}}}}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}},"displayName":"text+audio"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.text"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"text"}}},"displayName":"text"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio_url"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"audio"}}},"displayName":"audio"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.image_url"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"image"}}},"displayName":"image"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.video_url"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"video"}}},"displayName":"video"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.document_url"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"document"}}},"displayName":"document"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.button_reply.id"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}}},"displayName":"button_reply"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.list_reply.id"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}},"displayName":"list_reply"}]},"component":"data2-core-flow@Switch"},"button_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.button_reply"}}}},"audio":{"params":{"then":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio"}}}},{"link":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio_url"}}}}}]},"component":"data2-core-logical-operators@Or"},"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.audio_url"}}}}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-flow@If"},"list_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.list_reply"}}}},"document":{"params":{"then":{"filename":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.document_name"}}}},"caption":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.document_name"}}}},"link":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.document_url"}}}}},"compare":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.document_url"}}}}},"component":"data2-core-primitives@Boolean","break":true}},"component":"data2-core-flow@If"},"image":{"params":{"then":{"link":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.image_url"}}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.image_url"}}}}},"component":"data2-core-flow@If"},"video":{"params":{"then":{"link":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.video_url"}}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.video_url"}}}}},"component":"data2-core-flow@If"}},"component":"natura@0uu_dDZSyYUkc5XvKT3n8"}},"component":"data2-core-functions@ArrayPush"}},"component":"data2-core-types@Setter"},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":50}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"},{"params":{"chat_id":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.chatId"}}}},"message":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message"}}}},"country":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"country"}}}},"profile":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"profile"}}}},"playground":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}},"consultant_id":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"consultant_id"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"},"env":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"env"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"},"status":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"status"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"}},"component":"natura@1qvPMT4F3Nh7qm0-LJvJL"},{"params":{"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}},"then":{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"5Pf70mL9_7AEFvIBWV1uH"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult"}}}}}}},"component":"data2-core-flow@If","displayName":"PlaygroundSetters"},{"params":{"then":{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":"refresh"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":"refresh"}}]},"component":"data2-core-flow@Parallel","displayName":"Fetch session and messages"},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"just_send_it"}}}}},"component":"data2-core-logical-operators@Not"}},"component":"data2-core-flow@If","displayName":"update session/messages"},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.typing"}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},{"params":{"actions":{"params":{"array":{"params":{"array":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"params":{"components":[{"params":{"subject":{"params":{"subject":{"params":{"array":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}},"mapper":{"params":{"content":"id"},"component":"data2-core-primitives@String"}},"component":"data2-core-functions@ArrayMap"},"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.id"}}}}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m.sender"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"HUMAN"}}},"component":"data2-core-comparison-operators@Different"}]},"component":"data2-core-logical-operators@And"}}}},"component":"data2-core-functions@ArrayFilter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"body":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}},"component":"data2-core-types@Getter"},"item":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m"}}}}},"component":"data2-core-functions@ArrayPush"}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":400}}},"component":"data2-core-flow@Delay"}]},"component":"data2-core-flow@Series"},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}]}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-flow@Series","displayName":"Merge messages","disabled":false},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":50}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.responding"}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"}]},"component":"data2-core-flow@Series"},"compare":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message"}}}},{"params":{"subject":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.responding"}}},"component":"data2-core-types@Getter"}},"component":"data2-core-logical-operators@Not"},{"params":{"subject":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.typing"}}},"component":"data2-core-types@Getter"}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-flow@If","displayName":"send message if not sending"}}},{"_id":"66cbba00ca6a0c978932a28b","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"mgBbjVh0SaIqDfxHMTF9J","package":"natura","definition":{"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"text"}}}},"button_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}}}},"list_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}}},"audio_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"audio_url"}}}},"image_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"image_url"}}}},"video_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"video_url"}}}},"document_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"document_url"}}}},"document_name":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"document_name"}}}}}}},{"_id":"66cb9f43e0b9a2eaade8f488","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"1qvPMT4F3Nh7qm0-LJvJL","package":"natura","definition":{"params":{"module":{"params":{"then":{"params":{"else":{"params":{"defaultCase":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"hrfpkEcajH1t8HR61CXM2"}},"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"country"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"EC"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ecuador-entrypoint-hml"}}}},{"component":"data2-core-flow@Case","params":{"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"S5Smf36KVnpAgdlXt9xU4"}},"expression":{"component":"data2-core-primitives@String","params":{"content":"CL"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"CO"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"xZ07GjXF6J-UE889zvhNv"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"MX"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"vRtbsuzMqlbWrwKCvjeS6"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"PE"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"gJnyPaWs1JQSQ8CPGfzCO"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"AR"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Y1O0oTlVo3601Jif1BxNB"}}}}]},"component":"data2-core-flow@Switch"},"then":{"params":{"defaultCase":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"W_7c3KvURCeog4RW9kzlh"}},"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"country"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"EC"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ecuador-entrypoint-prod"}}}},{"component":"data2-core-flow@Case","params":{"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"yrzdo5Ewbnp3ZaiLXV2rz"}},"expression":{"component":"data2-core-primitives@String","params":{"content":"CL"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"CO"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"oV37yW1tSod7tpFyqKkxy"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"MX"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"AKlWpcgDjGl6n-TK_j4OY"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"PE"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"fNnAMBBznAO9wvOX5V9Jf"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"AR"}},"value":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"v4LXRPYyAgktlbttvZyTN"}}}}]},"component":"data2-core-flow@Switch"},"compare":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"PRD"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KVEwv-6Lr4cBH_Mc5dlIx"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.env"}}}}},"component":"data2-core-comparison-operators@Equal"}},"component":"data2-core-flow@If"},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-logical-operators@Not"},"else":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"5EWbHP5go2GE71pDtA6k3"}}},"component":"data2-core-flow@If"},"prop":"invoke","args":[{"body":{"message":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message"}}}},"chatid":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_id"}}}},"channel":{"component":"data2-core-primitives@String","params":{"content":"web"}},"country":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"country"}}}},"profile":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"profile"}}}},"env":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"env"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"},"consultant_id":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"consultant_id"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"},"status":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"status"}}}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"data2-core-flow@If"},"playground":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}}}]},"component":"data2-core-types@Interaction","break":true}}},{"_id":"66c8ebc6453ee8e441e71b16","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"0uu_dDZSyYUkc5XvKT3n8","package":"natura","definition":{"index":{"params":{"components":[{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"index"}}}}},"component":"data2-core-primitives@Number","break":true},{"params":{"content":0},"component":"data2-core-primitives@Number"}]},"component":"data2-core-logical-operators@Or"},"sender":{"params":{"expression":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sender"}}}}},"component":"data2-core-functions@toLowerCase"},"defaultCase":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sender"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"assistant"}},"value":{"component":"data2-core-primitives@String","params":{"content":"ASSISTANT"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"bot"}},"value":{"component":"data2-core-primitives@String","params":{"content":"ASSISTANT"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"human"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HUMAN"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"user"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HUMAN"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"agent"}},"value":{"component":"data2-core-primitives@String","params":{"content":"AGENT"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"system"}},"value":{"component":"data2-core-primitives@String","params":{"content":"SYSTEM"}}}}]},"component":"data2-core-flow@Switch"},"time":{"params":{"date":{"params":{"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"time"}}}}},"component":"data2-core-functions@DateParse"}},"component":"data2-core-functions@DateFormat"},"id":{"params":{},"component":"data2-core-id@NanoId"},"assistant":{"params":{"then":{"faq":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant.faq"}}}},"usecase":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant.usecase"}}}}},"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant.usecase"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"assistant.faq"}}}}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-flow@If"},"type":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}},"component":"data2-core-types@Reference"},"text":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"text"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"text"}},{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"audio":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"audio"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"audio"}},{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"image":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"image"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"image"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"video":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"video"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"video"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"interactive":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"interactive"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"interactive"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"document":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"document"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"document"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"sticker":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sticker"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"sticker"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"list_reply":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"button_reply":{"params":{"then":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}}},"component":"data2-core-types@Reference"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"type"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"all"}},{"component":"data2-core-primitives@String","params":{"content":"button_reply"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"},"chat_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_id"}}}},"session":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"session"}}},"component":"data2-core-types@Reference"},"agent":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"agent"}}}},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sender"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"AGENT"}}},"component":"data2-core-comparison-operators@Equal"}},"component":"data2-core-flow@If"},"mime_type":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"mime_type"}}}},"agent_name":{"params":{"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"agent_name"}}}},"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sender"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"AGENT"}}},"component":"data2-core-comparison-operators@Equal"}},"component":"data2-core-flow@If"}},"interactions":{"params":{"fields":{}},"component":"data2-core-types@FieldSet"}}},{"_id":"612009a592425036c3f3e06e","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"params":{"dangerouslySetInnerHTML":{"__html":{"component":"data2-core-types@Reference","params":{"reference":"text"}}}},"component":"html@div"}}},"component":"Html","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"66bbfea2c30926feb2325b3d","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"MxaYmozz2raererEaoBDP","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"MxaYmozz2raererEaoBDP"}}}}}},{"_id":"66bbfea2c30926feb2325b3e","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"KqXzRYJY01a3fy3QQHhzd","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"KqXzRYJY01a3fy3QQHhzd"}}}}}},{"_id":"66cba4a4e0b9a2eaade8f489","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"D3gdCRVit1-oUj9bi8G2J","package":"natura","definition":{"params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"message"}}],"body":{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"op"}},"module":{"op":{"params":{"actions":[{"params":{"message":{"button_reply":{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.type"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}}},"component":"data2-core-comparison-operators@Equal"},"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.button_reply"}}}}},"component":"data2-core-flow@If"},"list_reply":{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.type"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}},"component":"data2-core-comparison-operators@Equal"},"then":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.list_reply"}}}}},"component":"data2-core-flow@If"}},"country":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"country"}}}},"playground":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"playground"}}}}},"component":"natura@i61zGq5FNyMUSBWmMtTQu"}]},"component":"data2-core-flow@Series"}}}}},"component":"data2-core-functions@Function","break":true},"interactions":{"params":{},"component":"data2-core-types@FieldSet"}}},{"_id":"66bbfea2c30926feb2325b40","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"ZUmw1r3fZdD3t9xuf3If5","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"ZUmw1r3fZdD3t9xuf3If5"}}}}}},{"_id":"5f6cb5c4a575399a456635b9","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-controls@DynamicVideo","params":{"children":{"component":"html@source","params":{"src":{"component":"data2-core-types@Reference","params":{"reference":"videoFile"}}}},"muted":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"autoPlay"}},{"component":"data2-core-types@Reference","params":{"reference":"muted"}}]}},"source":{"component":"data2-core-types@Reference","params":{"reference":"videoFile"}},"playsInline":{"component":"data2-core-types@Reference","params":{"reference":"playsInline"}},"chapters":{"component":"data2-core-types@Reference","params":{"reference":"chapters"}},"autoPlay":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Equal","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":"builder"}},"comparisonSubject":true}}],"then":false,"else":{"component":"data2-core-types@Reference","params":{"reference":"autoPlay"}}}},"loop":{"component":"data2-core-types@Reference","params":{"reference":"loop"}},"controls":{"component":"data2-core-types@Reference","params":{"reference":"showControls"}},"poster":{"component":"data2-core-types@Reference","params":{"reference":"poster"}},"style":{"position":"absolute","width":"100%","height":{"params":{"components":[{"params":{"reference":"style.height"},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@String","params":{"content":"100%"}}]},"component":"data2-core-logical-operators@Or"},"border":"none","padding":"none","overflow":"hidden"}}}}},"component":"VideoBlock","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"6436f04bac93122e72906101","component":"data2-core-types@Component","params":{"extends":"data2-core-primitives@Block","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"html@i","params":{"aria-hidden":"true","style":{"display":"flex","justifyContent":"center","alignItems":"center","width":"100%","height":"100%","fontSize":{"params":{"reference":"size"},"component":"data2-core-types@Reference"},"color":{"params":{"compare":[{"params":{"subject":{"params":{"reference":"color"},"component":"data2-core-types@Reference"},"pattern":{"component":"data2-core-primitives@String","params":{"content":"gradient"}}},"component":"data2-core-functions@Includes"}],"else":{"params":{"components":[{"params":{"reference":"color"},"component":"data2-core-types@Reference"},{"params":{"reference":"super.textColor"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"then":{"component":"data2-core-primitives@String","params":{"content":"transparent"}}},"component":"data2-core-flow@If"},"backgroundClip":{"component":"data2-core-primitives@String","params":{"content":"text"}},"WebkitBackgroundClip":{"component":"data2-core-primitives@String","params":{"content":"text"}},"backgroundImage":{"params":{"compare":[{"params":{"subject":{"params":{"reference":"color"},"component":"data2-core-types@Reference"},"pattern":{"component":"data2-core-primitives@String","params":{"content":"gradient"}}},"component":"data2-core-functions@Includes"}],"then":{"params":{"portions":[{"params":{"reference":"color"},"component":"data2-core-types@Reference"}]},"component":"data2-core-functions@StringConcat"},"else":{"component":"data2-core-primitives@String","params":{"content":"linear-gradient(transparent,transparent)"}}},"component":"data2-core-flow@If"},"transition":{"component":"data2-core-primitives@String","params":{"content":"inherit"}}},"className":{"component":"data2-core-types@Reference","params":{"reference":"icon"}}}}}},"component":"IconBlock","package":"data2-blocks"}},{"_id":"5f804e93c8da12be8b498dfa","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"html@textarea","params":{"style":{"width":"100%","height":"100%","resize":"none","boxSizing":"border-box","background":{"params":{"content":"transparent"},"component":"data2-core-primitives@String"},"color":{"params":{"reference":"super.textColor"},"component":"data2-core-types@Reference"},"border":"none","appearance":"none","outline":"none","cursor":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"super.cursor"}}}},{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"disabled","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":true}}],"then":{"component":"data2-core-primitives@String","params":{"content":"not-allowed"}},"else":{"component":"data2-core-primitives@String","params":{"content":"auto"}}}}]},"component":"data2-core-logical-operators@Or"},"fontWeight":{"component":"data2-core-primitives@String","params":{"content":"inherit"}},"paddingLeft":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.left"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.left"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"paddingRight":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.right"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.right"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"paddingTop":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.top"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.top"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"paddingBottom":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.bottom"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.bottom"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"caretColor":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"caretColor"}}},"component":"data2-core-types@Reference"},"--d2-placeholder-color":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"placeholderTextColor"}}},"component":"data2-core-types@Reference"},"textAlign":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"super.textFormat.textAlign"}}},"component":"data2-core-types@Reference"}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset"}},"placeholder":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"placeholder"}},{"component":"data2-core-types@Reference","params":{"reference":"field"}}]}},"value":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type"},"component":"data2-core-types@Reference"},"comparisonSubject":"date"}}],"then":{"component":"data2-core-functions@DateFormat","params":{"date":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record"}}}},"format":"YYYY-MM-DD"}},"else":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record"}}}}}},"onChange":{"component":"data2-core-types@DataLinkSetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}},"recordUpsert":{"component":"data2-core-types@Reference","params":{"reference":"recordUpsert","source":"VIRTUAL_COMPONENT_PARAMS"}},"onChange":{"component":"data2-core-types@Reference","params":{"reference":"onChange","source":"VIRTUAL_COMPONENT_PARAMS"}},"mask":{"component":"data2-core-types@Reference","params":{"reference":"mask","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field"}},"tabIndex":{"component":"data2-core-types@Reference","params":{"reference":"tabIndex"}},"maxLength":{"component":"data2-core-types@Reference","params":{"reference":"maxLength"}},"opacity":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"disabled"},"component":"data2-core-types@Reference"},"comparisonSubject":true}}],"then":0.38,"else":1}},"disabled":{"params":{"reference":"disabled"},"component":"data2-core-types@Reference"},"onFocus":{"component":"data2-core-types@Reference","params":{"reference":"onFocus"}},"onBlur":{"component":"data2-core-types@Reference","params":{"reference":"onBlur"}},"onKeyPress":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"onKeyPress"}}}},"autoCapitalize":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autoCapitalize"}}}},"autoComplete":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Equal","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":"builder"}},"comparisonSubject":true}}],"then":"new-password","else":{"params":{"components":[{"params":{"reference":"autoComplete","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@String","params":{"content":"off"}}]},"component":"data2-core-logical-operators@Or"}}},"spellCheck":{"params":{"expression":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"spellCheck"}}},"component":"data2-core-types@Reference"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"value":{"component":"data2-core-primitives@String","params":{"content":"true"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"value":{"component":"data2-core-primitives@String","params":{"content":"false"}}}}]},"component":"data2-core-flow@Switch"},"lang":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"lang"}}}}}}}},"component":"DataTextBlock","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"66ca2dd68318d44411523436","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"InPHLD4CdeHylV8_L893H","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"InPHLD4CdeHylV8_L893H"}}}}}},{"_id":"66d63e51fecfdcab14cbb5d7","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"1e-jYsMDVckiMpJ8ulAkg","package":"natura","definition":{"params":{"values":[{"params":{"components":[{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__DeviceController"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"width"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-logical-operators@Or"},{"component":"data2-core-primitives@Number","params":{"content":120}}]},"component":"data2-core-numerical-operators@Subtract"},{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}}},{"component":"data2-core-primitives@Number","params":{"content":600}}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-functions@Min"}}},{"_id":"66ca2f9827ad5b77b385d878","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"CvZ9buda4heOH4jqJBmmL","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"CvZ9buda4heOH4jqJBmmL"}}}}}},{"_id":"66ca4162fb1da783a5b1746b","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"sGiXeS4hM_1ZawC7V5hjV","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"sGiXeS4hM_1ZawC7V5hjV"}}}}}},{"_id":"66ca356e3645d1e2ff61e220","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"_5lcp8gzqEPoJxDM9VEqD","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"_5lcp8gzqEPoJxDM9VEqD"}}}}}},{"_id":"66ca734d512e2d5c7ea7fc49","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"4d6BHCOvnNUbWuG-iAJZ6","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"4d6BHCOvnNUbWuG-iAJZ6"}}}}}},{"_id":"66ca44e065658c20356d6a4c","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"60F9b8bwpe03SHMV_Km48","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"60F9b8bwpe03SHMV_Km48"}}}}}},{"_id":"66ca4ba2fb1dd739d291f5b8","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"pFdnYCTKKzc4erqYi_oWg","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"pFdnYCTKKzc4erqYi_oWg"}}}}}},{"_id":"66ca4ef6bf7022ac8eb3c62b","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"Uhxo3DgcwCS3kuaPIXxqC","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Uhxo3DgcwCS3kuaPIXxqC"}}}}}},{"_id":"66ca54315ee05cdf2fb1a1b5","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"ful7iBCStxIa7KTvwd6Kr","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"ful7iBCStxIa7KTvwd6Kr"}}}}}},{"_id":"63cad59c55ade32bcad59361","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-controls@MarkdownViewer","params":{"markdown":{"params":{"reference":"markdown"},"component":"data2-core-types@Reference"},"removeDefaultPadding":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"removeDefaultPadding"}}}}}}}},"component":"MarkdownViewer","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"66bc073d1343c1ba3fea40f6","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"component":"7HixitXSKJU54CCc5pv7r","package":"natura","definition":{"params":{"needle":{"params":{"pattern":"[^\\[|(](https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*))","flags":"gm"},"component":"data2-core-types@Regex"},"patch":{"component":"data2-core-primitives@String","params":{"content":"[$1]($1)"}},"haystack":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"string"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Replace"}}},{"_id":"5f51018da575399a457b2721","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparison-operators@Identical","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":"repeat"}},"comparisonSubject":"no-repeat"}}],"else":{"component":"html@div","params":{"style":{"backgroundImage":{"component":"data2-core-functions@StringConcat","params":{"portions":["url(",{"component":"data2-core-types@Reference","params":{"reference":"src"}},")"]}},"backgroundSize":{"component":"data2-core-types@Reference","params":{"reference":"size"}},"backgroundPositionX":{"component":"data2-core-types@Reference","params":{"reference":"positionX"}},"backgroundPositionY":{"component":"data2-core-types@Reference","params":{"reference":"positionY"}},"backgroundRepeat":{"component":"data2-core-types@Reference","params":{"reference":"repeat"}},"position":"relative","width":"100%","height":"100%","border":"none","padding":"none","overflow":"hidden"}}},"then":{"component":"html@img","params":{"src":{"component":"data2-core-types@Reference","params":{"reference":"src"}},"alt":{"component":"data2-core-types@Reference","params":{"reference":"src"}},"width":"100%","height":"100%","loading":"lazy","style":{"objectFit":{"params":{"defaultCase":"none","cases":[{"component":"data2-core-flow@Case","params":{"expression":"cover","value":{"component":"data2-core-types@Reference","params":{"reference":"size"}}}},{"component":"data2-core-flow@Case","params":{"expression":"contain","value":{"component":"data2-core-types@Reference","params":{"reference":"size"}}}},{"component":"data2-core-flow@Case","params":{"expression":"100%","value":"cover"}}],"expression":{"component":"data2-core-types@Reference","params":{"reference":"size"}}},"component":"data2-core-flow@Switch"},"objectPosition":{"component":"data2-core-functions@StringConcat","params":{"portions":[{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"positionX"}},"left"]}}," ",{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"positionY"}},"top"]}}]}},"display":{"component":"data2-core-primitives@String","params":{"content":"block"}}}}}}}}},"component":"ImageBlock","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"61438422fca3809432310874","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"html@a","params":{"rel":"noopener noreferrer","style":{"width":"100%","height":"100%","boxSizing":"border-box","color":{"params":{"reference":"super.textColor"},"component":"data2-core-types@Reference"},"border":"none","appearance":"none","outline":"none","cursor":"pointer","display":"flex","alignItems":"center","justifyContent":"center","position":"relative","textDecoration":"none"},"children":{"component":"html@span","params":{"style":{"width":"100%","display":"inline-block","position":"relative","whiteSpace":"pre-wrap","top":{"params":{"reference":"super.textFormat.top"},"component":"data2-core-types@Reference"},"left":{"params":{"reference":"super.textFormat.left"},"component":"data2-core-types@Reference"},"transform":{"params":{"reference":"super.textFormat.transform"},"component":"data2-core-types@Reference"},"lineHeight":{"params":{"reference":"super.textFormat.lineHeight"},"component":"data2-core-types@Reference"},"letterSpacing":{"params":{"reference":"super.textFormat.letterSpacing"},"component":"data2-core-types@Reference"},"textAlign":{"params":{"reference":"super.textFormat.textAlign"},"component":"data2-core-types@Reference"}},"children":{"params":{"reference":"label"},"component":"data2-core-types@Reference"}}},"href":{"params":{"reference":"link"},"component":"data2-core-types@Reference"},"target":{"params":{"reference":"target"},"component":"data2-core-types@Reference"}}}}},"component":"LinkBlock","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"66ca569f1852a41cd76fd3e0","component":"data2-core-types@Component","system":"645b823726c1280637133f0e","params":{"extends":"data2-core-primitives@Block","package":"natura","component":"W91G0wzfPVTbdGGeJho3k","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"W91G0wzfPVTbdGGeJho3k"}}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"component":"data2-core-flow@If","displayName":"management exception never picks the system","params":{"compare":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-logical-operators@Not","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}}}]}},"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"system":{"component":"data2-core-primitives@String","params":{"content":"63611bdff62ab6060b8396ac"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-10-14T16:52:02.312Z","updateMetadata":{"updatedBy":{"user":"5f1609be1ca96def427e1559"}}},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"66d3db81a3f4d4d5a1adbfe9","component":"data2-interface-services@Timer","reference":"SIzWg18Pjdvn6fZLcZHG4","system":"645b823726c1280637133f0e","params":{"interval":{"component":"data2-core-primitives@Number","params":{"content":12000}},"onTickBackup":{"params":{"actions":[{"params":{"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Skip sync because it is already responding"}},"code":{"component":"data2-core-primitives@Number","params":{"content":400}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.responding"}}}}},"component":"data2-core-flow@If"},{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":"refresh"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":"refresh"}}]},"component":"data2-core-flow@Parallel","displayName":"Fetch session and messages"},{"params":{"actions":[{"params":{"actions":[{"params":{"action":{"params":{"array":{"params":{"messages_1":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}},"messages_2":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}},"component":"natura@PV4KIz6EZyjdWP2Eb7Laj"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m._id"}}}}}}},"component":"data2-core-functions@ArrayFilter"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"next_messages"}}},"component":"data2-core-flow@Step"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages.length"}}}},"comparisonSubject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}}},"component":"data2-core-comparison-operators@EqualOrGreaterThan"},"then":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"},"else":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"}},"component":"data2-core-flow@If","displayName":"merge messages if new message"}]},"component":"data2-core-flow@Series","displayName":"merge messages"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.status"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"queue"}}},"component":"data2-core-comparison-operators@Equal"},"then":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"PqjPbzpg-bFvxXV9qSA8T"}},"prop":"invoke","args":[{"body":{"chat_id":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.chat_id"}}}}}}]},"component":"data2-core-types@Interaction","disabled":false}},"component":"data2-core-flow@If","displayName":"ping if queue"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series"},"onTick":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"lTQRb152dXh5ddifgEM_J"}},"prop":"connect"}}}},{"_id":"66fc6d8915f9e8caddf5993e","component":"data2-rush@HTTPListener","reference":"PqjPbzpg-bFvxXV9qSA8T","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6abb1279aadaed05bc3175a7"},{"_id":"6a96f55c1de5742e6b0aad69","component":"data2-rush@HTTPListener","reference":"5EWbHP5go2GE71pDtA6k3","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6abb1279aadaed05bc3175a7"},{"_id":"68e86a6d65a88348be5d5c02","component":"data2-rush@HTTPListener","reference":"v4LXRPYyAgktlbttvZyTN","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e86a6d65a88348be5d5c00","component":"data2-rush@HTTPListener","reference":"fNnAMBBznAO9wvOX5V9Jf","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e86a6d65a88348be5d5bfe","component":"data2-rush@HTTPListener","reference":"AKlWpcgDjGl6n-TK_j4OY","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e86a6d65a88348be5d5bff","component":"data2-rush@HTTPListener","reference":"oV37yW1tSod7tpFyqKkxy","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e86a6d65a88348be5d5bfd","component":"data2-rush@HTTPListener","reference":"yrzdo5Ewbnp3ZaiLXV2rz","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"66b3a27020eac162e1908dd8","component":"data2-rush@HTTPListener","reference":"ecuador-entrypoint-prod","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e86a6d65a88348be5d5c01","component":"data2-rush@HTTPListener","reference":"W_7c3KvURCeog4RW9kzlh","system":"645b823726c1280637133f0e","params":{},"versioning":"enabled","bundleId":"6ac941a8edc6767b321cd52c"},{"_id":"68e3c0ef9604ba32c7dee8e7","component":"data2-rush@HTTPListener","reference":"Y1O0oTlVo3601Jif1BxNB","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"68b90a5483a081944e4262ea","component":"data2-rush@HTTPListener","reference":"gJnyPaWs1JQSQ8CPGfzCO","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"68b9048e83a081944e4262e2","component":"data2-rush@HTTPListener","reference":"vRtbsuzMqlbWrwKCvjeS6","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"68b904ae83a081944e4262e6","component":"data2-rush@HTTPListener","reference":"xZ07GjXF6J-UE889zvhNv","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"68b8c02b83a081944e4262de","component":"data2-rush@HTTPListener","reference":"S5Smf36KVnpAgdlXt9xU4","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"66b3a25720eac162e1908dd4","component":"data2-rush@HTTPListener","reference":"ecuador-entrypoint-hml","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"68b9a282bd8a7de1fc59e0fd","component":"data2-rush@HTTPListener","reference":"hrfpkEcajH1t8HR61CXM2","system":"645b823726c1280637133f0e","params":{},"versioning":"disabled","bundleId":null},{"_id":"66de16dc6dfc2aedc01f4206","component":"data2-interface-services@VoiceRecorderService","reference":"VowdlGfa4t188GpvchEa4","system":"645b823726c1280637133f0e","params":{"mimeType":{"component":"data2-core-primitives@String","params":{"content":"audio/mp3"}}}},{"_id":"66ca660f512e2d5c7ea7fc47","component":"data2-interface-services@DialogsService","reference":"8eqagR6PXRH82k8558IZQ","system":"645b823726c1280637133f0e","params":{"confirmArtboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"},"alertArtboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"},"promptArtboard":{"params":{"preventEvaluation":true,"reference":"kTHK5xVZ5mqLuWCnESN8f"},"component":"data2-core-types@ArtboardReference"}}}]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"66bf9d7a49ab250f6ebb636c","component":"data2-core-primitives@Router","system":"645b823726c1280637133f0e","displayName":"Chatroom Router","params":{"initialPath":{"component":"data2-core-primitives@String","params":{"content":"/"}},"splash":{"disabled":false,"component":"data2-core-types@ArtboardReference","params":{"reference":"lLwpK8Okf3TnEvvuRbtDY"}},"routes":[{"component":"data2-core-primitives@Route","params":{"path":{"component":"data2-core-primitives@String","params":{"content":"/maia-chile"}},"content":{"disabled":false,"component":"data2-core-types@ArtboardReference","params":{"reference":"q3luBwzjVZH0tBEs3LvjR"}},"onEnter":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":"open","args":[{"params":{"string":{"component":"data2-core-primitives@String","params":{"content":"https://maia-peru.natura-x-app.data2.app/?c=chile&sso_token={{sso_token}}"}},"data":{"sso_token":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.sso_token"}}}}}},"component":"data2-core-functions@Template"},"_self"]}},"name":{"component":"data2-core-primitives@String","params":{"content":"Maia Chile"}}}},{"component":"data2-core-primitives@Route","params":{"path":{"component":"data2-core-primitives@String","params":{"content":"/maia-brasil"}},"content":{"disabled":false,"component":"data2-core-types@ArtboardReference","params":{"reference":"Vf-r2V4V5_inDcI3JXatT"}},"name":{"component":"data2-core-primitives@String","params":{"content":"Maia Brasil"}},"onEnter":{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__LoggerService"}},"prop":"log","args":[{"component":"data2-core-primitives@String","params":{"content":"TESTE TESTE"}}]}},{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":"open","args":[{"params":{"string":{"params":{"then":{"component":"data2-core-primitives@String","params":{"content":"https://maia-brasil-hml.natura-x-app.data2.app/?c={{cookie}}&channel={{channel}}&profile={{profile}}"}},"compare":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"HML"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KVEwv-6Lr4cBH_Mc5dlIx"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.env"}}}}},"component":"data2-core-comparison-operators@Equal"},"else":{"component":"data2-core-primitives@String","params":{"content":"https://maia-brasil.natura-x-app.data2.app/?c={{cookie}}&channel={{channel}}&profile={{profile}}"}}},"component":"data2-core-flow@If"},"data":{"cookie":{"component":"data2-core-types@Getter","params":{"args":[{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.authorization"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.Authorization"}}}}]},"component":"data2-core-logical-operators@Or"}],"prop":{"component":"data2-core-primitives@String","params":{"content":"encodeURIComponent"}},"module":{"params":{},"component":"data2-core-web@Window"}}},"profile":{"component":"data2-core-types@Getter","params":{"args":[{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.profile"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.Profile"}}}}]},"component":"data2-core-logical-operators@Or"}],"prop":{"component":"data2-core-primitives@String","params":{"content":"encodeURIComponent"}},"module":{"params":{},"component":"data2-core-web@Window"}}},"channel":{"component":"data2-core-types@Getter","params":{"args":[{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.channel"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.channel"}}}}]},"component":"data2-core-logical-operators@Or"}],"prop":{"component":"data2-core-primitives@String","params":{"content":"encodeURIComponent"}},"module":{"params":{},"component":"data2-core-web@Window"}}}}},"component":"data2-core-functions@Template"},"_self"]}}]},"component":"data2-core-flow@Series"}}},{"component":"data2-core-primitives@Route","params":{"path":{"component":"data2-core-primitives@String","params":{"content":"/maia-colombia"}},"content":{"disabled":false,"component":"data2-core-types@ArtboardReference","params":{"reference":"q3luBwzjVZH0tBEs3LvjR"}},"onEnter":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":"open","args":[{"params":{"string":{"component":"data2-core-primitives@String","params":{"content":"https://maia-peru.natura-x-app.data2.app/?c=colombia&sso_token={{sso_token}}"}},"data":{"sso_token":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.sso_token"}}}}}},"component":"data2-core-functions@Template"},"_self"]}},"name":{"component":"data2-core-primitives@String","params":{"content":"Maia Chile"}}}},{"component":"data2-core-primitives@Route","params":{"path":{"component":"data2-core-primitives@String","params":{"content":"/:region?"}},"content":{"disabled":false,"component":"data2-core-types@ArtboardReference","params":{"reference":"3FrpjA_rKZV2wcc6DTUhF"}},"onEnter":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.initializing"}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}}},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.chatId"}},"value":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.c"}}}},{"params":{},"component":"data2-core-id@NanoId"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":"filter","args":[{"chat_id":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.chatId"}}}}}]}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}}},"component":"data2-core-flow@AwaitReady"},{"params":{"compare":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SIzWg18Pjdvn6fZLcZHG4"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"ticking"}}}}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@And"},"then":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SIzWg18Pjdvn6fZLcZHG4"}},"prop":"start"},"component":"data2-core-types@Interaction"},"else":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SIzWg18Pjdvn6fZLcZHG4"}},"prop":"start"},"component":"data2-core-types@Interaction"}},"component":"data2-core-flow@If"},{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"lTQRb152dXh5ddifgEM_J"}},"prop":"connect"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"lTQRb152dXh5ddifgEM_J"}},"prop":"subscribe","args":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.chatId"}}}}]}}]},"component":"data2-core-flow@Series"},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}},[]]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.initializing"}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}]},"component":"data2-core-flow@Series"}}}]},"reference":"KnPj5Fr1tVVBgBROTvxAY"},{"_id":"66bbfea2c30926feb2325b83","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"Chatroom Artboard","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":583,"height":768,"exactWidth":583.2900000000001,"exactHeight":768}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"alternativeArtboards":{"params":{},"component":"data2-core-types@ResponsiveArtboards"}},"index":204,"reference":"3FrpjA_rKZV2wcc6DTUhF"},{"_id":"681bb44aaf0a5fdd2b6bd108","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"Portal de Atencion - Maia Chile","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":410,"reference":"q3luBwzjVZH0tBEs3LvjR"},{"_id":"681290cc8f0e9976b2f6b389","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"Portal de Atencion - Maia Brasil","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":407,"reference":"Vf-r2V4V5_inDcI3JXatT"},{"_id":"66bf9d1b49ab250f6ebb6369","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"Chatroom Splash","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":508,"height":407,"exactWidth":507.95,"exactHeight":407.43}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(245,243,239,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":219,"reference":"lLwpK8Okf3TnEvvuRbtDY"},{"_id":"66bbfea2c30926feb2325b84","parent":"66bbfea2c30926feb2325b83","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":583,"height":768,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"top":true,"left":true,"bottom":true,"growV":false,"right":true,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"H9mQZG5ZNTe9YCF9rt1KA"}}}},{"_id":"66c7c161fe3c9031e537cf8a","parent":"66bbfea2c30926feb2325b83","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":583,"height":768,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":2,"exactX":0,"exactY":2.33,"top":true,"left":true,"bottom":true,"growV":false,"right":true,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"SNki_auU1wZ2TqeJWIEba"}},"hide":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.initializing"}}}}},"component":"data2-core-logical-operators@Not"},"opacity":{"params":{"compare":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"builder"}}},"component":"data2-core-types@Reference"},"else":{"disabled":false,"component":"data2-core-types@Opacity","params":{}},"then":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":0}}},"component":"data2-core-flow@If"}}},{"_id":"66bf9d1b49ab250f6ebb636a","parent":"66bf9d1b49ab250f6ebb6369","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.3)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.49)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.15)"}},"offset":"100%"}}],"angle":235}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"QC1yDqsr3541Xhjo47S7I"}},"skipServerSideProcessing":true,"size":"contain","positionX":"center","positionY":"center","repeat":"no-repeat"},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":false},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":175,"height":95,"exactWidth":174.51,"exactHeight":95.31}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":167,"y":156,"exactX":false,"exactY":false,"left":false,"top":false,"bottom":false,"growV":false}}},"index":0},{"_id":"66bf9d1b49ab250f6ebb636b","parent":"66bf9d1b49ab250f6ebb6369","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":321,"height":52,"exactWidth":320.52}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":94,"y":299,"exactX":false,"exactY":false}},"text":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SessionsDataSet"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"interactionError.message"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SessionsDataSet"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"interactionError"}}}}]},"component":"data2-core-logical-operators@Or"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(243,63,63,1)"}}}},{"_id":"66bbfea2c30926feb2325b47","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":" chatroom","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":708,"exactWidth":421,"exactHeight":708}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,1)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,1)"}},"offset":"97%"}}]}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background","break":false}]},"component":"data2-core-types@Fill","break":false,"disabled":false},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}},"componentStates":[]},"index":199,"reference":"H9mQZG5ZNTe9YCF9rt1KA"},{"_id":"66bf9d1b49ab250f6ebb6367","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"Chatroom GlobalLoading","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":508,"height":407,"exactWidth":507.95,"exactHeight":407.43}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(246,190,0,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":217,"reference":"SNki_auU1wZ2TqeJWIEba"},{"_id":"66bbfea2c30926feb2325b48","parent":"66bbfea2c30926feb2325b47","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"main-container","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":708,"exactWidth":420.65,"exactHeight":707.67}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"bottom":true,"left":true,"top":true,"growV":false,"right":true,"growH":false,"fixed":false}},"scroll":{"disabled":false,"component":"data2-core-types@Scroll","params":{"y":false}},"childrenMode":"reversed-rows","fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(245,243,239,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(241,235,226,1)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(241,235,226,1)"}},"offset":"42%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(241,235,226,1)"}},"offset":"83%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(241,235,226,1)"}},"offset":"100%"}}],"angle":140}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"font":{"disabled":false,"component":"data2-core-web@GoogleFont","params":{"fontFamily":"Poppins"}}}},{"_id":"66bf9d1b49ab250f6ebb6368","parent":"66bf9d1b49ab250f6ebb6367","component":"data2-blocks@Spinner","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":45,"height":53,"exactWidth":44.67,"exactHeight":52.83}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":232,"y":177,"exactX":false,"exactY":false}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"spinner":"Puff"}},{"_id":"66bbfea2c30926feb2325b5f","parent":"66bbfea2c30926feb2325b48","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"background","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"yWkGb2GDnsXfflMKMbfGK"}},"skipServerSideProcessing":true,"positionX":"center","positionY":"center","repeat":"repeat"},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":708,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"top":true,"left":true,"bottom":true,"growV":false,"right":true,"growH":false}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":6}},"filter":[{"component":"data2-core-types@BitmapFilter","params":{"type":"invert","unit":"%","value":100}}]},"index":1},{"_id":"66bbfea2c30926feb2325b49","parent":"66bbfea2c30926feb2325b48","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messages-main","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"exactWidth":421,"exactHeight":false,"height":{"params":{"components":[{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"height"}}}},{"params":{"compare":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"builder"}}}},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"isPlaying"}}}}},"component":"data2-core-logical-operators@Not"}],"else":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__DeviceController"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"height"}}}},"then":{"params":{"content":"685"},"component":"data2-core-primitives@Number"}},"component":"data2-core-flow@If"}]},"component":"data2-core-logical-operators@Or"},{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"height"}},"module":{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"getBoundingClientRect"},"break":false},"module":{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"querySelector"}},"args":[{"component":"data2-core-primitives@String","params":{"content":"#bottombar"}}],"module":{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"document"}},"module":{"params":{},"component":"data2-core-web@Window"}}}}}}},"observe_fix_scroll":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.observe_fix_scroll"}}}}}},{"component":"data2-core-primitives@Number","params":{"content":62}}]},"component":"data2-core-numerical-operators@Subtract"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"exactX":0,"exactY":67,"bottom":false,"left":true,"top":true,"growV":false,"right":true,"growH":false,"fixed":false,"y":67}},"scroll":{"disabled":false,"component":"data2-core-types@Scroll","params":{"y":true,"hideScrollBar":false}},"childrenMode":"reversed-rows","fill":{"disabled":true,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(24,0,255,0.2)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"children":{"locked":true},"id":{"component":"data2-core-primitives@String","params":{"content":"d2_chatroom"}}},"index":2},{"_id":"66bbfea2c30926feb2325b5d","parent":"66bbfea2c30926feb2325b48","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"},"disabled":true},"gradient":{"disabled":false,"component":"data2-core-types@ColorGradient","params":{"angle":{"component":"data2-core-primitives@Number","params":{"content":180}},"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(222,222,222,0.53)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(225,225,225,0.1)"}},"offset":"31%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(235,235,235,0)"}},"offset":"80%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0)"}},"offset":"100%"}}]},"break":true},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background","break":true}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":103,"exactWidth":421,"exactHeight":103.02}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":62,"exactX":0,"exactY":62,"left":true,"top":true,"right":true,"growH":false}},"ignoreMouseEvents":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":3},{"_id":"66bbfea2c30926feb2325b59","parent":"66bbfea2c30926feb2325b48","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"topBar","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":62,"exactWidth":421,"exactHeight":62}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"left":true,"top":true,"right":true,"growH":false,"fixed":false,"bottom":false}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":4},{"_id":"66bbfea2c30926feb2325b5e","parent":"66bbfea2c30926feb2325b48","component":"natura@xfOwC8rL76iLazntit-k8","system":"645b823726c1280637133f0e","displayName":"BottomBar","params":{"super":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"exactWidth":false,"exactHeight":false,"growHeightWithContent":false,"minHeight":92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":-2,"y":0,"exactX":-2.12,"exactY":0,"fixed":false,"top":true,"left":true,"right":true,"growH":false,"bottom":false}},"childrenMode":"rows","id":{"component":"data2-core-primitives@String","params":{"content":"bottombar"}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"outset","spread":"2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(209,209,209,0.08)"}},"blur":"4"}}],"opacity":{"disabled":true,"component":"data2-core-types@Opacity","params":{"value":100}}},"dataset":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"},"break":false},"field":{"params":{"content":"data.input"},"component":"data2-core-primitives@String"},"hide_mic":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"messageSend":{"params":{"actions":[{"params":{"action":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}}},"resultName":{"component":"data2-core-primitives@String","params":{"content":"text"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"audio_url"}},"action":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}},"component":"data2-core-types@Getter"}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"attachment"}},"action":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment"}}},"component":"data2-core-types@Getter"}},"component":"data2-core-flow@Step"},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":10}}},"component":"data2-core-flow@Delay"},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}},"value":{"component":"data2-core-primitives@String","params":{"content":""}}},"disabled":false},{"component":"data2-core-types@Setter","params":{"value":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}},"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}},"value":{"params":{},"component":"data2-core-primitives@Null"}},"component":"data2-core-types@Setter"},{"component":"data2-core-types@Setter","params":{"value":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment_state"}},"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment"}},"value":{"params":{},"component":"data2-core-primitives@Null"}},"component":"data2-core-types@Setter"},{"params":{"action":{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"text"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"params":{"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"text"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"text"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"audio_url"}}}}},"component":"data2-core-primitives@Boolean","break":true},"value":{"params":{"audio_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"audio_url"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"audio recording"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"image/png"}},{"component":"data2-core-primitives@String","params":{"content":"image/jpg"}},{"component":"data2-core-primitives@String","params":{"content":"image/jpeg"}}],"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.contentType"}}}}},"component":"data2-core-functions@Includes"},"value":{"params":{"image_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.fileUrl"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"images"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"video/mp4"}}],"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.contentType"}}}}},"component":"data2-core-functions@Includes"},"value":{"params":{"video_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.fileUrl"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"videos"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"audio/mp3"}},{"component":"data2-core-primitives@String","params":{"content":"audio/ogg"}},{"component":"data2-core-primitives@String","params":{"content":"audio/oga"}}],"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.contentType"}}}}},"component":"data2-core-functions@Includes"},"value":{"params":{"audio_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.fileUrl"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"audio"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"application/pdf"}}],"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.contentType"}}}}},"component":"data2-core-functions@Includes"},"value":{"params":{"document_url":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.fileUrl"}}}},"document_name":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"attachment.name"}}}}},"component":"natura@mgBbjVh0SaIqDfxHMTF9J"}},"displayName":"documents"}]},"component":"data2-core-flow@Switch"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"message_body"}}},"component":"data2-core-flow@Step"},{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"CountryBeforeComp"}},"data":{"0":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.country"}}}},"1":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.region"}}}},"2":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.country"}}}}}},"component":"natura@3UcTJBMDap5uV1yKV_uLr","disabled":true},{"params":{"message":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message_body"}}}},"country":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.country"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.country"}}}},{"params":{"then":{"params":{"expression":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.region"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"AG"}},"value":{"component":"data2-core-primitives@String","params":{"content":"AR"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"PE"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PE"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"CL"}},"value":{"component":"data2-core-primitives@String","params":{"content":"CL"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"EC"}},"value":{"component":"data2-core-primitives@String","params":{"content":"EC"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"CO"}},"value":{"component":"data2-core-primitives@String","params":{"content":"CO"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"MX"}},"value":{"component":"data2-core-primitives@String","params":{"content":"MX"}}}}]},"component":"data2-core-flow@Switch"},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.region"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-logical-operators@Or"}},"component":"natura@i61zGq5FNyMUSBWmMtTQu","disabled":false}]},"component":"data2-core-flow@Series"},"resetChat":{"params":{"then":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":"open","args":[{"component":"data2-core-primitives@String","params":{"content":"/"}},"_self"]},"component":"data2-core-types@Interaction"},"compare":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"completed"}},{"component":"data2-core-primitives@String","params":{"content":"cancelled"}}],"pattern":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.status"}}}}},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"}},"index":5},{"_id":"66bbfea2c30926feb2325b60","parent":"66bbfea2c30926feb2325b48","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Empty State Message","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"20"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":383,"height":99,"exactWidth":382.67999999999995,"exactHeight":98.59}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":36,"y":83,"exactX":35.849999999999994,"exactY":82.57000000000001,"top":true,"left":true,"right":true,"growH":false}},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"600"}}],"ignoreMouseEvents":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"preventUserSelection":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages.length"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}}]},"component":"data2-core-logical-operators@Or"}},"index":6},{"_id":"66bbfea2c30926feb2325b4a","parent":"66bbfea2c30926feb2325b49","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"repeaterContainer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":584,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"0","exactX":false,"exactY":false,"bottom":false,"left":true,"top":true,"growV":false,"right":true,"growH":false,"fixed":false}},"scroll":{"disabled":true,"component":"data2-core-types@Scroll","params":{"y":true,"hideScrollBar":true}},"childrenMode":"rows"},"index":0},{"_id":"66bbfea2c30926feb2325b5a","parent":"66bbfea2c30926feb2325b59","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"},"disabled":false},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(235,102,25,1)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(235,102,25,1)"}},"offset":"100%"}}],"angle":180}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":62,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":0,"exactY":0,"top":true,"left":true,"right":true,"growH":false,"bottom":true,"growV":false}},"ignoreMouseEvents":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"width":{"bottom":"1"},"color":"#c9c9c9"}}},"index":0},{"_id":"66bbfea2c30926feb2325b61","parent":"66bbfea2c30926feb2325b60","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Message Container","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#d4d3fd","radius":{"leftTop":"6"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":235,"height":77,"exactWidth":234.77,"exactHeight":76.83000000000001,"growHeightWithContent":true}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":74,"y":11,"exactX":false,"exactY":false,"left":false,"top":true,"right":false,"growH":false}},"text":"","ignoreMouseEvents":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"preventUserSelection":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(4,4,4,1)"}},"backdropFilter":[{"component":"data2-core-types@BitmapFilter","params":{"type":"blur","unit":"px","value":0}}],"shadow":[{"component":"data2-core-types@Shadow","params":{"offsetY":"2","blur":"2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.15)"}}}}]}},{"_id":"66bbfea2c30926feb2325b4b","parent":"66bbfea2c30926feb2325b4a","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageRepeater","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,0,0,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":584,"exactWidth":421,"exactHeight":584,"growHeightWithContent":true}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"bottom":true,"left":true,"top":true,"growV":false,"right":true,"growH":false,"fixed":false}},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"message"}},"childrenMode":"rows","scroll":{"disabled":true,"component":"data2-core-types@Scroll","params":{"y":true}},"repeat":{"params":{"array":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}]},"component":"data2-core-logical-operators@Or"},"order":[{"field":{"component":"data2-core-primitives@String","params":{"content":"index"}},"order":"asc"}]},"component":"data2-core-functions@Sort"},"shadow":[]},"index":1},{"_id":"66bbfea2c30926feb2325b58","parent":"66bbfea2c30926feb2325b4a","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageBorder","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":10,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"left":true,"top":true,"right":true,"growH":false,"fixed":false}},"id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"index":3},{"_id":"66bbfea2c30926feb2325b5b","parent":"66bbfea2c30926feb2325b5a","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.3)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.49)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.15)"}},"offset":"100%"}}],"angle":235}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"_hjXeL_Hd_1rDAhkoBPo4"}},"skipServerSideProcessing":true,"size":"cover","positionX":"center","positionY":"center","repeat":"no-repeat"},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":false},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":41.78,"exactHeight":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":10,"y":10,"exactX":10.42,"exactY":10,"left":true,"top":false,"bottom":false,"growV":false}},"onVisibleOnScreen":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.observe_fix_scroll"}},"value":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-types@Setter"},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"radius":{"leftTop":"42"}}},"onClick":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"imprimir mensajes"}},"data":{"key":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages"}}}},"store":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}}},"component":"natura@3UcTJBMDap5uV1yKV_uLr"}},"index":0},{"_id":"66bbfea2c30926feb2325b5c","parent":"66bbfea2c30926feb2325b5a","component":"data2-blocks@Html","system":"645b823726c1280637133f0e","displayName":"CSS","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":60,"height":16,"exactWidth":59.870000000000005,"exactHeight":15.97}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":361,"y":0,"exactX":361.13,"exactY":0}}},"text":{"component":"data2-core-primitives@String","params":{"content":"<style>\n#d2_chatroom a { color: rgb(241, 110, 157); }\n#d2_chatroom p { word-break: break-word; white-space: pre-line; line-height: 20px; }\n</style>"}}}},{"_id":"66d77303c3da7c12e3371ea6","parent":"66bbfea2c30926feb2325b5a","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":348,"height":42,"exactHeight":42,"exactWidth":347.8}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":65,"y":10,"exactX":65.2,"exactY":false,"top":false,"left":true,"right":true,"growH":false}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"_id":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":" message-bottom","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":76,"exactWidth":421,"exactHeight":76}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":203,"reference":"xfOwC8rL76iLazntit-k8"},{"_id":"66bbfea2c30926feb2325b62","parent":"66bbfea2c30926feb2325b61","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":208,"height":55,"exactWidth":207.68,"exactHeight":54.99,"growHeightWithContent":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":10,"exactX":false,"exactY":false,"left":false,"right":false,"growH":false,"fixed":false,"top":true}},"text":{"component":"data2-core-primitives@String","params":{"content":"😀 Hola! Soy AVI, la asistente virtual de Natura y estoy aquí para ayudarte."}},"font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"horizontalAlignment":"center","textOverflow":false,"verticalAlignment":"middle","fontWeight":300}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"12"}}}},{"_id":"66bbfea2c30926feb2325b63","parent":"66bbfea2c30926feb2325b61","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":15,"height":8,"exactWidth":15,"exactHeight":8.13}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":12,"y":0,"exactX":false,"exactY":false,"fixed":false}}}},{"_id":"66bbfea2c30926feb2325b52","parent":"66bbfea2c30926feb2325b4b","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Date","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":35,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"10","exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false}},"childrenMode":"cols","fill":{"disabled":true,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,0,0,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeaterIndex"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"params":{"content":0},"component":"data2-core-primitives@Number"}},"component":"data2-core-comparison-operators@Equal"},{"params":{"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":120000}},"subject":{"params":{"content":{"params":{"components":[{"params":{"date":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.time"}}},"component":"data2-core-types@Reference"},"format":{"component":"data2-core-primitives@String","params":{"content":"x"}}},"component":"data2-core-functions@DateFormat"},{"params":{"date":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"data.messages."}},{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":1}}]},"component":"data2-core-numerical-operators@Subtract"},{"component":"data2-core-primitives@String","params":{"content":".time"}}]},"component":"data2-core-functions@StringConcat"}},"component":"data2-core-types@Getter"},"format":{"component":"data2-core-primitives@String","params":{"content":"x"}}},"component":"data2-core-functions@DateFormat"}]},"component":"data2-core-numerical-operators@Subtract"}},"component":"data2-core-primitives@Number","break":true}},"component":"data2-core-comparison-operators@GreaterThan"}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-logical-operators@Not"},"ignoreMouseEvents":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":0},{"_id":"66bbfea2c30926feb2325b50","parent":"66bbfea2c30926feb2325b4b","component":"natura@MxaYmozz2raererEaoBDP","system":"645b823726c1280637133f0e","displayName":"userMessage","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":421,"exactHeight":92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":20,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false,"exactX":false,"exactY":false}},"hide":{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"HUMAN"}}},"component":"data2-core-comparison-operators@Different"}},"width":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}},"component":"data2-core-types@Reference"},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater"}}},"component":"data2-core-types@Reference"}},"index":1},{"_id":"66bbfea2c30926feb2325b51","parent":"66bbfea2c30926feb2325b4b","component":"natura@KqXzRYJY01a3fy3QQHhzd","system":"645b823726c1280637133f0e","displayName":"assistantMessage","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":421,"exactHeight":92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"20","exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"hide":{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"ASSISTANT"}}},"component":"data2-core-comparison-operators@Different"}},"width":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}},"component":"data2-core-types@Reference"},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater"}}},"component":"data2-core-types@Reference"},"on_reply_action":{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeaterIndex"}}}},"comparisonSubject":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}},{"component":"data2-core-primitives@Number","params":{"content":1}}]},"component":"data2-core-numerical-operators@Subtract"}},"component":"data2-core-comparison-operators@Equal"},"then":{"params":{"country":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.country"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.country"}}}}]},"component":"data2-core-logical-operators@Or"}},"component":"natura@D3gdCRVit1-oUj9bi8G2J"}},"component":"data2-core-flow@If"}},"index":2},{"_id":"66bbfea2c30926feb2325b56","parent":"66bbfea2c30926feb2325b4b","component":"natura@KqXzRYJY01a3fy3QQHhzd","system":"645b823726c1280637133f0e","displayName":"agentMessage","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":421,"exactHeight":92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"20","exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"hide":{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"AGENT"}}},"component":"data2-core-comparison-operators@Different"}},"width":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}},"component":"data2-core-types@Reference"},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater"}}},"component":"data2-core-types@Reference"}},"index":3},{"_id":"66bbfea2c30926feb2325b57","parent":"66bbfea2c30926feb2325b4b","component":"natura@ZUmw1r3fZdD3t9xuf3If5","system":"645b823726c1280637133f0e","displayName":"systemMessage","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":421,"exactHeight":92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"20","exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"hide":{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"SYSTEM"}}},"component":"data2-core-comparison-operators@Different"}},"width":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}},"component":"data2-core-types@Reference"},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater"}}},"component":"data2-core-types@Reference"}},"index":3},{"_id":"66bbfea2c30926feb2325b4c","parent":"66bbfea2c30926feb2325b4b","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"typingMessageItemContainer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":421,"height":92,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":"0","y":10,"exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"childrenMode":"cols","hide":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.typing"}}}}},"component":"data2-core-logical-operators@Not"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeaterIndex"}}}},"comparisonSubject":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}},{"component":"data2-core-primitives@Number","params":{"content":1}}]},"component":"data2-core-numerical-operators@Subtract"}},"component":"data2-core-comparison-operators@Different"}]},"component":"data2-core-logical-operators@Or"},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":33}}},"index":6},{"_id":"66d772d3c3da7c12e3371ea4","parent":"66d77303c3da7c12e3371ea6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":210,"height":20,"exactHeight":false,"exactWidth":210.13}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"top":true,"left":true,"right":false,"growH":false}},"text":{"component":"data2-core-primitives@String","params":{"content":"Natura - Asistente Virtual"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"fontWeight":500}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"16"}}}},{"_id":"66d772f1c3da7c12e3371ea5","parent":"66d77303c3da7c12e3371ea6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":266,"height":26,"exactWidth":266.49,"exactHeight":25.5}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":16,"exactX":0,"exactY":16.33,"left":true,"bottom":false,"top":true,"growV":false}},"text":{"component":"data2-core-primitives@String","params":{"content":"Hispana"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"middle","fontWeight":300,"horizontalAlignment":"left"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":10}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"_id":"66bbfea2c30926feb2325b82","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":314,"height":42,"exactWidth":314.42,"exactHeight":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":15,"y":10,"exactX":false,"exactY":false,"top":true,"left":true,"right":true,"growH":false}},"text":{"component":"data2-core-primitives@String","params":{"content":"Iniciar nueva atención"}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(51,51,51,1)"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"}},"hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}}},"component":"data2-core-logical-operators@Not"},"onClick":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}}},"index":0},{"_id":"66bbfea2c30926feb2325b80","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"resetChat","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"600"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"dashed"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"372","y":"10","exactX":false,"exactY":false,"right":true,"top":true}},"children":{"locked":true},"cursor":"pointer","onClick":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}},"component":"data2-core-primitives@Boolean"}}],"onMouseEnter":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b80"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseLeave":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b80"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}],"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"inset","offsetY":"0","blur":"0","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(84,84,84,0.2)"}},"spread":"1"}}],"hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}}},"component":"data2-core-logical-operators@Not"},"tooltip":{"component":"data2-core-primitives@String","params":{"content":"Iniciar novo atendimento"}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":62}}},"index":1},{"_id":"66bbfea2c30926feb2325b77","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"sendButton","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#ffffff","radius":{"leftTop":"42"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"solid"},"disabled":false},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"372","y":"10","exactX":false,"exactY":false,"right":true,"top":true}},"children":{"locked":true},"cursor":"pointer","onClick":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageSend"}}}},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}},"component":"data2-core-primitives@Boolean"}}],"onMouseEnter":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b77"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseLeave":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b77"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}],"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"inset","offsetY":"0","blur":"0","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(243,243,243,1)"}},"spread":"1"}}],"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}}}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@Or"},"onVisibleOnScreen":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.observe_fix_scroll"}},"value":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-types@Setter"},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"fill":{"params":{"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}},"component":"data2-core-types@Getter"}],"then":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(246,190,0,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"component":"data2-core-flow@If"}},"index":2},{"_id":"66e476a0e46e43394e6452f6","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"audioButton","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":372,"y":8,"exactX":372,"exactY":8.09,"right":true,"top":true}},"children":{"locked":true},"cursor":"pointer","onClick":{"params":{"expression":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"value":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"value":{"component":"data2-core-primitives@String","params":{"content":"recording"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"VowdlGfa4t188GpvchEa4"}},"prop":"startRecording"}}]},"component":"data2-core-flow@Series"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"recording"}},"value":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"value":{"component":"data2-core-primitives@String","params":{"content":"uploading"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"VowdlGfa4t188GpvchEa4"}},"prop":"stopRecording"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"L7oOSFzf31uZNC7rrSv8Y"}},"prop":"uploadFromFiles","args":[[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult"}}}}],{"folder":{"component":"data2-core-types@FileComponentReference","params":{"preventEvaluation":false,"reference":"xqYdvzTaZuEHhT2AztA2p"}}}]}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult.0.fileUrl"}}}}},"component":"data2-core-types@Setter"},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"value":{"component":"data2-core-primitives@String","params":{"content":"previewing"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}}]},"component":"data2-core-flow@Series"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"previewing"}},"value":{"params":{"actions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageSend"}}}}]},"component":"data2-core-flow@Series"}}}]},"component":"data2-core-flow@Switch"},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}],"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"border":{"component":"data2-core-types@Border","params":{"color":"#ffffff","radius":{"leftTop":"42"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"solid"},"disabled":false},"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-logical-operators@Or"},"fill":{"params":{"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}},"component":"data2-core-types@Getter"}],"then":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(246,190,0,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"component":"data2-core-flow@If"}},"index":3},{"_id":"66bbfea2c30926feb2325b7b","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"attachmentInput","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":43,"height":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"327","y":10,"top":true,"exactX":false,"exactY":false,"right":true}},"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-logical-operators@Or"},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"border":{"component":"data2-core-types@Border","params":{"color":"#ffffff","radius":{"leftTop":"42"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"solid"},"disabled":false},"onClick":{"params":{"then":{"params":{"expression":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment_state"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"value":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"value":{"component":"data2-core-primitives@String","params":{"content":"uploading"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment_state"}}}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"L7oOSFzf31uZNC7rrSv8Y"}},"prop":"uploadFromPrompt","args":[{"folder":{"component":"data2-core-types@FileComponentReference","params":{"preventEvaluation":false,"reference":"_Mne-qkcC3vuAT38aJm2y"}}}]}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prevResult.0"}}}}},"component":"data2-core-types@Setter"},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"value":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment_state"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageSend"}}}}]},"component":"data2-core-flow@Series"}}}]},"component":"data2-core-flow@Switch"},"compare":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}}},"component":"data2-core-comparison-operators@Equal"}},"component":"data2-core-flow@If"},"cursor":"pointer","transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}]},"index":4},{"_id":"66e476a0e46e43394e6452f0","parent":"66bbfea2c30926feb2325b76","component":"data2-blocks@VideoBlock","system":"645b823726c1280637133f0e","displayName":"audio preview","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"30"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":{"params":{"then":{"component":"data2-core-primitives@Number","params":{"content":316}},"else":{"component":"data2-core-primitives@Number","params":{"content":273}},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}}}},"component":"data2-core-flow@If"},"height":42,"exactWidth":272.7,"exactHeight":42,"growHeightWithContent":false,"minHeight":42},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"10","y":10,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false}},"hide":{"component":"data2-core-logical-operators@Or","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}},"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},{"params":{"subject":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"previewing"}}},"component":"data2-core-comparison-operators@Equal"},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}}}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}]}},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"200","scope":"DIMENSIONS"}}],"opacity":{"params":{"then":{"params":{"value":25},"component":"data2-core-types@Opacity"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}}},"component":"data2-core-flow@If"}},"showControls":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"videoFile":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}},"component":"data2-core-types@Getter"}},"index":5},{"_id":"66e476a0e46e43394e6452ea","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"audio recording","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":{"params":{"then":{"component":"data2-core-primitives@Number","params":{"content":360}},"else":{"component":"data2-core-primitives@Number","params":{"content":"316"}},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}}}},"component":"data2-core-flow@If"},"height":42,"exactWidth":312.7,"exactHeight":42,"growHeightWithContent":false,"minHeight":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"10","y":10,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false}},"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},{"params":{"subject":{"params":{"pattern":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"uploading"}},{"component":"data2-core-primitives@String","params":{"content":"recording"}}]},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@Or"},"opacity":{"params":{"then":{"params":{"value":25},"component":"data2-core-types@Opacity"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}}},"component":"data2-core-flow@If"},"text":{"component":"data2-core-primitives@String","params":{"content":"Grabando audio..."}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"middle"}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(112,112,112,1)"}}},"index":6},{"_id":"66bbfea2c30926feb2325b79","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"inputContainer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"20"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"dashed"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":{"params":{"then":{"component":"data2-core-primitives@Number","params":{"content":360}},"else":{"component":"data2-core-primitives@Number","params":{"content":"316"}},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}}}},"component":"data2-core-flow@If"},"height":42,"exactWidth":312.7,"exactHeight":42,"growHeightWithContent":false,"minHeight":42},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"10","y":10,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false}},"opacity":{"params":{"then":{"params":{"value":25},"component":"data2-core-types@Opacity"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}}},"component":"data2-core-flow@If"},"hide":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"standby"}}},"component":"data2-core-comparison-operators@Different"}]},"component":"data2-core-logical-operators@Or"},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"fFJM0-J4ol_hNDG81YOC9"}},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"200","scope":"DIMENSIONS"}}]},"index":7},{"_id":"66e47b5ee46e43394e6452fa","parent":"66bbfea2c30926feb2325b76","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"280","y":10,"exactX":false,"exactY":false,"top":true,"right":true}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":""}},"onClick":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"value":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}},"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}}}},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}},"value":{"params":{},"component":"data2-core-primitives@Null"}},"component":"data2-core-types@Setter"}]},"component":"data2-core-flow@Series"},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"previewing"}}},"component":"data2-core-comparison-operators@Equal"},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}}},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}}},"component":"data2-core-logical-operators@Not"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-close-circle-fill","iconSet":"remix"}},"size":{"component":"data2-core-primitives@Number","params":{"content":"23"}},"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(159,159,159,1)"}}},"index":8},{"_id":"66bbfea2c30926feb2325b7a","parent":"66bbfea2c30926feb2325b76","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":411,"height":10,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false}}},"index":9},{"_id":"66bbfea2c30926feb2325b53","parent":"66bbfea2c30926feb2325b52","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":229,"height":43,"exactWidth":229.42,"exactHeight":43.239999999999995}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":96,"y":1,"exactX":false,"exactY":false,"top":true,"bottom":true,"growV":false}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":16}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(141,141,141,1)"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"fontWeight":500,"textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"}},"text":{"params":{"portions":[{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":{"params":{"components":[{"params":{"components":[{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"x"}},"date":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-functions@DateFormat"},{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"x"}},"date":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.time"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@DateFormat"}]},"component":"data2-core-numerical-operators@Subtract"},{"component":"data2-core-primitives@Number","params":{"content":1000}}]},"component":"data2-core-numerical-operators@Divide"},"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":172800}}},"component":"data2-core-comparison-operators@GreaterThan"},"value":{"params":{"date":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.time"}}},"component":"data2-core-types@Reference"},"format":{"component":"data2-core-primitives@String","params":{"content":"MMM DD,"}}},"component":"data2-core-functions@DateFormat"}}},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":{"params":{"components":[{"params":{"components":[{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"x"}},"date":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-functions@DateFormat"},{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"x"}},"date":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.time"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@DateFormat"}]},"component":"data2-core-numerical-operators@Subtract"},{"component":"data2-core-primitives@Number","params":{"content":1000}}]},"component":"data2-core-numerical-operators@Divide"},"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":86400}}},"component":"data2-core-comparison-operators@GreaterThan"},"value":{"component":"data2-core-primitives@String","params":{"content":"Ayer"}}}}],"defaultCase":{"component":"data2-core-primitives@String","params":{"content":"Hoy"}}},"component":"data2-core-flow@Switch"},{"component":"data2-core-primitives@String","params":{"content":" "}},{"params":{"date":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.time"}}},"component":"data2-core-types@Reference"},"format":{"component":"data2-core-primitives@String","params":{"content":"HH:mm "}}},"component":"data2-core-functions@DateFormat"}]},"component":"data2-core-functions@StringConcat"}},"index":1},{"_id":"66bbfea2c30926feb2325b4f","parent":"66bbfea2c30926feb2325b4c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"borderSide","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":10,"height":1,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"fixed":false,"exactX":0,"exactY":0}}},"index":0},{"_id":"66bbfea2c30926feb2325b4d","parent":"66bbfea2c30926feb2325b4c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageItem","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"5","rightTop":"22","rightBottom":"22","leftBottom":"22"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(243,243,243,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":85,"height":32,"growWidthWithContent":false,"growHeightWithContent":false,"minWidth":20,"minHeight":20,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"fixed":false,"bottom":false,"right":false,"top":true}},"childrenMode":"cols","transitions":[{"component":"data2-core-types@Transition","params":{"duration":"500"}}],"filter":[{"component":"data2-core-types@BitmapFilter","params":{"type":"brightness","unit":"%","value":80}}]},"index":1},{"_id":"66bbfea2c30926feb2325b81","parent":"66bbfea2c30926feb2325b80","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"complex","blur":"0.2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.24)"}},"offsetY":"1"}}]},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-refresh-line","iconSet":"remix"}},"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(201,199,199,1)"}},"size":{"component":"data2-core-primitives@Number","params":{"content":20}}}},{"_id":"66bbfea2c30926feb2325b78","parent":"66bbfea2c30926feb2325b77","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"complex","blur":"0.2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.24)"}},"offsetY":"1"}}]},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-send-plane-fill","iconSet":"remix"}},"color":{"params":{"then":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"else":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(159,159,159,1)"}},"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.input"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-flow@If"},"size":{"component":"data2-core-primitives@Number","params":{"content":20}}}},{"_id":"66e476a0e46e43394e6452f7","parent":"66e476a0e46e43394e6452f6","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":""}}},"icon":{"params":{"defaultCase":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-mic-2-line","iconSet":"remix"}},"expression":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}},"component":"data2-core-types@Getter"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"recording"}},"value":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-stop-circle-fill","iconSet":"remix"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"previewing"}},"value":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-send-plane-fill","iconSet":"remix"}}}}]},"component":"data2-core-flow@Switch"},"size":{"component":"data2-core-primitives@Number","params":{"content":"23"}},"color":{"params":{"then":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"else":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(159,159,159,1)"}},"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-flow@If"}},"index":0},{"_id":"66e476a0e46e43394e6452f8","parent":"66e476a0e46e43394e6452f6","component":"data2-blocks@Spinner","system":"645b823726c1280637133f0e","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":42,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"textColor":{"params":{"rgba":"rgba(213,213,213,1)"},"component":"data2-core-types@Color"},"hide":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"uploading"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_state"}}}}},"component":"data2-core-comparison-operators@Different"}},"spinner":"Bounce"},"index":1},{"_id":"66f4796f9d3688c55cf526c9","parent":"66bbfea2c30926feb2325b7b","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":43,"height":42,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}}},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"icon":"ri-attachment-line","iconSet":"remix"}},"color":{"params":{"then":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"else":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(159,159,159,1)"}},"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.audio_url"}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-flow@If"},"size":{"component":"data2-core-primitives@Number","params":{"content":"23"}}},"index":0},{"_id":"66f479719d3688c55cf526cb","parent":"66bbfea2c30926feb2325b7b","component":"data2-blocks@Spinner","system":"645b823726c1280637133f0e","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":40,"height":41,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":2,"y":0,"exactX":2,"exactY":0}},"textColor":{"params":{"rgba":"rgba(213,213,213,1)"},"component":"data2-core-types@Color"},"hide":{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"uploading"}},"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.attachment_state"}}}}},"component":"data2-core-comparison-operators@Different"}},"spinner":"Bounce"},"index":1},{"_id":"66bbfea2c30926feb2325b94","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"message-input","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":315,"height":42,"exactWidth":314.6,"exactHeight":42,"growHeightWithContent":false,"minHeight":42}}},"index":208,"reference":"fFJM0-J4ol_hNDG81YOC9"},{"_id":"66bbfea2c30926feb2325b65","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":" UserMessageBubble","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":420,"height":1949,"exactWidth":420,"exactHeight":1949.18}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":201,"reference":"MxaYmozz2raererEaoBDP"},{"_id":"66bbfea2c30926feb2325b6d","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":" MessageBubble","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":420,"height":1960,"exactWidth":420,"exactHeight":1959.94}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":202,"reference":"KqXzRYJY01a3fy3QQHhzd"},{"_id":"66bbfea2c30926feb2325b85","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"SystemMessageBubble","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":373,"height":99,"exactWidth":373.48,"exactHeight":99.18}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":207,"reference":"ZUmw1r3fZdD3t9xuf3If5"},{"_id":"66bbfea2c30926feb2325b4e","parent":"66bbfea2c30926feb2325b4d","component":"data2-blocks@Spinner","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":70,"height":18,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":7,"y":"9","exactX":false,"exactY":false}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(64,64,64,1)"}}},"spinner":"Beat","speed":{"component":"data2-core-primitives@Number","params":{"content":0.7}}}},{"_id":"66bbfea2c30926feb2325b95","parent":"66bbfea2c30926feb2325b94","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"inputContainer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"20"},"width":{"left":"0","top":"0","right":"0","bottom":"0"},"type":"dashed"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":315,"height":42,"exactWidth":314.6,"exactHeight":42,"growHeightWithContent":false,"minHeight":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":true,"right":true,"growH":false,"bottom":true,"growV":false}},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}},"component":"data2-core-primitives@Boolean"}},{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"focused"}},"component":"data2-core-primitives@Boolean"}},{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}},"component":"data2-core-primitives@Boolean"}}],"onMouseEnter":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseLeave":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"shadow":[{"params":{"compare":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"focused"}}}}},"component":"data2-core-types@Getter"}],"then":{"component":"data2-core-types@Shadow","params":{"type":"outset","offsetY":"0","blur":"0","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(20,20,20,0.45)"}},"spread":"1"}},"else":{"component":"data2-core-types@Shadow","params":{"type":"outset","offsetY":"0","blur":"0","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(201,201,201,1)"}},"spread":"1"}}},"component":"data2-core-flow@If"}],"onMouseDown":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseUp":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}],"opacity":{"params":{"then":{"params":{"value":25},"component":"data2-core-types@Opacity"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}}}},"component":"data2-core-flow@If"},"hide":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"resetChat"}}}},"font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"}},"index":6},{"_id":"66eb534d87cfc7f6cc7d6fb9","parent":"66bbfea2c30926feb2325b65","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Copy of metadata","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":420,"height":24,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"fixed":false,"exactX":false,"exactY":false,"top":true,"left":true,"right":true,"growH":false}},"childrenMode":"reversed-cols","hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"timestamp"}}}}},"component":"data2-core-logical-operators@Not"}},"index":0},{"_id":"66bbfea2c30926feb2325b66","parent":"66bbfea2c30926feb2325b65","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"userMessageItemContainer","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":410,"height":1896,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"childrenMode":"reversed-cols","shadow":[],"font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"}},"index":1},{"_id":"66eb508d87cfc7f6cc7d6fb0","parent":"66bbfea2c30926feb2325b6d","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"metadata","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":420,"height":24,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"fixed":false,"exactX":false,"exactY":false,"top":true,"left":true,"right":true,"growH":false}},"childrenMode":"cols","hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"timestamp"}}}}},"component":"data2-core-logical-operators@Not"}},"index":0},{"_id":"66bbfea2c30926feb2325b6e","parent":"66bbfea2c30926feb2325b6d","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"robotMessageItemContainer","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":420,"height":1906,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"childrenMode":"cols","hide":{"params":{"components":[{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"user"}}},"component":"data2-core-comparison-operators@Equal"},{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"typing"}}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@Or"},"font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"}},"index":1},{"_id":"66bbfea2c30926feb2325b86","parent":"66bbfea2c30926feb2325b85","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"systemMessageItemContainer","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,140,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":373,"height":96,"growWidthWithContent":false,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":false,"exactHeight":95.87}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"fixed":false,"bottom":false,"right":true,"top":true,"left":true,"growH":false}},"childrenMode":"cols","hide":{"params":{"components":[{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"user"}}},"component":"data2-core-comparison-operators@Equal"},{"params":{"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageRepeater.sender"}}},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"typing"}}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@Or"},"shadow":[{"component":"data2-core-types@BitmapFilter","params":{"type":"invert","unit":"%","value":100}}],"font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"}},"index":1},{"_id":"66bbfea2c30926feb2325b96","parent":"66bbfea2c30926feb2325b95","component":"data2-blocks@DataTextBlock","system":"645b823726c1280637133f0e","params":{"super":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":315,"height":42,"exactWidth":false,"exactHeight":false,"growHeightWithContent":false,"minHeight":42}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":3,"exactX":0,"exactY":3.09,"fixed":false,"top":true,"left":true,"right":true,"growH":false,"bottom":true,"growV":false}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"middle","letterSpacing":"","wordWrap":"break-word"}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(51,51,51,1)"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":16}},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"110","scope":"ALL","easing":"cubic-bezier(0.03289473684210526,0.682375,0.21710526315789475,0.738375)","delay":"0"}}],"fill":{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"value":{"params":{"rgba":"rgba(246,246,246,1)"},"component":"data2-core-types@Color"},"expression":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"focused"}}}}},"component":"data2-core-types@Getter"}},"displayName":"focused"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"components":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}}},"component":"data2-core-types@Getter"},{"params":{"subject":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}}}}},"component":"data2-core-types@Getter"}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@And"},"value":{"params":{"rgba":"rgba(243,243,243,1)"},"component":"data2-core-types@Color"}},"displayName":"hovered"},{"component":"data2-core-flow@Case","params":{"value":{"params":{"rgba":"rgba(243,243,243,1)"},"component":"data2-core-types@Color"},"expression":{"params":{"components":[{"params":{"subject":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}}},"component":"data2-core-types@Getter"}},"component":"data2-core-logical-operators@Not"},{"params":{"subject":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}}}}},"component":"data2-core-types@Getter"}},"component":"data2-core-logical-operators@Not"}]},"component":"data2-core-logical-operators@And"}},"displayName":"default"},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"components":[{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hovered"}}}}},"component":"data2-core-types@Getter"},{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"clicked"}}}}},"component":"data2-core-types@Getter"}]},"component":"data2-core-logical-operators@And","displayName":"clicked"},"value":{"params":{"rgba":"rgba(226,226,225,1)"},"component":"data2-core-types@Color"}}}],"defaultCase":{"params":{"rgba":"rgba(246,246,246,1)"},"component":"data2-core-types@Color"}},"component":"data2-core-flow@Switch"},"backdropFilter":[]},"placeholder":{"component":"data2-core-primitives@String","params":{"content":"Mensaje..."}},"padding":{"left":{"component":"data2-core-primitives@Number","params":{"content":16}},"right":{"component":"data2-core-primitives@Number","params":{"content":16}},"top":{"params":{"content":11},"component":"data2-core-primitives@Number"}},"spellCheck":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"onFocus":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"focused"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onBlur":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66bbfea2c30926feb2325b95"}},"key":{"component":"data2-core-primitives@String","params":{"content":"focused"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"disabled":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disabled"}}},"component":"data2-core-types@Reference"},"onKeyPress":{"params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"event"}}],"body":{"component":"data2-core-types@Getter","params":{"module":{"execute":{"params":{"compare":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"event.key"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"Enter"}}},"component":"data2-core-comparison-operators@Equal"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"event.shiftKey"}}}}},"component":"data2-core-logical-operators@Not"}],"then":{"params":{"actions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messageSend"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-flow@If"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"execute"}}}}},"component":"data2-core-functions@Function","break":true},"dataset":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dCKhvrTGA0OHPdPfM4GGh"}},"field":{"params":{"content":"data.input"},"component":"data2-core-primitives@String"}},"index":0},{"_id":"66eb534d87cfc7f6cc7d6fbb","parent":"66eb534d87cfc7f6cc7d6fb9","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Sender","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":68,"height":13,"growWidthWithContent":true,"exactWidth":67.88}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":10,"y":6,"fixed":false,"exactX":false,"exactY":false,"top":false,"left":true,"right":false,"growH":false}},"text":{"params":{"portions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.sender"}}},"component":"data2-core-types@Reference"},{"params":{"compare":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.agent_name"}}},"component":"data2-core-types@Reference"},"then":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":" ("}},{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.agent_name"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@String","params":{"content":")"}}]},"component":"data2-core-functions@StringConcat"}},"component":"data2-core-flow@If"}]},"component":"data2-core-functions@StringConcat"},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"fontWeight":500,"horizontalAlignment":"right"}}},"index":0},{"_id":"66eb534d87cfc7f6cc7d6fba","parent":"66eb534d87cfc7f6cc7d6fb9","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":87,"height":10,"exactWidth":86.85,"exactHeight":9.72,"growHeightWithContent":false,"growWidthWithContent":true}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"y":7,"exactX":false,"exactY":false,"fixed":false,"top":false,"left":true,"right":false,"growH":false,"x":10}},"text":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"HH:mm DD/MM/YYYY"}},"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-functions@DateFormat"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","fontWeight":300,"fontStyle":"italic"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":10}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-logical-operators@Not"}},"index":1},{"_id":"66bbfea2c30926feb2325b67","parent":"66bbfea2c30926feb2325b66","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"borderSide","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":10,"height":1,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"fixed":false,"exactX":0,"exactY":0}}},"index":1},{"_id":"66bbfea2c30926feb2325b68","parent":"66bbfea2c30926feb2325b66","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageItem","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"10","rightTop":"2","rightBottom":"","leftBottom":""},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":1777,"growWidthWithContent":true,"growHeightWithContent":true,"minWidth":100,"minHeight":10,"exactWidth":false,"exactHeight":1777.24}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":-10,"y":0,"exactX":-10,"exactY":0,"fixed":false,"bottom":false,"right":false,"top":true}},"childrenMode":"rows","transitions":[{"component":"data2-core-types@Transition","params":{"duration":"500"}}],"shadow":{"params":{"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}}},"subject":{"component":"data2-core-primitives@String","params":{"content":"sticker"}}},"component":"data2-core-functions@Includes"},"else":[{"component":"data2-core-types@Shadow","params":{"spread":"2","type":"inset","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.21)"}}}}]},"component":"data2-core-flow@If"},"fill":{"params":{"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}}},"subject":{"component":"data2-core-primitives@String","params":{"content":"sticker"}}},"component":"data2-core-functions@Includes"},"else":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"background_color"}}}},{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"bubble_color"}}}},{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"},"disabled":false},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}],"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(72,72,72,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}]},"component":"data2-core-logical-operators@Or"},"then":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(72,72,72,1)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"component":"data2-core-flow@If"}},"index":2},{"_id":"66eb50ec87cfc7f6cc7d6fb5","parent":"66eb508d87cfc7f6cc7d6fb0","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Sender","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":68,"height":13,"growWidthWithContent":true,"exactWidth":67.88}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":10,"y":6,"fixed":false,"exactX":false,"exactY":false,"top":false,"left":true}},"text":{"params":{"portions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.sender"}}},"component":"data2-core-types@Reference"},{"params":{"compare":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.agent_name"}}},"component":"data2-core-types@Reference"},"then":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":" ("}},{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.agent_name"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@String","params":{"content":")"}}]},"component":"data2-core-functions@StringConcat"}},"component":"data2-core-flow@If"}]},"component":"data2-core-functions@StringConcat"},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"fontWeight":500}}},"index":0},{"_id":"66eb50bd87cfc7f6cc7d6fb2","parent":"66eb508d87cfc7f6cc7d6fb0","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":87,"height":10,"exactWidth":86.85,"exactHeight":9.72,"growWidthWithContent":true}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"y":7,"exactX":false,"exactY":false,"fixed":false,"top":false,"left":true,"right":false,"growH":false,"x":10}},"text":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"HH:mm DD/MM/YYYY"}},"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-functions@DateFormat"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","fontWeight":300,"fontStyle":"italic"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":10}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"hide":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-logical-operators@Not"}},"index":1},{"_id":"66bbfea2c30926feb2325b6f","parent":"66bbfea2c30926feb2325b6e","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"borderSide","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(220,0,0,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":10,"height":1,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"fixed":false,"exactX":0,"exactY":0}}},"index":2},{"_id":"66bbfea2c30926feb2325b70","parent":"66bbfea2c30926feb2325b6e","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageItem","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"2","rightTop":"10","rightBottom":"10","leftBottom":"10"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":1775,"growWidthWithContent":true,"growHeightWithContent":true,"minWidth":100,"exactWidth":false,"exactHeight":false,"minHeight":10}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":-0.34,"fixed":false,"bottom":false,"right":false,"top":true,"left":false,"growH":false}},"childrenMode":"rows","transitions":[{"component":"data2-core-types@Transition","params":{"duration":"500"}}],"fill":{"params":{"then":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"else":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"background_color"}}}},{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"},"disabled":false},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}]},"component":"data2-core-logical-operators@Or"},"compare":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}}},"subject":{"component":"data2-core-primitives@String","params":{"content":"sticker"}}},"component":"data2-core-functions@Includes"}},"component":"data2-core-flow@If"}},"index":3},{"_id":"66bbfea2c30926feb2325b87","parent":"66bbfea2c30926feb2325b86","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageItem","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#828282","radius":{"leftTop":"10","rightTop":"10","rightBottom":"10","leftBottom":"10"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":85,"growWidthWithContent":true,"growHeightWithContent":true,"minWidth":20,"minHeight":20,"exactWidth":345,"exactHeight":84.75999999999999}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":1,"exactX":false,"exactY":false,"fixed":false,"bottom":false,"right":false,"top":true,"left":false,"growH":false}},"childrenMode":"rows","transitions":[{"component":"data2-core-types@Transition","params":{"duration":"500"}}],"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(212,212,212,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"shadow":[{"component":"data2-core-types@Shadow","params":{"spread":"2","type":"inset","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.05)"}}}}],"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":1},{"_id":"66ca5c4d8098345eace7d046","parent":"66bbfea2c30926feb2325b68","component":"natura@InPHLD4CdeHylV8_L893H","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":0,"exactX":14,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"exactWidth":false,"exactHeight":73.7,"growHeightWithContent":true,"growWidthWithContent":true,"height":74}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"text"}},{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"transcription"}}}}]},"component":"data2-core-logical-operators@And"}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"text":""},"index":0},{"_id":"66ca5c4d8098345eace7d04f","parent":"66bbfea2c30926feb2325b68","component":"natura@CvZ9buda4heOH4jqJBmmL","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":58,"exactWidth":317.87,"exactHeight":54,"growHeightWithContent":false,"growWidthWithContent":false}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"audio"}},{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":1},{"_id":"66ca5c4d8098345eace7d058","parent":"66bbfea2c30926feb2325b68","component":"natura@sGiXeS4hM_1ZawC7V5hjV","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":101,"exactWidth":317.87,"exactHeight":100.92,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"document"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":2},{"_id":"66ca5c4d8098345eace7d061","parent":"66bbfea2c30926feb2325b68","component":"natura@_5lcp8gzqEPoJxDM9VEqD","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":292,"exactWidth":false,"exactHeight":292.24,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"image"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":800}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":3},{"_id":"66ca73dd512e2d5c7ea7fc50","parent":"66bbfea2c30926feb2325b68","component":"natura@4d6BHCOvnNUbWuG-iAJZ6","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":349,"exactWidth":false,"exactHeight":348.51,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"sticker"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":300}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":4},{"_id":"66ca5c4d8098345eace7d06a","parent":"66bbfea2c30926feb2325b68","component":"natura@60F9b8bwpe03SHMV_Km48","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":-11,"y":23,"exactX":-11.49,"exactY":22.98,"right":true,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":223,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true,"growWidthWithContent":false}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"video"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":800}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":5},{"_id":"66ca5c4d8098345eace7d073","parent":"66bbfea2c30926feb2325b68","component":"natura@pFdnYCTKKzc4erqYi_oWg","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":110,"exactWidth":317.87,"exactHeight":109.85000000000001,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"cta_url"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":6},{"_id":"66ca5c4d8098345eace7d07c","parent":"66bbfea2c30926feb2325b68","component":"natura@Uhxo3DgcwCS3kuaPIXxqC","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":185,"exactWidth":317.87,"exactHeight":184.64,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"button"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"on_reply_action":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}},"component":"data2-core-types@Reference"}},"index":7},{"_id":"66ca5c4d8098345eace7d085","parent":"66bbfea2c30926feb2325b68","component":"natura@ful7iBCStxIa7KTvwd6Kr","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":124,"exactWidth":317.87,"exactHeight":123.91,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"list"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"on_reply_action":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}},"component":"data2-core-types@Reference"}},"index":9},{"_id":"69dea6b1910d1cf467c99b92","parent":"66bbfea2c30926feb2325b68","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":54,"height":16,"exactWidth":54.470000000000006,"exactHeight":15.899999999999999,"growHeightWithContent":false,"growWidthWithContent":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"y":0,"exactX":7.8,"exactY":0,"fixed":false,"top":false,"left":true,"right":false,"growH":false,"x":8}},"text":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"hh:mm a"}},"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-functions@DateFormat"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","fontWeight":300,"fontStyle":"italic"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":10}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"hide":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-logical-operators@Not"},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"timestamp"}}}}]},"component":"data2-core-logical-operators@And"}},"index":11},{"_id":"66ca2e978318d44411523445","parent":"66bbfea2c30926feb2325b70","component":"natura@InPHLD4CdeHylV8_L893H","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":0,"exactX":14,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":51,"exactWidth":317.87,"exactHeight":51,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"text"}},{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"transcription"}}}}]},"component":"data2-core-logical-operators@And"}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":1},{"_id":"66ca30d927ad5b77b385d87e","parent":"66bbfea2c30926feb2325b70","component":"natura@CvZ9buda4heOH4jqJBmmL","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":58,"exactWidth":317.87,"exactHeight":54,"growHeightWithContent":false,"growWidthWithContent":false}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"audio"}},{"component":"data2-core-primitives@String","params":{"content":"text+audio"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":2},{"_id":"66ca436dd7e5c80c934a1ca9","parent":"66bbfea2c30926feb2325b70","component":"natura@sGiXeS4hM_1ZawC7V5hjV","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":101,"exactWidth":317.87,"exactHeight":100.92,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"document"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":3},{"_id":"66ca36c81fcea307664c7a7d","parent":"66bbfea2c30926feb2325b70","component":"natura@_5lcp8gzqEPoJxDM9VEqD","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":270,"exactWidth":false,"exactHeight":270.41,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"image"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":800}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":4},{"_id":"66ca73b1512e2d5c7ea7fc4e","parent":"66bbfea2c30926feb2325b70","component":"natura@4d6BHCOvnNUbWuG-iAJZ6","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":349,"exactWidth":false,"exactHeight":348.51,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"sticker"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":300}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":4},{"_id":"66ca45ac65658c20356d6a55","parent":"66bbfea2c30926feb2325b70","component":"natura@60F9b8bwpe03SHMV_Km48","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":345,"height":223,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true,"growWidthWithContent":false}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"video"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}},"max_width":{"component":"data2-core-primitives@Number","params":{"content":800}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":5},{"_id":"66ca4d617b9af0341602eb2e","parent":"66bbfea2c30926feb2325b70","component":"natura@pFdnYCTKKzc4erqYi_oWg","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":110,"exactWidth":317.87,"exactHeight":109.85000000000001,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"cta_url"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"}},"index":6},{"_id":"66ca51e4c7241f8bb6c3efcd","parent":"66bbfea2c30926feb2325b70","component":"natura@Uhxo3DgcwCS3kuaPIXxqC","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":14,"exactY":4,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":185,"exactWidth":317.87,"exactHeight":184.64,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"button"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"on_reply_action":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}},"component":"data2-core-types@Reference"}},"index":7},{"_id":"66ca59781852a41cd76fd3fd","parent":"66bbfea2c30926feb2325b70","component":"natura@ful7iBCStxIa7KTvwd6Kr","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":4,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":124,"exactWidth":317.87,"exactHeight":123.91,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(94,94,94,1)"}},"hide":{"params":{"subject":{"params":{"components":[{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"interactive"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"},{"params":{"comparisonSubject":{"params":{"content":"list"},"component":"data2-core-primitives@String"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Equal"}]},"component":"data2-core-logical-operators@And"}},"component":"data2-core-logical-operators@Not"}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"on_reply_action":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}},"component":"data2-core-types@Reference"}},"index":8},{"_id":"69deb788910d1cf467c99b94","parent":"66bbfea2c30926feb2325b70","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":50,"height":17,"exactWidth":50.02,"exactHeight":17.2,"growHeightWithContent":false,"growWidthWithContent":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"y":4,"exactX":282.79999999999995,"exactY":4,"fixed":false,"top":false,"left":true,"right":true,"growH":false,"x":283}},"text":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"hh:mm a"}},"date":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-functions@DateFormat"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","fontWeight":300,"fontStyle":"italic","horizontalAlignment":"right"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":10}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"hide":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.time"}}}}},"component":"data2-core-logical-operators@Not"},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"timestamp"}}}}]},"component":"data2-core-logical-operators@And"}},"index":11},{"_id":"66d0ce0264b13a108ef04683","parent":"66bbfea2c30926feb2325b87","component":"natura@InPHLD4CdeHylV8_L893H","system":"645b823726c1280637133f0e","displayName":"","params":{"super":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":318,"height":61,"exactWidth":317.87,"exactHeight":61.09,"growHeightWithContent":true,"growWidthWithContent":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"hide":{"params":{"subject":{"params":{"subject":[{"component":"data2-core-primitives@String","params":{"content":"text"}},{"component":"data2-core-primitives@String","params":{"content":"text+audio"}},{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},{"component":"data2-core-primitives@String","params":{"content":"list_reply"}}],"pattern":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-functions@Includes"}},"component":"data2-core-logical-operators@Not"},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"horizontalAlignment":"center","textOverflow":false,"verticalAlignment":"middle"}}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"max_width":{"params":{"width":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"width"}}}}},"component":"natura@1e-jYsMDVckiMpJ8ulAkg"},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"index":0},{"_id":"66ca2dd68318d44411523437","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatText","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":180,"exactWidth":308,"exactHeight":179.96}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":242,"reference":"InPHLD4CdeHylV8_L893H"},{"_id":"66ca2f9827ad5b77b385d879","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatAudio","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":54,"exactWidth":308,"exactHeight":54}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":243,"reference":"CvZ9buda4heOH4jqJBmmL"},{"_id":"66ca4162fb1da783a5b1746c","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatDocument","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":127,"exactWidth":308,"exactHeight":126.63000000000001}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":245,"reference":"sGiXeS4hM_1ZawC7V5hjV"},{"_id":"66ca356e3645d1e2ff61e221","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatImage","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":201,"exactWidth":308,"exactHeight":200.81}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":244,"reference":"_5lcp8gzqEPoJxDM9VEqD"},{"_id":"66ca734d512e2d5c7ea7fc4a","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatSticker","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":140,"exactWidth":308,"exactHeight":140}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":252,"reference":"4d6BHCOvnNUbWuG-iAJZ6"},{"_id":"66ca44e065658c20356d6a4d","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatVideo","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":237,"exactWidth":308,"exactHeight":236.59}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":246,"reference":"60F9b8bwpe03SHMV_Km48"},{"_id":"66ca4ba2fb1dd739d291f5b9","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatCtaUrl","params":{"0":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":184,"exactWidth":308,"exactHeight":183.82}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":247,"reference":"pFdnYCTKKzc4erqYi_oWg"},{"_id":"66ca4ef6bf7022ac8eb3c62c","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatReplyButtons","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":198,"exactWidth":308,"exactHeight":197.58}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":248,"reference":"Uhxo3DgcwCS3kuaPIXxqC"},{"_id":"66ca54315ee05cdf2fb1a1b6","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatList","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":136,"exactWidth":308,"exactHeight":135.95999999999998}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":249,"reference":"ful7iBCStxIa7KTvwd6Kr"},{"_id":"66ca2de18318d44411523441","parent":"66ca2dd68318d44411523437","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"messageText","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":20,"exactWidth":306,"exactHeight":19.75,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":-1,"exactX":0,"exactY":-0.78,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"text"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.text.body"}}}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"text+audio"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.text.body"}}}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},"value":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.button_reply.title"}}}},{"component":"data2-core-primitives@String","params":{"content":"\n"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.button_reply.description"}}}}]},"component":"data2-core-functions@StringConcat"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}},"value":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.list_reply.title"}}}},{"component":"data2-core-primitives@String","params":{"content":"\n"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.list_reply.description"}}}}]},"component":"data2-core-functions@StringConcat"}}}]},"component":"data2-core-flow@Switch"}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66fc191945962caa47767af8","parent":"66ca2dd68318d44411523437","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"messageTextRaw","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":1,"exactWidth":306,"exactHeight":3.37,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":46,"exactX":0,"exactY":46.02,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"14"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"hide":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"text":{"params":{"haystack":{"params":{"string":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.type"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"text"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.text.body"}}}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"text+audio"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.text.body"}}}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},"value":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.button_reply.title"}}}},{"component":"data2-core-primitives@String","params":{"content":"\n"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.button_reply.description"}}}}]},"component":"data2-core-functions@StringConcat"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}},"value":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.list_reply.title"}}}},{"component":"data2-core-primitives@String","params":{"content":"\n"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.list_reply.description"}}}}]},"component":"data2-core-functions@StringConcat"}}}]},"component":"data2-core-flow@Switch"}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"},"style":{"padding":{"component":"data2-core-primitives@String","params":{"content":"1em 0 1em 0 "}}}},"index":1},{"_id":"66ca2f9827ad5b77b385d87a","parent":"66ca2f9827ad5b77b385d879","component":"data2-blocks@VideoBlock","system":"645b823726c1280637133f0e","displayName":"audio","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":54,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"},"exactWidth":false,"exactHeight":false,"growWidthWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"videoFile":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.audio.link"}}},"component":"data2-core-types@Reference"},"showControls":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"poster":{"disabled":true,"component":"data2-core-types@FileComponentUrlReference","params":{}}},"index":1},{"_id":"66ca416cfb1da783a5b17472","parent":"66ca4162fb1da783a5b1746c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":208,"height":55,"exactWidth":false,"exactHeight":55.31,"growWidthWithContent":false,"growHeightWithContent":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"top":true,"left":true,"bottom":false,"growV":false,"right":false,"growH":false,"fixed":false}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(241,243,245,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"onClick":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__DeviceController"}},"prop":"downloadUrl","args":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.document.filename"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.document.link"}}}}]}},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"radius":{"leftTop":"10"}}}},"index":0},{"_id":"66ca4162fb1da783a5b1746d","parent":"66ca4162fb1da783a5b1746c","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"messageText","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":61,"exactWidth":306,"exactHeight":61.09,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"},"minHeight":{"component":"data2-core-primitives@Number","params":{"content":4}}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.document.caption"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66ca35863645d1e2ff61e224","parent":"66ca356e3645d1e2ff61e221","component":"data2-blocks@ImageBlock","system":"645b823726c1280637133f0e","displayName":"Copy of Image","params":{"super":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":140,"exactWidth":false,"exactHeight":139.66,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"radius":{"leftTop":"4"}}}},"positionX":"center","positionY":"center","repeat":"no-repeat","size":"contain","src":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.image.link"}}},"component":"data2-core-types@Reference"}},"index":0},{"_id":"66ca35ee3645d1e2ff61e226","parent":"66ca356e3645d1e2ff61e221","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"Copy of messageText","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":294,"height":61,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.image.caption"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66fc2f263b2ec48079c310a6","parent":"66ca356e3645d1e2ff61e221","component":"data2-blocks@LinkBlock","system":"645b823726c1280637133f0e","displayName":"Copy of Copy of messageText","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":201,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true,"growWidthWithContent":true},"break":false},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":true,"left":true,"growV":false,"growH":false},"break":false}},"link":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.image.link"}}},"component":"data2-core-types@Reference"},"target":"_blank"},"index":1},{"_id":"66ca734d512e2d5c7ea7fc4b","parent":"66ca734d512e2d5c7ea7fc4a","component":"data2-blocks@ImageBlock","system":"645b823726c1280637133f0e","displayName":"sticker","params":{"super":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":140,"exactWidth":false,"exactHeight":139.66,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":2,"exactX":0,"exactY":1.51,"right":false,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"radius":{"leftTop":"4"}}}},"positionX":"center","positionY":"center","repeat":"no-repeat","size":"contain","src":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.sticker.link"}}},"component":"data2-core-types@Reference"}},"index":0},{"_id":"66ca44e865658c20356d6a51","parent":"66ca44e065658c20356d6a4d","component":"data2-blocks@VideoBlock","system":"645b823726c1280637133f0e","displayName":"Copy of audio","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":176,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"},"exactWidth":false,"exactHeight":176.11,"growWidthWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"-2","exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"videoFile":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.video.link"}}},"component":"data2-core-types@Reference"},"showControls":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":0},{"_id":"66ca44e065658c20356d6a4f","parent":"66ca44e065658c20356d6a4d","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"Copy of messageText","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":294,"height":61,"exactWidth":false,"exactHeight":false,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":14,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.video.caption"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":2},{"_id":"66ca4ba2fb1dd739d291f5ba","parent":"66ca4ba2fb1dd739d291f5b9","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"body","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":42,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.body.text"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66ca4c72fb1dd739d291f5be","parent":"66ca4ba2fb1dd739d291f5b9","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"footer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":19,"exactWidth":306,"exactHeight":18.79,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"12"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":39}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.footer.text"}}}}},"index":1},{"_id":"66ca4cee7b9af0341602eb2c","parent":"66ca4ba2fb1dd739d291f5b9","component":"data2-blocks@LinkBlock","system":"645b823726c1280637133f0e","displayName":"cta","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#e8e8e8","radius":{},"width":{"left":"0","top":"1","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":36,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"6","exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","textOverflow":false,"verticalAlignment":"top","horizontalAlignment":"center"}}},"label":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"🔗 "}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.parameters.display_text"}}}}]},"component":"data2-core-functions@StringConcat"},"link":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.parameters.url"}}}},"target":"_blank"},"index":1},{"_id":"66ca537b82d1c011b25a9575","parent":"66ca4ba2fb1dd739d291f5b9","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Spacer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":168,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":false,"growV":false,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{}},"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":10,"exactWidth":10,"height":4,"exactHeight":4}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":8},{"_id":"66ca4ef6bf7022ac8eb3c62d","parent":"66ca4ef6bf7022ac8eb3c62c","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"body","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":42,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.body.text"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66ca4ef6bf7022ac8eb3c62e","parent":"66ca4ef6bf7022ac8eb3c62c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"footer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":19,"exactWidth":306,"exactHeight":18.79,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"12"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":39}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.footer.text"}}}}},"index":1},{"_id":"66ca4ef6bf7022ac8eb3c62f","parent":"66ca4ef6bf7022ac8eb3c62c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"buttons","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#e8e8e8","radius":{},"width":{"left":"0","top":"1","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":119,"exactWidth":false,"exactHeight":119.35,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":6,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","textOverflow":false,"verticalAlignment":"top","horizontalAlignment":"center"}},"repeat":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.buttons"}}},"showAllConditionals":true},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"button"}}},"index":1},{"_id":"66ca536182d1c011b25a956b","parent":"66ca4ef6bf7022ac8eb3c62c","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Spacer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":168,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":false,"growV":false,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{}},"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":10,"exactWidth":10,"height":4,"exactHeight":4}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":8},{"_id":"66ca56191852a41cd76fd3df","parent":"66ca54315ee05cdf2fb1a1b6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"header","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":19,"exactWidth":306,"exactHeight":18.79,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","fontWeight":700}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.header.text"}}}}},"index":0},{"_id":"66ca54315ee05cdf2fb1a1b7","parent":"66ca54315ee05cdf2fb1a1b6","component":"data2-blocks@MarkdownViewer","system":"645b823726c1280637133f0e","displayName":"body","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":42,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":0,"exactY":0,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}}},"markdown":{"params":{"string":{"params":{"haystack":{"params":{"string":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.body.text"}}}}},"component":"data2-core-functions@StringTrim"},"needle":{"component":"data2-core-primitives@String","params":{"content":"&lrm;"}},"patch":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-functions@Replace"}},"component":"natura@7HixitXSKJU54CCc5pv7r"}},"index":1},{"_id":"66ca54315ee05cdf2fb1a1b8","parent":"66ca54315ee05cdf2fb1a1b6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"footer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":19,"exactWidth":306,"exactHeight":18.79,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"12"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":39}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.footer.text"}}}}},"index":2},{"_id":"66ca54315ee05cdf2fb1a1b9","parent":"66ca54315ee05cdf2fb1a1b6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"cta","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#e8e8e8","radius":{},"width":{"left":"0","top":"1","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":36,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"6","exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"}},"text":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"📃 "}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.button"}}}}]},"component":"data2-core-functions@StringConcat"},"onClick":{"params":{"then":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"8eqagR6PXRH82k8558IZQ"}},"prop":"prompt","args":[{"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message"}}},"component":"data2-core-types@Reference"}}]}},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"component":"data2-core-flow@If"},"cursor":{"params":{"then":{"params":{"content":"pointer"},"component":"data2-core-primitives@String"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}},"else":{"params":{"content":"default"},"component":"data2-core-primitives@String"}},"component":"data2-core-flow@If"},"backdropFilter":{"params":{"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}},"else":[{"params":{"type":"brightness","unit":"%","value":90},"component":"data2-core-types@BitmapFilter"}]},"component":"data2-core-flow@If"},"filter":{"params":{"then":[{"component":"data2-core-types@BitmapFilter","params":{"type":"blur","unit":"px","value":1}}],"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"component":"data2-core-logical-operators@Not"}},"component":"data2-core-flow@If"}},"index":3},{"_id":"66ca54315ee05cdf2fb1a1ba","parent":"66ca54315ee05cdf2fb1a1b6","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Spacer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":168,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":false,"growV":false,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{}},"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":10,"exactWidth":10,"height":4,"exactHeight":4}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":4},{"_id":"66ca416cfb1da783a5b17473","parent":"66ca416cfb1da783a5b17472","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"6"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":48,"height":55,"exactWidth":47.54,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"fixed":false,"top":true,"left":false,"right":false,"growH":true}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(130,130,130,1)"}}},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"iconSet":"remix","icon":"ri-file-list-2-line"}},"size":{"component":"data2-core-primitives@Number","params":{"content":24}}}},{"_id":"66ca416cfb1da783a5b17474","parent":"66ca416cfb1da783a5b17472","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":153,"height":16,"exactWidth":152.55,"growHeightWithContent":false,"growWidthWithContent":false,"exactHeight":15.66}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":49,"y":-36,"exactX":false,"exactY":-35.62,"left":true,"bottom":false,"right":true,"growH":false,"fixed":false,"top":true}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.document.filename"}}}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"horizontalAlignment":"left","textOverflow":true,"verticalAlignment":"top"}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(15,15,15,1)"}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}}}},{"_id":"66ca5006bf7022ac8eb3c633","parent":"66ca4ef6bf7022ac8eb3c62f","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"button","params":{"border":{"params":{"then":{"component":"data2-core-types@Border","params":{"color":"#f2f2f2","radius":{"leftTop":""},"width":{"left":"0","top":"1","right":"0","bottom":"0"}}},"compare":{"params":{"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":0}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buttonRepeaterIndex"}}}}},"component":"data2-core-comparison-operators@GreaterThan"}},"component":"data2-core-flow@If"},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":36,"exactWidth":306,"exactHeight":42.19,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":1,"y":-2,"exactX":1.16,"exactY":-2,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"}},"text":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"↩️ "}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buttonRepeater.reply.title"}}}}]},"component":"data2-core-functions@StringConcat"},"onClick":{"params":{"then":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"op":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"prop":{"component":"data2-core-primitives@String","params":{"content":"op"}},"args":[{"type":{"component":"data2-core-primitives@String","params":{"content":"button_reply"}},"button_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buttonRepeater.reply"}}}}}]}}]},"component":"data2-core-flow@Series"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"component":"data2-core-flow@If"},"backdropFilter":{"params":{"compare":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"component":"data2-core-logical-operators@Not"},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca5006bf7022ac8eb3c633"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}}}}]},"component":"data2-core-logical-operators@Or"},"then":[{"params":{"type":"brightness","unit":"%","value":90},"component":"data2-core-types@BitmapFilter"}]},"component":"data2-core-flow@If"},"cursor":{"params":{"then":{"params":{"content":"pointer"},"component":"data2-core-primitives@String"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}},"else":{"params":{"content":"default"},"component":"data2-core-primitives@String"}},"component":"data2-core-flow@If"},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}},"component":"data2-core-primitives@Boolean"}}],"onMouseEnter":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca5006bf7022ac8eb3c633"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseLeave":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca5006bf7022ac8eb3c633"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"filter":{"params":{"then":[{"component":"data2-core-types@BitmapFilter","params":{"type":"blur","unit":"px","value":1}}],"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"component":"data2-core-logical-operators@Not"}},"component":"data2-core-flow@If"}},"index":1},{"_id":"66ca62c4512e2d5c7ea7fc42","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatListOptionsModal","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":827,"height":768,"exactWidth":827.48}}},"index":251,"reference":"kTHK5xVZ5mqLuWCnESN8f"},{"_id":"66ca62c4512e2d5c7ea7fc43","parent":"66ca62c4512e2d5c7ea7fc42","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(48,48,48,0.43)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":827,"height":768,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":3,"exactX":0,"exactY":2.7,"top":true,"left":true,"bottom":true,"growV":false,"right":true,"growH":false,"fixed":true}},"onClick":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"close"}}},"component":"data2-core-types@Reference"},"cursor":"default","backdropFilter":[{"component":"data2-core-types@BitmapFilter","params":{"type":"blur","unit":"px","value":4}}]}},{"_id":"66ca62df512e2d5c7ea7fc44","parent":"66ca62c4512e2d5c7ea7fc43","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"10"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":310,"height":360,"exactWidth":310.07}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":276,"y":173,"exactX":276,"exactY":173}},"scroll":{"disabled":false,"component":"data2-core-types@Scroll","params":{"y":true}},"onClick":{"params":{},"component":"data2-core-flow@Series"},"cursor":"default","font":{"params":{"content":"NaturaCo"},"component":"data2-core-primitives@String"}}},{"_id":"66ca62e4512e2d5c7ea7fc45","parent":"66ca62df512e2d5c7ea7fc44","component":"natura@W91G0wzfPVTbdGGeJho3k","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":289,"height":331,"exactWidth":288.55,"exactHeight":330.92}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":11,"y":10,"exactX":11,"exactY":9.89}}},"chat_message":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"message.chat_message"}}},"component":"data2-core-types@Reference"},"on_reply_action":{"params":{"country":{"params":{"components":[{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"KnPj5Fr1tVVBgBROTvxAYInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"routeParams.query.country"}}}},{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.country"}}}}]},"component":"data2-core-logical-operators@Or"}},"component":"natura@D3gdCRVit1-oUj9bi8G2J"}}},{"_id":"66ca64a9512e2d5c7ea7fc46","parent":"66ca62df512e2d5c7ea7fc44","component":"data2-blocks@IconBlock","system":"645b823726c1280637133f0e","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"20"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(178,178,178,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":20,"height":20,"exactWidth":20,"exactHeight":20}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":284,"y":7,"exactX":284.22,"exactY":7.140000000000001,"top":true,"right":true}},"onClick":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"close"}}},"component":"data2-core-types@Reference"}},"icon":{"disabled":false,"component":"data2-core-web@Icon","params":{"iconSet":"remix","icon":"ri-close-fill"}}}},{"_id":"66ca569f1852a41cd76fd3e1","component":"data2-core-primitives@Artboard","system":"645b823726c1280637133f0e","displayName":"ChatListOptions","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":379,"exactWidth":308,"exactHeight":379.22}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"index":250,"reference":"W91G0wzfPVTbdGGeJho3k"},{"_id":"66ca569f1852a41cd76fd3e6","parent":"66ca569f1852a41cd76fd3e1","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"header","params":{"1":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.button"}}}},"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":31,"exactWidth":306,"exactHeight":31.47,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","fontWeight":700,"horizontalAlignment":"center","textOverflow":false,"verticalAlignment":"middle"}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.button"}}}}},"index":0},{"_id":"66ca56f21852a41cd76fd3e8","parent":"66ca569f1852a41cd76fd3e1","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"sections","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":345,"exactWidth":306,"exactHeight":344.79,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"-14","exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"repeat":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"chat_message.interactive.action.sections"}}},"component":"data2-core-types@Reference","showAllConditionals":true},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"section"}}},"index":3},{"_id":"66ca569f1852a41cd76fd3e5","parent":"66ca569f1852a41cd76fd3e1","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"Spacer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":168,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":false,"growV":false,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{}},"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":10,"exactWidth":10,"height":4,"exactHeight":4}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":4},{"_id":"66ca57401852a41cd76fd3eb","parent":"66ca56f21852a41cd76fd3e8","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"section title","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#e8e8e8","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"1"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":20,"exactWidth":306,"exactHeight":20.42,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":20,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word","textOverflow":false,"verticalAlignment":"bottom","fontWeight":600}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":62}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sectionRepeater.title"}}}}},"index":0},{"_id":"66ca57741852a41cd76fd3f0","parent":"66ca56f21852a41cd76fd3e8","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"section rows","params":{"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":167,"exactWidth":306,"exactHeight":167.08999999999997,"growHeightWithContent":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":5,"exactX":0,"exactY":5.18,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"repeat":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sectionRepeater.rows"}}},"component":"data2-core-types@Reference","showAllConditionals":true},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"row"}}},"index":3},{"_id":"66ca57e21852a41cd76fd3f5","parent":"66ca57741852a41cd76fd3f0","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"row","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":58,"exactWidth":306,"exactHeight":57.97,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":1,"y":6,"exactX":1.46,"exactY":6,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"border":{"component":"data2-core-types@Border","params":{"color":"#e8e8e8","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"1"}}},"onClick":{"params":{"actions":[{"params":{"actions":[{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":10}}},"component":"data2-core-flow@Delay"},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"8eqagR6PXRH82k8558IZQ"}},"prop":"close"},"disabled":false}]},"component":"data2-core-flow@Series"},{"component":"data2-core-types@Getter","params":{"module":{"op":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"on_reply_action"}}}}},"prop":{"component":"data2-core-primitives@String","params":{"content":"op"}},"args":[{"type":{"component":"data2-core-primitives@String","params":{"content":"list_reply"}},"list_reply":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowRepeater"}}}}}]}}]},"component":"data2-core-flow@Parallel"},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}},"component":"data2-core-primitives@Boolean"}}],"onMouseEnter":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca57e21852a41cd76fd3f5"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"onMouseLeave":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca57e21852a41cd76fd3f5"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"backdropFilter":{"params":{"then":[{"component":"data2-core-types@BitmapFilter","params":{"type":"brightness","unit":"%","value":90}}],"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__UIState"}},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"66ca57e21852a41cd76fd3f5"}},"key":{"component":"data2-core-primitives@String","params":{"content":"hover"}}}}}}},"component":"data2-core-flow@If"}},"index":0},{"_id":"66ca57f11852a41cd76fd3f7","parent":"66ca57e21852a41cd76fd3f5","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"row title","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":22,"exactWidth":306,"exactHeight":22.29,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":0,"exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":14}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowRepeater.title"}}}}},"index":1},{"_id":"66ca57f31852a41cd76fd3f9","parent":"66ca57e21852a41cd76fd3f5","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"row description","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,0.3)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill","disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":308,"height":19,"exactWidth":306,"exactHeight":18.79,"growHeightWithContent":true,"growWidthWithContent":true,"maxWidth":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"max_width"}}},"component":"data2-core-types@Reference"}},"break":true},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":0,"y":"2","exactX":false,"exactY":false,"right":true,"top":true,"fixed":false,"bottom":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"left":true,"growV":false,"growH":false},"break":false},"textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"lineHeight":1.3,"wordWrap":"break-word"}},"opacity":{"disabled":false,"component":"data2-core-types@Opacity","params":{"value":39}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowRepeater.description"}}}}},"index":2},{"_id":"66ca5a81a228cd7894409c36","parent":"66ca57e21852a41cd76fd3f5","component":"data2-core-primitives@Block","system":"645b823726c1280637133f0e","displayName":"spacer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":false,"x":149,"y":0,"exactX":false,"exactY":false,"right":false,"top":true,"fixed":false,"bottom":false,"left":false,"growV":false,"growH":false}},"childrenMode":"reference","childrenReference":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{}},"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":10,"exactWidth":10,"height":6,"exactHeight":6}}},"index":4}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"66c76b025dd53c8f986c9697","displayName":"EC Portal de Atencion HML","reference":"WJFpP10kX4m08sHU8ToGd","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencionhispanicahml"}},"entryPoint":{"disabled":false,"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Router","reference":"KnPj5Fr1tVVBgBROTvxAY"}},"custom-fonts":[{"component":"data2-core-web@Font","params":{"family":{"component":"data2-core-primitives@String","params":{"content":"NaturaCo"}},"faces":[{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"WlsMxAuCpOzeSIrWjEA2d"}},"format":"opentype","style":"normal","weight":"600"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"PwFn-zce9Ori54cZdzuEb"}},"format":"opentype","style":"normal","weight":"400"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"0MbzdVtBT9Z9Dk7fw1QYh"}},"format":"opentype","style":"italic","weight":"500"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"q3VPlA9gnaYU4xx-soq9O"}},"format":"opentype","style":"normal","weight":"300"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"WxGhuZlyx4XOzWKEwdR3z"}},"format":"opentype","style":"normal","weight":"500"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"StxbTdvnOo63A4xNNqK4s"}},"format":"opentype","style":"italic","weight":"300"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"d_GnVMy8hLx-HoYzHZRdN"}},"format":"opentype","style":"italic","weight":"400"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"6tl98UKSJ1MsTw346LctN"}},"format":"opentype","style":"italic","weight":"700"},{"src":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"mjL7ukNvj3cX8r0LcRJPn"}},"format":"opentype","style":"normal","weight":"700"}]},"displayName":"NaturaCo"}],"customScripts":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"ht"}},"src":{"component":"data2-core-primitives@String","params":{"content":"https://natura.data2.media/file/4fuODp9d9yYPZsfVHxFSJ.js"}}},"component":"data2-core-web@Script"}],"font":{"params":{"fonts":[]},"component":"data2-core-web@Fonts"}},"system":"645b823726c1280637133f0e","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"66bbfea2c30926feb2325ba2","component":"data2-core@Store","system":"645b823726c1280637133f0e","params":{"initialData":{"params":{"fields":{"responding":{"component":"data2-core-primitives@Boolean","params":{}},"messages":{"params":{"then":[{"index":0,"sender":"HUMAN","time":"2024-08-23T22:24:36+00:00","id":"rYQ8O7e_q8W0eL4rO10a5","assistant":{},"type":"text","text":{"body":"hola! "}},{"index":1,"sender":"ASSISTANT","time":"2024-08-23T22:24:37+00:00","id":"gVt2oHC_-sFE8pZVtTf1u","assistant":{},"type":"text","text":{"body":"Hola Soy Avi/Nat la asistente virtual de Natura y estoy aquí para ayudarte 😃"}},{"index":2,"sender":"ASSISTANT","time":"2024-08-23T22:24:38+00:00","id":"BiJT1RqXJqJOoe28rq1F5","assistant":{},"type":"interactive","interactive":{"type":"list","body":{"text":"Ahora elige como quieres ingresar: ⬇️","type":"text"},"action":{"button":"Perfiles","sections":[{"title":"Perfiles","rows":[{"id":"consultant","title":"Consultor(a) de Belleza Natura y digital. ❤️","description":"Consultor(a)"},{"id":"leader","title":"Nuestros líderes. 🫱🏽‍🫲🏿","description":"Líder"},{"id":"manager","title":"Nuestros gerentes. ⭐","description":"Gerente"}]}]}}}],"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"builder"}}}},"else":[]},"component":"data2-core-flow@If"},"startTime":{"component":"data2-core-primitives@String","params":{}},"chatId":{"params":{},"component":"data2-core-primitives@String"},"observe_fix_scroll":{"params":{},"component":"data2-core-functions@DateNow"},"typing":{"params":{},"component":"data2-core-primitives@Boolean"},"audio_url":{"component":"data2-core-primitives@String","params":{}},"audio_state":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"attachment_state":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"attachment":{"component":"data2-core-primitives@String","params":{}}}},"component":"data2-core-types@FieldSet"}},"reference":"9pAH9qpiLrLvBOR6qKz6_"},{"_id":"66cbefe8da243b18365bcf78","component":"data2-core@DataSet","system":"645b823726c1280637133f0e","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SLmNv-LV-cJKTjap-64uJ"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":100}}},"master":{"params":{"dataset":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"masterField":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"chat_id"}},"localField":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"chat_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"3euPAXpP7r3NHYY19q_HG"},{"_id":"682f4b450529d4658f96a0cd","component":"data2-core-connect@PowerCordSocket","system":"645b823726c1280637133f0e","params":{"onMessage":{"params":{"actions":[{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"event"}},{"component":"data2-core-primitives@String","params":{"content":"data"}}],"body":{"component":"data2-core-types@Getter","params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"ex"}},"module":{"ex":{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__LoggerService"}},"prop":"log","args":[{"component":"data2-core-primitives@String","params":{"content":"user OnMessage"}},{"event":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"event"}}}},"data":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}}]},"disabled":true},{"params":{"actions":[{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"fvKZ9V-3Rrmp2GMO4qInI"}},"prop":"refresh"}}]},"component":"data2-core-flow@Series","displayName":"filter/refresh"},{"params":{"actions":[{"params":{"actions":[{"params":{"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Skip sync because it is already responding"}},"code":{"component":"data2-core-primitives@Number","params":{"content":400}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.responding"}}}}},"component":"data2-core-flow@If"},{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":"refresh"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":"refresh"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":"refresh"}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":"sync"}}]},"component":"data2-core-flow@Parallel","displayName":"Fetch session and messages"},{"params":{"actions":[{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":"paginate","args":[{"size":{"component":"data2-core-primitives@Number","params":{"content":100}}}]},"disabled":true},{"params":{"actions":[{"params":{"action":{"params":{"array":{"params":{"messages_1":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}},"messages_2":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}},"component":"natura@PV4KIz6EZyjdWP2Eb7Laj"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m._id"}}}}}}},"component":"data2-core-functions@ArrayFilter"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"next_messages"}}},"component":"data2-core-flow@Step"},{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"msg lenght"}},"data":{"next msg lenght":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}},"msg lenght":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages.length"}}}},"Mns":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages"}}}},"DAta":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}}},"component":"natura@3UcTJBMDap5uV1yKV_uLr","disabled":true},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages.length"}}}},"comparisonSubject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}}},"component":"data2-core-comparison-operators@EqualOrGreaterThan"},"then":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"},"else":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"MESCROLLA"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"}},"component":"data2-core-flow@If","displayName":"merge messages if new message"}]},"component":"data2-core-flow@Series","displayName":"merge messages"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.status"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"queue"}}},"component":"data2-core-comparison-operators@Equal"},"then":{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"PqjPbzpg-bFvxXV9qSA8T"}},"prop":"invoke","args":[{"body":{"chat_id":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"ewDp8c4XuPQHsmcZkYlwj"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.chat_id"}}}}}}]},"component":"data2-core-types@Interaction","disabled":false}},"component":"data2-core-flow@If","displayName":"ping if queue"},{"component":"data2-core-flow@If","displayName":"merge messages chatbot-store (ChatBot-HispanicaRouter)","params":{"compare":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.chatId"}}}},"then":{"params":{"actions":[{"params":{"action":{"params":{"array":{"params":{"messages_1":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}},"messages_2":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}},"component":"natura@PV4KIz6EZyjdWP2Eb7Laj"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"m"}}],"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"m._id"}}}}}}},"component":"data2-core-functions@ArrayFilter"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"next_messages_chatbot"}}},"component":"data2-core-flow@Step"},{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"msg lenght"}},"data":{"next msg lenght":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}},"msg lenght":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages_chatbot.length"}}}},"Mns":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages_chatbot"}}}},"DAta":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}}},"component":"natura@3UcTJBMDap5uV1yKV_uLr","disabled":true},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages_chatbot.length"}}}},"comparisonSubject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages.length"}}}}},"component":"data2-core-comparison-operators@EqualOrGreaterThan"},"then":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"next_messages_chatbot"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"BASE-SCROLL"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"},"else":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"OTsxKbZ6-l2tbSA_uBvPI"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}},"value":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"3euPAXpP7r3NHYY19q_HG"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}}}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":500}}},"component":"data2-core-flow@Delay"},{"params":{"alignment":"end","id":{"component":"data2-core-primitives@String","params":{"content":"BASE-SCROLL"}}},"component":"data2-core-web@ScrollIntoView"}]},"component":"data2-core-flow@Series"}},"component":"data2-core-flow@If","displayName":"merge messages if new message"}]},"component":"data2-core-flow@Series","displayName":"merge messages chatbot-store"}}}],"concurrency":{"component":"data2-core-primitives@Number","params":{"content":1}}},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series"}],"concurrency":{"component":"data2-core-primitives@Number","params":{"content":1}}},"component":"data2-core-flow@Parallel","disabled":false}]},"component":"data2-core-flow@Parallel","disabled":false}]},"component":"data2-core-flow@Series"}}}}}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"__LoggerService"}},"prop":"log","args":[{"component":"data2-core-primitives@String","params":{"content":"Actual array"}},{"0":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"messages"}}}},"1":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"9pAH9qpiLrLvBOR6qKz6_"},"break":false},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.messages"}}}}}]},"disabled":true}]},"component":"data2-core-flow@Series"},"autoConnect":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"reference":"lTQRb152dXh5ddifgEM_J"},{"_id":"66bc01b0223588da6c2118b1","component":"data2-core@DataSet","system":"645b823726c1280637133f0e","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"wLgYrXeVHjZmUvrnzu_XR"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"filter":{"params":{"_id":{"component":"data2-core-primitives@String","params":{"content":"000000000000000000000000"}}},"component":"data2-core-types@DataSetFilter"}},"reference":"ewDp8c4XuPQHsmcZkYlwj"},{"_id":"66ce59fcbc81a8f528339c4c","component":"data2-core@Store","system":"645b823726c1280637133f0e","params":{"initialData":{"params":{"fields":{"env":{"params":{"defaultCase":{"component":"data2-core-primitives@String","params":{"content":"HML"}},"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"appDomain"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencion-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencion-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"auth-portaldeatencion-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"auth-portaldeatencion-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portal-konecta"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portal-konecta-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencionhispanica"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}}]},"component":"data2-core-flow@Switch"},"country":{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"appDomain"}}}},"pattern":{"component":"data2-core-primitives@String","params":{"content":"ecuador"}}},"component":"data2-core-functions@Includes"},"value":{"component":"data2-core-primitives@String","params":{"content":"EC"}}}}]},"component":"data2-core-flow@Switch"},"use_raw_text":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"appDomain"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador"}},{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador-hml"}}]},"component":"data2-core-functions@Includes"}}},"component":"data2-core-types@FieldSet"}},"reference":"KVEwv-6Lr4cBH_Mc5dlIx"},{"_id":"66cbeec6da243b18365bcf76","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"SLmNv-LV-cJKTjap-64uJ","multi":["create"],"schema":[{"component":"data2-core-types@Field","params":{"title":"session","key":"session","component":"data2-core-types@Lookup","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}},"table":"wLgYrXeVHjZmUvrnzu_XR"}},{"component":"data2-core-types@Field","params":{"title":"chat_id","key":"chat_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"id","key":"id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"index","key":"index","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"time","key":"time","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"sender","key":"sender","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"HUMAN,ASSISTANT,AGENT,SYSTEM"}}}}},{"component":"data2-core-types@Field","params":{"title":"agent","key":"agent","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}}},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@String","title":"agent_name","key":"agent_name"}},{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"text,audio,text+audio,image,video,document,sticker,interactive,button_reply,list_reply"}}}}},{"component":"data2-core-types@Field","params":{"title":"text","key":"text","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"audio","key":"audio","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"image","key":"image","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"video","key":"video","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"document","key":"document","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"sticker","key":"sticker","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"interactive","key":"interactive","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"button_reply","key":"button_reply","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"list_reply","key":"list_reply","component":"data2-core-primitives@Object"}}]},"reference":"SLmNv-LV-cJKTjap-64uJ"},{"_id":"6aba976d9d2c4e1f33f10547","component":"data2-core@Store","system":"645b823726c1280637133f0e","params":{"initialData":{"params":{"fields":{"responding":{"component":"data2-core-primitives@Boolean","params":{}},"messages":{"params":{},"component":"data2-core-primitives@String"},"startTime":{"component":"data2-core-primitives@String","params":{}},"chatId":{"params":{},"component":"data2-core-primitives@String"},"observe_fix_scroll":{"params":{},"component":"data2-core-functions@DateNow"},"typing":{"params":{},"component":"data2-core-primitives@Boolean"},"audio_url":{"component":"data2-core-primitives@String","params":{}},"audio_state":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"attachment_state":{"component":"data2-core-primitives@String","params":{"content":"standby"}},"attachment":{"component":"data2-core-primitives@String","params":{}},"input":{"component":"data2-core-primitives@String","params":{}},"env":{"params":{"defaultCase":{"component":"data2-core-primitives@String","params":{"content":"HML"}},"expression":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"fVQzha7r_BHHuSVVJvMmdInterface"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"location.href"}}},"component":"data2-core-types@Getter"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencion-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencion-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"auth-portaldeatencion-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"auth-portaldeatencion-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portalagents-ecuador-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portal-konecta"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portal-konecta-hml"}},"value":{"component":"data2-core-primitives@String","params":{"content":"HML"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"portaldeatencionhispanica"}},"value":{"component":"data2-core-primitives@String","params":{"content":"PRD"}}}}]},"component":"data2-core-flow@Switch"},"mock":{"index":0,"sender":"HUMAN","time":"2024-08-24T16:19:41-03:00","id":"vuYhF_8e6NSsj8nskd-Eg","type":"text","text":{"body":{"component":"data2-core-primitives@String","params":{"content":"Perfumería, cosméticos, cuidado personal y belleza consciente. Compra en línea productos naturales con propósito y transforma tu rutina con Natura."}}},"audio":{"link":"https://natura.data2.media/file/Vi-SUuGJBZrWceOO6dEpL"},"image":{"link":{"component":"data2-core-primitives@String","params":{"content":"https://natura.data2.media/file/DTV60LKmEwXs7KaG-lBoZ"}},"caption":{"component":"data2-core-primitives@String","params":{"content":"Hola! Soy AVI"}}},"document":{"link":{"component":"data2-core-primitives@String","params":{"content":"https://natura.data2.media/file/KHXgxQpdLYZGoRTFk7SOZ"}},"caption":{"component":"data2-core-primitives@String","params":{"content":"Natura Manual"}},"filename":{"component":"data2-core-primitives@String","params":{"content":"Natura_manual.pdf"}}},"video":{"link":{"component":"data2-core-primitives@String","params":{"content":"https://natura.data2.media/file/F5u4QdOYQftYLGj2YFAeg"}},"caption":{"component":"data2-core-primitives@String","params":{"content":"Cool video here!"}}},"interactive":{"type":"cta_url","header":{"text":{"component":"data2-core-primitives@String","params":{"content":"Shiba Inu"}},"type":"text"},"body":{"text":{"component":"data2-core-primitives@String","params":{"content":"Check ou these Shiba Inus"}},"type":"text"},"footer":{"text":{"component":"data2-core-primitives@String","params":{"content":"They are so cute!"}},"type":"text"},"action":{"name":{"component":"data2-core-primitives@String","params":{"content":"cta_url"}},"parameters":{"display_text":{"component":"data2-core-primitives@String","params":{"content":"See Cuteness"}},"url":{"component":"data2-core-primitives@String","params":{"content":"https://en.wikipedia.org/wiki/Shiba_Inu"}}},"buttons":[{"type":{"component":"data2-core-primitives@String","params":{"content":"reply"}},"reply":{"id":{"component":"data2-core-primitives@String","params":{"content":"shibainu_red"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Red"}}}},{"type":{"component":"data2-core-primitives@String","params":{"content":"reply"}},"reply":{"id":{"component":"data2-core-primitives@String","params":{"content":"shibainu_black_tan"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Black & Tan"}}}},{"type":{"component":"data2-core-primitives@String","params":{"content":"reply"}},"reply":{"id":{"component":"data2-core-primitives@String","params":{"content":"cream"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Cream"}}}}],"button":{"component":"data2-core-primitives@String","params":{"content":"Color options"}},"sections":[{"title":"I want it ASAP!","rows":[{"id":{"component":"data2-core-primitives@String","params":{"content":"red"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Red"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Like a fox"}}},{"id":{"component":"data2-core-primitives@String","params":{"content":"black_tan"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Black & Tan"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Like a tanuki"}}},{"id":{"component":"data2-core-primitives@String","params":{"content":"cream"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Cream"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Like a mochi"}}}]},{"title":"I can wait a bit","rows":[{"id":{"component":"data2-core-primitives@String","params":{"content":"sesame"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Sesame"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Rare color"}}}]}]}},"sticker":{"link":{"params":{"content":"https://natura.data2.media/file/zRcpL28e4LbLmtHSeq0Pr"},"component":"data2-core-primitives@String"},"caption":{"component":"data2-core-primitives@String","params":{"content":"Hola soy Avi! "}}}}}},"component":"data2-core-types@FieldSet"}},"reference":"OTsxKbZ6-l2tbSA_uBvPI"},{"_id":"66e10963257e5a810bc9ef28","component":"data2-core@DataSet","system":"645b823726c1280637133f0e","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"LjY69zNPBf-S4iKWcJzWT"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"filter":{"params":{"_id":{"component":"data2-core-primitives@String","params":{"content":"000000000000000000000000"}}},"component":"data2-core-types@DataSetFilter"},"pagination":{"size":20}},"reference":"fvKZ9V-3Rrmp2GMO4qInI"},{"_id":"66bc01b0223588da6c2118b0","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"wLgYrXeVHjZmUvrnzu_XR","multi":["create"],"schema":[{"component":"data2-core-types@Field","params":{"title":"chat_id","key":"chat_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"whatsapp","key":"whatsapp","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"profile","key":"profile","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"consultant,leader,manager,consumer,be_consultant,consumer_online,N/I,"}}}}},{"component":"data2-core-types@Field","params":{"title":"identification_method","key":"identification_method","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"identification","key":"identification","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"identification_document","key":"identification_document","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"consultant_id","key":"consultant_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"cesada","key":"cesada","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"authenticated_consultant_id","key":"authenticated_consultant_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"user_id_whatsapp","key":"user_id_whatsapp","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"impersonation_usecase","key":"impersonation_usecase","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"impersonation_identification","key":"impersonation_identification","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"impersonation_consultant"}}}}},{"component":"data2-core-types@Field","params":{"title":"impersonation_IdRequest","key":"impersonation_id_request","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":""}}}}},{"component":"data2-core-types@Field","params":{"title":"impersonation_option","key":"impersonation_option","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"impersonation_myself,impersonation_consultant"}}}}},{"component":"data2-core-types@Field","params":{"title":"impersonation_consultant_id","key":"impersonation_consultant_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"sector","key":"sector","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"sector_code","key":"sector_code","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"status","key":"status","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"profile,identification,proactivo,ai,queue,agent,survey,cancelled,completed"}}}}},{"component":"data2-core-types@Field","params":{"title":"country","key":"country","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"MX,AR,EC,CL,PE,CO"}}}}},{"component":"data2-core-types@Field","params":{"title":"channel","key":"channel","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"web,whatsapp"}}}}},{"component":"data2-core-types@Field","params":{"title":"env","key":"env","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"PRD,HML,DEV"}}}}},{"component":"data2-core-types@Field","params":{"title":"profile_started_at","key":"profile_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"profile_time","key":"profile_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"identification_started_at","key":"identification_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"identification_time","key":"identification_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"proactivo_started_at","key":"proactivo_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"proactivo_time","key":"proactivo_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"ai_started_at","key":"ai_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"ai_time","key":"ai_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"queue_started_at","key":"queue_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"queue_time","key":"queue_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"agent_started_at","key":"agent_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"agent_rejected_at","key":"agent_rejected_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"agent_time","key":"agent_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"survey_started_at","key":"survey_started_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"survey_time","key":"survey_time","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"ended_at","key":"ended_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"queue","key":"queue","component":"data2-core-types@Lookup","table":"mz3UXiIKmZSpvLYDhjAM5","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}}},{"component":"data2-core-types@Field","params":{"title":"queue_label","key":"queue_label","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"agent","key":"agent","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}},"break":false},{"component":"data2-core-types@Field","params":{"title":"agent_name","key":"agent_name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"agent_internal_number","key":"agent_internal_number","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"agent_started_by","key":"agent_started_by","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}},"break":false,"disabled":false},{"component":"data2-core-types@Field","params":{"title":"agent_ended_by","key":"agent_ended_by","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}},"disabled":false},{"component":"data2-core-types@Field","params":{"title":"agent_rejected_by","key":"agent_rejected_by","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":0}}},"disabled":false},{"component":"data2-core-types@Field","params":{"title":"last_user_message_at","key":"last_user_message_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"last_assistant_message_at","key":"last_assistant_message_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"last_agent_message_at","key":"last_agent_message_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"sended_recommendation","key":"sended_recommendation","component":"data2-core-primitives@Boolean","validation":{"required":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":false}}}},{"component":"data2-core-types@Field","params":{"title":"location_substatus","key":"location_substatus","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@String","title":"number_order","key":"number_order"}},{"component":"data2-core-types@Field","params":{"title":"status_Order","key":"status_order","component":"data2-core-primitives@String"},"disabled":false},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@Object","title":"invoice_list","key":"invoice_list"}},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@Object","title":"order_list","key":"order_list"}},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@Object","title":"orders_cancel","key":"orders_cancel"}},{"component":"data2-core-types@Field","params":{"title":"api_error","key":"api_error","component":"data2-core-primitives@Boolean","validation":{"required":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":false}}}},{"component":"data2-core-types@Field","params":{"title":"impersonation_error","key":"impersonation_error","component":"data2-core-primitives@Boolean","validation":{"required":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":false}}}},{"component":"data2-core-types@Field","params":{"title":"last_use_case","key":"last_use_case","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"last_faq","key":"last_faq","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"maia","key":"maia","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"certificate","key":"certificate","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"certificate_data","key":"certificate_data","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"started_ai_conversation","key":"started_ai_conversation","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"start_cycle","key":"start_cycle","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"end_cycle","key":"end_cycle","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"proactivo_msg","key":"proactivo_msg","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"send_proactivo","key":"send_proactivo","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"external_transfer_conversation_id","key":"external_transfer_conversation_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"external_transfer_status","key":"external_transfer_status","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"external_transfer_interaction_id","key":"external_transfer_interaction_id","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"all_external_transfer_conversation_id","key":"all_external_transfer_conversation_id","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"component":"data2-core-types@Field","params":{"title":"all_external_transfer_message_uuid","key":"all_external_transfer_message_uuid","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"component":"data2-core-types@Field","params":{"title":"last_message","key":"last_message","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"temporal_session","key":"temporal_session","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"bypass","key":"bypass","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"count_queue","key":"count_queue","component":"data2-core-primitives@Number","validation":{"integer":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}},{"component":"data2-core-types@Field","params":{"title":"impure_retention","key":"impure_retention","component":"data2-core-primitives@Boolean","sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"component":"data2-core-types@Field","params":{"title":"return_bot_ia","key":"return_bot_ia","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"faq_fluxe_boton","key":"faq_fluxe_boton","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"auth_count","key":"auth_count","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"last_message_user_preauth","key":"last_message_user_preauth","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"title":"user_name","key":"user_name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"correo_electronico","key":"correo_electronico","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"gerencia","key":"gerencia","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"gerencia_code","key":"gerencia_code","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"grupo","key":"grupo","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"grupo_code","key":"grupo_code","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"flag_csat","key":"flag_csat","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"send_autocsat","key":"send_autocsat","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"abandoned","key":"abandoned","component":"data2-core-types@Formula","sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"validation":{"required":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":""}},"formula":{"component":"data2-core-primitives@String","params":{"content":"if({{$record.cesada}} or {{$record.status}} == 'completed' or {{$record.status}} == 'closed', 1 == 0, {{$record.ended_at}} != {{$record.zzz_no_existe}} and {{$record.ai_started_at}} == {{$record.zzz_no_existe}} and {{$record.started_ai_conversation}} == {{$record.zzz_no_existe}} and {{$record.last_use_case}} == {{$record.zzz_no_existe}} and {{$record.queue_started_at}} == {{$record.zzz_no_existe}} and {{$record.all_external_transfer_conversation_id}} == {{$record.zzz_no_existe}} and {{$record.external_transfer_status}} == {{$record.zzz_no_existe}} and {{$record.profile}} != 'consumer_online')"}}}},{"component":"data2-core-types@Field","params":{"title":"gn_ar_piloto","key":"gn_ar_piloto","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"respond_csat","key":"respond_csat","component":"data2-core-primitives@Boolean"}}]},"reference":"wLgYrXeVHjZmUvrnzu_XR"},{"_id":"66bf88b2aef89125ec215fc0","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"1RQmj18MSuMkFbexypg2l","multi":["create"],"schema":[{"component":"data2-core-types@Field","params":{"title":"email","key":"email","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"password","key":"password","component":"data2-core-types@Password"}},{"component":"data2-core-types@Field","params":{"title":"name","key":"name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"role","key":"role","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"agent,supervisor"}}}}},{"component":"data2-core-types@Field","params":{"title":"internal_number","key":"internal_number","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"env","key":"env","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"HML,PRD"}}}}},{"component":"data2-core-types@Field","params":{"title":"country","key":"country","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"EC,CL"}}}}}]},"reference":"1RQmj18MSuMkFbexypg2l"},{"_id":"66bc01b0223588da6c2118c5","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"LjY69zNPBf-S4iKWcJzWT","schema":[{"component":"data2-core-types@Field","params":{"title":"agent","key":"agent","component":"data2-core-types@Lookup","table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":1}}},"break":false},{"component":"data2-core-types@Field","params":{"title":"status","key":"status","component":"data2-core-types@Lookup","table":"CqSALqg7f_W_s_fzWoo_H","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":1}}}},{"component":"data2-core-types@Field","params":{"title":"status_type","key":"status_type","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"online,offline,stop,pause"}}}}},{"component":"data2-core-types@Field","params":{"title":"in_service","key":"in_service","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"title":"transfers_count","key":"transfers_count","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"last_transfer_at","key":"last_transfer_at","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"env","key":"env","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"DEV,HML,PRD"}}}}}],"multi":["create"]},"reference":"LjY69zNPBf-S4iKWcJzWT"},{"_id":"66d0a8e72b24551bb1097c68","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"mz3UXiIKmZSpvLYDhjAM5","schema":[{"component":"data2-core-types@Field","params":{"title":"label","key":"label","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"name","key":"name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"country","key":"country","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"EC,CL,CO,MX,PE,AR"}}}}},{"component":"data2-core-types@Field","params":{"title":"profiles","key":"profiles","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"consultant,leader,manager,sales_manager"}}},"list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"component":"data2-core-types@Field","params":{"title":"channels","key":"channels","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"web,whatsapp"}}}}},{"component":"data2-core-types@Field","params":{"title":"agents","key":"agents","component":"data2-core-types@Lookup","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"table":"1RQmj18MSuMkFbexypg2l","populateDepth":{"component":"data2-core-primitives@Number","params":{"content":1}}}},{"component":"data2-core-types@Field","params":{"title":"time_from","key":"time_from","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"time_to","key":"time_to","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"time_zone","key":"time_zone","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"days_week","key":"days_week","component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"mon,tue,wed,thu,fri"}}}}},{"component":"data2-core-types@Field","params":{"title":"saturday_time_from","key":"saturday_time_from","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"saturday_time_to","key":"saturday_time_to","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"sunday_time_from","key":"sunday_time_from","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"sunday_time_to","key":"sunday_time_to","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"abandon_timeout_seconds","key":"abandon_timeout_seconds","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"agent_inactivity_timeout_seconds","key":"agent_inactivity_timeout_seconds","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"user_inactivity_timeout_seconds","key":"user_inactivity_timeout_seconds","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"outside_hours_message","key":"outside_hours_message","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"unavailable_agent_message","key":"unavailable_agent_message","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"env","key":"env","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"DEV,HML,PRD"}}}}}],"multi":["create"]},"reference":"mz3UXiIKmZSpvLYDhjAM5"},{"_id":"66d88c066e412f6a5f478fbd","component":"data2-core@Data2TableDataSource","system":"645b823726c1280637133f0e","params":{"table":"CqSALqg7f_W_s_fzWoo_H","multi":["create"],"schema":[{"component":"data2-core-types@Field","params":{"title":"title","key":"title","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String"}}]},"reference":"CqSALqg7f_W_s_fzWoo_H"},{"_id":"66bbfea2c30926feb2325ba3","component":"data2-core@Store","system":"645b823726c1280637133f0e","params":{"initialData":{"params":{"fields":{"input":{"component":"data2-core-primitives@String","params":{}}}},"component":"data2-core-types@FieldSet"}},"reference":"dCKhvrTGA0OHPdPfM4GGh"},{"_id":"6a996e38089a64f7c42cee05","component":"data2-core@Store","system":"645b823726c1280637133f0e","params":{},"reference":"5Pf70mL9_7AEFvIBWV1uH"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}