
Confiabilidade
Recebimento das informações diretamente da B3.

Recebimento das informações diretamente da B3.
Mitigação de riscos operacionais e redução de custos.

Redução do trabalho operacional dos Custodiantes de Balcão.
<p>Saiba mais sobre o iMercado </p>
O iMercado é a rede de serviços que une arquivos e mensagens de “pós-negociação” em um único lugar, com o objetivo de disponibilizar informações de listados e balcão aos clientes que não têm acesso direto aos sistemas core da B3 (ou não acessam suas informações diretamente da B3), bem como, oferecer uma infraestrutura para viabilizar, padronizar e automatizar a troca de informações entre participantes.
E-mail: [email protected]
26/09/2022
Disponível para o mercado
Alterações de catálogo
Sem alterações de catálogo
Principais sistemas impactados
iMercado – Arquivos
Principais funções impactadas
Nenhuma função relacionada.
Roteiro de certificação
N/A
Qual a versão do Sinacor?
Sem Impacto
The following has evaluated to null or missing:
==> item[0].getDDMFormField().getDDMFormFieldOptions().getOptionLabels(item[0].getValue().getString(locale)) [in template "20096#20121#90970" at line 110, column 49]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign impactInitiative = item[0].ge... [in template "20096#20121#90970" at line 110, column 21]
----
1<#if entries?size != 0 >
2 <#assign assetLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3 <#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")/>
4<#assign roleLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.RoleLocalService")/>
5 <#assign resourcePermissionLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ResourcePermissionLocalService") />
6 <#assign _journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
7
8 <#assign url = currentURL>
9 <#assign assetEntryIdIndex = url?index_of("assetEntryId=") + 13>
10 <#assign assetEntryId = url?substring(assetEntryIdIndex)>
11
12 <#assign displayPageAssetEntry = assetLocalService.getAssetEntry(assetEntryId?number) />
13 <#assign displayPageAssetEntryCategories = displayPageAssetEntry.getCategories() />
14 <#assign justProjectSegment = [] />
15 <#assign sementoProdutoVocabularioID = 0/>
16 <#assign statusVocabularioID = 0/>
17
18 <#list displayPageAssetEntryCategories as cat>
19 <#assign vocabularyId = cat.vocabularyId/>
20 <#assign vocabulary = assetVocabularyLocalService.fetchAssetVocabulary(vocabularyId)/>
21 <#if vocabulary.name?index_of("segment") != -1 >
22 <#assign sementoProdutoVocabularioID = vocabulary.vocabularyId/>
23 <#assign justProjectSegment += [cat.name] />
24 </#if>
25 <#if vocabulary.name?index_of("status") != -1 >
26 <#assign statusVocabularioID = vocabulary.vocabularyId/>
27 </#if>
28 </#list>
29
30 <#assign relatedProjectsList = [] />
31 <#assign listaDeComparacao = [] />
32
33 <#assign starBorderURL = "/documents/d/guest/star_border" />
34 <#assign starURL = "/documents/d/guest/star" />
35
36 <#list entries as curJournalArticle>
37
38 <#assign assetEntry = assetLocalService.getEntry("com.liferay.journal.model.JournalArticle",curJournalArticle.resourcePrimKey) />
39
40 <#assign isExclusiveContent = true />
41 <#assign guestRole = roleLocalService.getRole( themeDisplay.getCompanyId()?number,"Guest") />
42 <#assign article = _journalArticleLocalService.getLatestArticle(assetEntry.getClassPK()) />
43 <#assign JournalArticleClassName = "com.liferay.journal.model.JournalArticle" />
44 <#assign SCOPE_INDIVIDUAL = 4 />
45
46 <#assign resourcePermission = resourcePermissionLocalService
47 .getResourcePermission(
48 themeDisplay.getCompanyId(),
49 JournalArticleClassName,
50 SCOPE_INDIVIDUAL,
51 article.getResourcePrimKey()?string,
52 guestRole.getRoleId()
53 )/>
54
55 <#if (resourcePermission.hasActionId("VIEW"))>
56 <#assign isExclusiveContent = false />
57 </#if>
58
59 <#assign assetRenderer = assetEntry.getAssetRenderer() />
60 <#assign DDMFormFieldValuesMap=assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() />
61 <#assign DDMFormFieldsReferencesMap=assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true) />
62 <#assign categories = assetEntry.getCategories()/>
63 <#assign linkToWebContentDisplayPage="/w/" + assetRenderer.getUrlTitle()/>
64
65
66 <!-- pegando as categorias e filtrando pela vocabularyId de Segmentos -->
67 <#assign segmentsCategories = categories?filter(category -> category.vocabularyId == sementoProdutoVocabularioID) />
68
69
70 <!-- pegando as categorias e filtrando pela vocabularyId de status -->
71 <#assign projetcStatus = categories?filter(category -> category.vocabularyId == statusVocabularioID)[0] />
72
73 <!-- Pegando ano de Entrega -->
74 <#assign yearDeliveryField=DDMFormFieldsReferencesMap['yearDelivery'].name />
75 <#assign yearDelivery=DDMFormFieldValuesMap[yearDeliveryField] [0] />
76 <#assign yearDeliveryOptionSelected=yearDelivery.getValue().getString(locale)?replace("[", "")?replace("]", "" )?replace('"', '' ) />
77 <#assign yearDeliveryOptionValue = yearDelivery.getDDMFormField().getDDMFormFieldOptions().getOptionLabels(yearDeliveryOptionSelected)!" " />
78 <#if yearDeliveryOptionValue != " ">
79 <#assign yearDeliveryOptionValue = yearDeliveryOptionValue.getString(locale) />
80 </#if>
81
82 <!-- Pegando trimestre de Entrega -->
83 <#assign quarterDeliveryField=DDMFormFieldsReferencesMap['quarterDelivery'].name />
84 <#assign quarterDelivery=DDMFormFieldValuesMap[quarterDeliveryField] [0] />
85 <#assign quarterDeliveryOptionSelected=quarterDelivery.getValue().getString(locale)?replace("[", "")?replace("]", "" )?replace('"', '' ) />
86 <#assign quarterDeliveryOptionValue = quarterDelivery.getDDMFormField().getDDMFormFieldOptions().getOptionLabels(quarterDeliveryOptionSelected)!"" />
87 <#if quarterDeliveryOptionValue != "">
88 <#assign quarterDeliveryOptionValue = quarterDeliveryOptionValue.getString(locale) />
89 </#if>
90
91 <!-- Pegando Resumo do card -->
92 <#assign cardSummaryField = DDMFormFieldsReferencesMap['cardSummary'].name />
93 <#assign cardSummary = DDMFormFieldValuesMap[cardSummaryField][0].getValue().getString(locale) />
94
95 <!-- pegando imagem do card -->
96 <#assign urlImageValue="" />
97 <#assign altImageValue="" />
98 <#assign featuredImageField=DDMFormFieldsReferencesMap['featuredImage'].name />
99 <#assign featuredImage=DDMFormFieldValuesMap[featuredImageField][0].getValue().getString(locale) />
100
101 <!-- pegando o grupo de campos -->
102 <#assign brazilLocale = localeUtil.fromLanguageId("pt_BR")>
103 <#assign impactFieldGroup=DDMFormFieldsReferencesMap['impactFieldGroup'].name />
104 <#assign impactFieldGroupSelect=DDMFormFieldValuesMap[impactFieldGroup][0] />
105 <#assign impactInitiative="" />
106 <#list impactFieldGroupSelect.getNestedDDMFormFieldValuesMap() as key,item>
107 <#if item[0].getDDMFormField().getFieldReference()=="impactInitiative">
108 <#assign impactInitiative = item[0].getValue().getString(locale)!"" />
109 <#if impactInitiative?has_content>
110 <#assign impactInitiative = item[0].getDDMFormField().getDDMFormFieldOptions().getOptionLabels(item[0].getValue().getString(locale)).getString(locale) />
111 <!-- Verifica se impactInitiative vem vazio com locale en_US -->
112 <#else>
113 <#assign impactInitiative = item[0].getValue().getString(brazilLocale)!"" />
114 <#if impactInitiative?has_content>
115 <#assign impactInitiative = item[0].getDDMFormField().getDDMFormFieldOptions().getOptionLabels(item[0].getValue().getString(brazilLocale)).getString(brazilLocale) />
116 </#if>
117 </#if>
118 </#if>
119 </#list>
120 <!-- Peganddo path da imagem -->
121 <#if featuredImage !="{}">
122 <#assign cleanedJson = featuredImage?replace("\\u","\\\\u")>
123 <#assign featuredImageEvaluated = cleanedJson?eval>
124 <#assign altImageValue = featuredImageEvaluated.alt!"">
125 <#assign urlImageValue = featuredImageEvaluated.url!"">
126 </#if>
127 <#assign segmentsProductCategories = "" />
128
129 <#list segmentsCategories as segCat >
130 <#if (segmentsCategories?size) == 1 >
131 <#assign segmentsProductCategories = segmentsCategories[0].getTitle(locale) />
132 <#elseif (segmentsCategories?size) == 2 >
133 <#list segmentsCategories as segCat>
134 <#if segCat?is_last>
135 <#assign segmentsProductCategories = "${segmentsProductCategories} e ${segCat.getTitle(locale)}"/>
136 <#else>
137 <#assign segmentsProductCategories = "${segCat.getTitle(locale)}"/>
138 </#if>
139 </#list>
140 <#elseif ((segmentsCategories?size) >= 3) >
141 <#list segmentsCategories as segCat>
142 <#if segCat?is_first>
143 <#assign segmentsProductCategories = "${segCat.getTitle(locale)}"/>
144 <#elseif segCat_index == 1>
145 <#assign segmentsProductCategories = "${segmentsProductCategories}, ${segCat.getTitle(locale)}"/>
146 <#elseif segCat_index == 2>
147 <#assign segmentsProductCategories = "${segmentsProductCategories} e ${segCat.getTitle(locale)}"/>
148 <#break>
149 </#if>
150 </#list>
151 </#if>
152 </#list>
153
154 <#assign relatedProject =
155 {
156 "id" :"${curJournalArticle.resourcePrimKey}",
157 "title":"${curJournalArticle.getTitle(locale)}",
158 "cardSummary":"${cardSummary}",
159 "impactInitiative":"${impactInitiative}",
160 "date":"${quarterDeliveryOptionValue}${yearDeliveryOptionValue?substring(2,4)}",
161 "status":"${projetcStatus.getTitle(locale)}",
162 "segmentsProductCategories":"${segmentsProductCategories}",
163 "linkToWebContentDisplayPage": "${linkToWebContentDisplayPage}"
164
165 }
166 />
167
168 <#assign relatedProjectsList += [relatedProject] />
169 <#if curJournalArticle_index == 0 >
170 <#list segmentsCategories as item >
171 <#assign listaDeComparacao += [item.getTitle(locale)] />
172 </#list>
173 <#else>
174 <#list segmentsCategories as item>
175 <#if !(listaDeComparacao?seq_contains(item.getTitle(locale))) >
176 <#assign listaDeComparacao += [item.getTitle(locale)] />
177 </#if>
178 </#list>
179 </#if>
180
181
182 </#list>
183 <#assign releatedCategories = [] />
184 <#assign releatedCategoriesHeader = ""/>
185 <#assign getRelated = []/>
186 <#assign count = 0 />
187
188 <#list listaDeComparacao as curCategoryName>
189 <#if (justProjectSegment?seq_contains(curCategoryName)) >
190 <#assign releatedCategories += [curCategoryName] />
191 <#assign getRelated += [curCategoryName] />
192 </#if>
193 </#list>
194
195 <#if (releatedCategories?size) == 1>
196 <#assign releatedCategoriesHeader = releatedCategories[0] />
197 <#elseif (releatedCategories?size) == 2>
198 <#list releatedCategories as curCategoryName>
199 <#if curCategoryName_index == 0>
200 <#assign releatedCategoriesHeader = "${curCategoryName}"/>
201 <#elseif curCategoryName_index==1>
202 <#assign releatedCategoriesHeader = "${releatedCategoriesHeader} e ${curCategoryName}"/>
203 </#if>
204 </#list>
205 <#elseif ((releatedCategories?size) >= 3) >
206 <#list releatedCategories as curCategoryName>
207 <#if curCategoryName?is_first>
208 <#assign releatedCategoriesHeader = "${curCategoryName}"/>
209 <#elseif curCategoryName_index == 1>
210 <#assign releatedCategoriesHeader = "${releatedCategoriesHeader}, ${curCategoryName}"/>
211 <#elseif curCategoryName_index == 2>
212 <#assign releatedCategoriesHeader = "${releatedCategoriesHeader} e ${curCategoryName}"/>
213 <#break>
214 </#if>
215 </#list>
216 </#if>
217
218 <section class="swiper-container b3-more-projects" id="related-projects">
219 <div class="container-fluid container-fluid-max-xl">
220 <h3 class="b3-section__title b3-more-projects__title h3">${locale?contains("en")?then("Check out more projects about", "Confira mais projetos sobre" )}
221 <#assign releatedCategoriesInEnglish = {
222 "Captação bancária":"Bank funding",
223 "Crédito":"Credit",
224 "Dados Mercado":"Data",
225 "Derivativos":"Derivatives",
226 "Dívida Corporativa":"DCM",
227 "ESG":"ESG",
228 "Recebíveis":"Receivables",
229 "Soluções de Renda Fixa":"Fixed income solutions",
230 "Commodities":"Commodities",
231 "Cross Market":"Cross Market",
232 "Dados":"Data",
233 "Empréstimo":"Securities Lending",
234 "Índices":"Indices",
235 "Juros e Moedas":"Interest rate and currencies",
236 "Renda Variável":"Equities",
237 "Tecnologia e operações": "Technology and operations"
238 } />
239
240 <#list getRelated as segCat>
241 <#if locale?contains("en")>
242 <span class="b3-comma english">
243 ${releatedCategoriesInEnglish[segCat]!""}
244 </span>
245 <#else>
246 <span class="b3-comma portuguese">
247 ${segCat}
248 </span>
249 </#if>
250 </#list>
251
252 </h3>
253 <div class="b3-more-projects__carousel">
254 <div class="swiper-wrapper b3-more-projects__wrapper">
255 <#list relatedProjectsList as curEntry>
256 <a href="${curEntry.linkToWebContentDisplayPage}" class="swiper-slide b3-more-projects__wrapper__card b3-ga-card">
257 <div class="card__header">
258<div class="card__header__wrapper">
259 <div class="card__header__header">
260 <#if (curEntry.impactInitiative?contains("Informativo") || curEntry.impactInitiative?contains("Informative")) >
261 <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
262 <mask id="mask0_17645_417870000000" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
263 <path d="M12.332 3.6C16.932 3.6 20.732 7.4 20.732 12C20.732 16.6 16.932 20.4 12.332 20.4C7.73203 20.4 3.93203 16.6 3.93203 12C3.93203 7.4 7.73203 3.6 12.332 3.6ZM12.332 2C6.83203 2 2.33203 6.5 2.33203 12C2.33203 17.5 6.83203 22 12.332 22C17.832 22 22.332 17.5 22.332 12C22.332 6.5 17.832 2 12.332 2Z" fill="black"/>
264 <path d="M13.132 11.2H11.532V16.8H13.132V11.2Z" fill="black"/>
265 <path d="M13.132 7.19995H11.532V8.79995H13.132V7.19995Z" fill="black"/>
266 </mask>
267 <g mask="url(#mask0_17645_417870000000)">
268 <rect x="0.332031" width="24" height="24" fill="#666E7A"/>
269 </g>
270 </svg>
271 <p>${locale?contains("en")?then("Informative", "Informativo" )}</p>
272 <#elseif (curEntry.impactInitiative?contains("Opcional") || curEntry.impactInitiative?contains("Optional"))>
273 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
274 <mask id="mask0_17642_41677020202" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="20" height="20">
275 <path fill-rule="evenodd" clip-rule="evenodd" d="M20.4 12C20.4 7.4 16.6 3.6 12 3.6C7.4 3.6 3.6 7.4 3.6 12C3.6 16.6 7.4 20.4 12 20.4C16.6 20.4 20.4 16.6 20.4 12ZM2 12C2 6.5 6.5 2 12 2C17.5 2 22 6.5 22 12C22 17.5 17.5 22 12 22C6.5 22 2 17.5 2 12ZM17 12C17 12.5523 16.5523 13 16 13C15.4477 13 15 12.5523 15 12C15 11.4477 15.4477 11 16 11C16.5523 11 17 11.4477 17 12ZM12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13ZM9 12C9 12.5523 8.55228 13 8 13C7.44772 13 7 12.5523 7 12C7 11.4477 7.44772 11 8 11C8.55228 11 9 11.4477 9 12Z" fill="black"/>
276 </mask>
277 <g mask="url(#mask0_17642_41677020202)">
278 <rect width="24" height="24" fill="#666E7A"/>
279 </g>
280 </svg>
281 <p>${locale?contains("en")?then("Optional", "Opcional" )}</p>
282 <#elseif (curEntry.impactInitiative?contains("Mandatório") || curEntry.impactInitiative?contains("Mandatory"))>
283 <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
284 <mask id="mask0_17642_41602010101" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="2" y="2" width="21" height="20">
285 <path fill-rule="evenodd" clip-rule="evenodd" d="M12.332 3.6C16.932 3.6 20.732 7.4 20.732 12C20.732 16.6 16.932 20.4 12.332 20.4C7.73203 20.4 3.93203 16.6 3.93203 12C3.93203 7.4 7.73203 3.6 12.332 3.6ZM12.332 2C6.83203 2 2.33203 6.5 2.33203 12C2.33203 17.5 6.83203 22 12.332 22C17.832 22 22.332 17.5 22.332 12C22.332 6.5 17.832 2 12.332 2ZM13.1322 7.2002H11.5322V12.8002H13.1322V7.2002ZM11.5322 15.2002H13.1322V16.8002H11.5322V15.2002Z" fill="black"/>
286 </mask>
287 <g mask="url(#mask0_17642_41602010101)">
288 <rect x="0.332031" width="24" height="24" fill="#666E7A"/>
289 </g>
290 </svg>
291 <p>
292 ${locale?contains("en")?then("Mandatory", "Mandatório")}
293 </p>
294</#if>
295 </div>
296 <#if isExclusiveContent>
297 <div class="card__header__header">
298 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
299 <mask id="mask0_17642_41070" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="4" y="1" width="16"
300 height="21">
301 <path fill-rule="evenodd" clip-rule="evenodd"
302 d="M17.9992 8.2002C18.9992 8.2002 19.7992 9.0002 19.7992 10.0002V20.0002C19.7992 21.0002 18.9992 21.8002 17.9992 21.8002H5.99922C4.99922 21.8002 4.19922 21.0002 4.19922 20.0002V10.0002C4.19922 9.0002 4.99922 8.2002 5.99922 8.2002H14.9992H15.1992V8.0002V6.0002C15.1992 4.2002 13.7992 2.8002 11.9992 2.8002C10.2992 2.8002 8.89922 4.1002 8.79922 5.8002H7.19922C7.29922 3.2002 9.39922 1.2002 11.9992 1.2002C14.5992 1.2002 16.7992 3.4002 16.7992 6.0002V8.0002V8.2002H16.9992H17.9992ZM18.1992 20.0002V10.0002V9.8002H17.9992H5.99922H5.79922V10.0002V20.0002V20.2002H5.99922H17.9992H18.1992V20.0002ZM13.7992 15.0002C13.7992 15.9943 12.9933 16.8002 11.9992 16.8002C11.0051 16.8002 10.1992 15.9943 10.1992 15.0002C10.1992 14.0061 11.0051 13.2002 11.9992 13.2002C12.9933 13.2002 13.7992 14.0061 13.7992 15.0002Z"
303 fill="black" />
304 </mask>
305 <g mask="url(#mask0_17642_41070)">
306 <rect width="24" height="24" fill="#666E7A" />
307 </g>
308 </svg>
309 <p class="button-md">${locale?contains('en')?then('Exclusive', 'Exclusivo' )}</p>
310 </div>
311 </#if>
312 </div>
313
314 <#if themeDisplay.isSignedIn()>
315 <div class="star star-filled b3-ga-button" data-project-id="${curEntry.id}">
316 <img src="${starURL}"
317 alt="icone de circulo com uma estrela no centro" />
318 </div>
319 </#if>
320 </div>
321
322 <div class="card__body">
323 <p>${curEntry.segmentsProductCategories}</p>
324 <p class="body-lg b3-ga-card-title" >${curEntry.title}</p>
325 <p class="body-xs" >${curEntry.cardSummary}</p>
326 </div>
327
328 <div class="card__bottom">
329 <div class="date body-text">
330 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
331 xmlns="http://www.w3.org/2000/svg">
332 <mask id="mask0_13865_93015" style="mask-type: alpha"
333 maskUnits="userSpaceOnUse" x="3" y="1" width="18" height="20">
334 <path fill-rule="evenodd" clip-rule="evenodd"
335 d="M20.8002 4.8C20.8002 3.8 20.0002 3 19.0002 3H18.0002H17.8002V2.8V1H16.2002V2.8V3H16.0002H8.0002H7.8002V2.8V1H6.2002V2.8V3H6.0002H5.0002C4.0002 3 3.2002 3.8 3.2002 4.8V18.8C3.2002 19.8 4.0002 20.6 5.0002 20.6H19.0002C20.0002 20.6 20.8002 19.8 20.8002 18.8V4.8ZM19.2002 8.8V18.8V19H19.0002H5.0002H4.8002V18.8V8.8V8.6H5.0002H19.0002H19.2002V8.8ZM19.2002 4.8V6.8V7H19.0002H5.0002H4.8002V6.8V4.8V4.6H5.0002H19.0002H19.2002V4.8ZM12.8002 10.6997H11.2002V12.2997H12.8002V10.6997ZM7.2002 14.7998V16.3998H8.8002V14.7998H7.2002ZM15.2002 10.6997H16.8002V12.2997H15.2002V10.6997ZM7.2002 10.6997V12.2997H8.8002V10.6997H7.2002ZM11.2002 14.7998H12.8002V16.3998H11.2002V14.7998ZM15.2002 14.7998H16.8002V16.3998H15.2002V14.7998Z"
336 fill="black" />
337 </mask>
338 <g mask="url(#mask0_13865_93015)">
339 <rect width="24" height="24" fill="#0063DE" />
340 </g>
341 </svg>
342 <span>
343 ${locale?contains("en")?then("Date", "Data")}: ${curEntry.date}
344 </span>
345 </div>
346 <div class="update">
347 <#if curEntry.status == "Em execução">
348 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
349 xmlns="http://www.w3.org/2000/svg">
350 <mask id="mask0_13865_93018" style="mask-type:alpha"
351 maskUnits="userSpaceOnUse" x="2" y="2" width="20"
352 height="20">
353 <path fill-rule="evenodd" clip-rule="evenodd"
354 d="M6.54134 3.56373V2.06427H2V21.9998H6.54134V20.4954H3.47207V3.56373H6.54134Z"
355 fill="white" />
356 <path fill-rule="evenodd" clip-rule="evenodd"
357 d="M17.4546 20.4905V21.9997H22V2H17.4546V3.50428H20.5264V20.4905H17.4546Z"
358 fill="white" />
359 </mask>
360 <g mask="url(#mask0_13865_93018)">
361 <rect width="24" height="24" fill="#0063DE" />
362 </g>
363 </svg>
364 <#elseif curEntry.status=="Concluído">
365 <svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
366 <mask id="mask0_17645_44046" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="4" y="5" width="18" height="14">
367 <path d="M4.03369 13.4L9.33369 18.7L21.0337 7.00002L19.9337 5.90002L9.43369 16.3L9.33369 16.5L9.23369 16.3L5.13369 12.3L4.03369 13.4Z" fill="black"/>
368 </mask>
369 <g mask="url(#mask0_17645_44046)">
370 <rect x="0.333496" width="24" height="24" fill="#008750"/>
371 </g>
372 </svg>
373 <#elseif curEntry.status=="Despriorizado">
374 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
375 <mask id="mask0_16128_15636" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="2" y="6" width="20" height="12">
376 <path d="M21.8008 12.5L19.9008 14.4L19.7008 14.6L19.6008 14.4L13.4008 8.30005L9.60078 12.1L9.40078 12.3L9.30078 12.1L3.40078 6.30005L2.30078 7.40005L9.40078 14.5L13.3008 10.7L13.4008 10.5L13.6008 10.7L18.4008 15.6L18.6008 15.7L18.4008 15.9L16.5008 17.8H21.8008V12.5Z" fill="black"/>
377 </mask>
378 <g mask="url(#mask0_16128_15636)">
379 <rect width="24" height="24" fill="#0063DE"/>
380 </g>
381 </svg>
382 </#if>
383 <#if curEntry.status=="Concluído">
384 <p class="text__body--small check-color">
385 ${curEntry.status}
386 </p>
387 <#else>
388 <p class="">
389 ${curEntry.status}
390 </p>
391 </#if>
392 </div>
393 </div>
394 </a>
395 </#list>
396 </div>
397 </div>
398 </div>
399 </section>
400
401 <style>
402 .b3-more-projects {
403 background: var(--gradiente-escuro, linear-gradient(180deg, #001B74 0%, #001560 100%));
404 padding-bottom: 3rem;
405 padding-top: 3rem;
406
407 }
408.card__header__header {
409 display: flex;
410 align-items: center;
411 position: relative;
412 z-index: 1;
413 padding: 0 0.75rem;
414 width: max-content;
415 }
416
417 .card__header__header p {
418 margin-bottom: 0;
419 color: var(--text-text-light, #666E7A);
420 line-height: 120%;
421 letter-spacing: 0.0313rem;
422 text-transform: uppercase;
423 }
424
425 .card__header__header {
426 gap: 0.375rem;
427 }
428
429 .card__header__header::before {
430 content: '';
431 border-radius: 36px;
432 background: var(--bg-gray-1, #F6F6F7);
433 display: flex;
434 height: 1.875rem;
435 position: absolute;
436 z-index: -1;
437 padding: var(--spacer-1) var(--spacer-2);
438 width: 100%;
439 left: 0;
440 }
441
442 .b3-more-projects__wrapper__card.b3-ga-card:hover {
443 text-decoration: none;
444 }
445
446 .card__header__wrapper {
447 display: flex;
448 gap: 0.375rem;
449 }
450
451 .b3-more-projects .container-fluid.container-fluid-max-xl {
452 max-width: 79.125rem;
453 padding: 0;
454 display: flex;
455 flex-direction: column;
456 overflow: hidden;
457 }
458
459 .b3-more-projects .b3-more-projects__title {
460 line-height: 110%;
461 color: var(--white, #FFF);
462 text-align: center;
463 margin: 0;
464 font-weight: 400;
465 font-size: 1.875rem;
466 }
467
468 .b3-more-projects .b3-more-projects__title .b3-comma.english:last-child::before{
469 content: 'and';
470 display: inline-block;
471 font-weight: 400;
472 font-size: 1.875rem;
473 }
474
475 .b3-more-projects .b3-more-projects__title .b3-comma.portuguese:last-child::before{
476 content: 'e';
477 display: inline-block;
478 font-weight: 400;
479 font-size: 1.875rem;
480 }
481
482 .b3-more-projects .b3-more-projects__title .b3-comma:first-child::before{
483 width: 0;
484 visibility: hidden;
485 }
486
487 .swiper-container.b3-more-projects p {
488 margin-bottom: 0;
489
490 }
491
492 .b3-more-projects .b3-more-projects__wrapper {
493 margin-top: 1.5rem;
494height: 18.5rem;
495 }
496
497 .b3-more-projects .b3-more-projects__wrapper .b3-more-projects__wrapper__card {
498 border-radius: 0.375rem;
499 border: 1px solid var(--bg-gray-2, #E3E5E7);
500 background: var(--white, #FFF);
501 padding: 1.5rem;
502 flex: 1;
503 flex: 1 0 calc(33.333% - (var(--spacer-4) + var(--spacer-6)));
504display: flex;
505 flex-direction: column;
506 }
507
508 .b3-more-projects__wrapper__card .card__header {
509 display: flex;
510 align-items: center;
511 justify-content: space-between;
512 }
513
514 .b3-more-projects__wrapper__card .card__header div {
515 display: flex;
516 align-items: center;
517 }
518
519 .card__header .card__header__icon-mobile {
520 display: none;
521 }
522
523
524 .b3-more-projects__wrapper__card .card__header p {
525 color: var(--text-light, #666E7A);
526 text-transform: uppercase;
527 margin: 0;
528 margin-left: 0.375rem;
529font-weight: 700;
530 font-size: 0.75rem;
531 }
532
533 .b3-more-projects__wrapper__card .card__body {
534 margin-top: 1.5rem;
535 display: flex;
536 flex-direction: column;
537 gap: 0.75rem;
538flex-grow: 1;
539 }
540
541 .b3-more-projects__wrapper__card .card__body p:nth-child(1) {
542 color: var(--text-emphasis-light, #40444D);
543
544 line-height: 120%;
545 letter-spacing: 0.031rem;
546 text-transform: uppercase;
547 }
548
549 .b3-more-projects__wrapper__card .card__body p:nth-child(2) {
550 color: var(--text-emphasis-light, #40444D);
551 line-height: 150%;
552overflow: hidden;
553 text-overflow: ellipsis;
554 display: -webkit-box;
555 -webkit-line-clamp: 2;
556 -webkit-box-orient: vertical;
557 }
558
559 .b3-more-projects__wrapper__card .card__body p:nth-child(3) {
560 color: var(--text-text-light, #666E7A);
561
562 line-height: 183.333%;
563overflow: hidden;
564 text-overflow: ellipsis;
565 display: -webkit-box;
566 -webkit-line-clamp: 3;
567 -webkit-box-orient: vertical;
568 }
569
570 .b3-more-projects__wrapper__card .card__bottom {
571 margin-top: 1.5rem;
572 display: flex;
573 justify-content: space-between;
574 align-items: center;
575 }
576
577 .card__bottom .date {
578 display: flex;
579 gap: 0.3rem;
580
581 color: var(--text-text-light, #666E7A);
582 }
583
584 .card__bottom .update {
585 display: flex;
586 align-items: center;
587 gap: 0.625rem;
588 }
589
590 .card__bottom .update p {
591 color: var(--text-text-light, #666E7A);
592 margin: 0;
593 white-space: nowrap;
594 }
595
596 .card__bottom .update .check-color {
597 color: var(--verde-sucesso, #008750);
598 }
599
600 .card__bottom .update .circle {
601 width: 0.75rem;
602 height: 0.75rem;
603 border-radius: 50%;
604 background-color: var(--negative-light, #CC4400) ;
605 }
606
607.b3-more-projects .b3-more-projects__wrapper .b3-more-projects__wrapper__card {
608 max-width: 406px;
609 }
610
611 @media screen and (max-width: 768px) {
612 .b3-more-projects {
613 padding: 0;
614 gap: 0;
615 }
616
617 .b3-more-projects .b3-more-projects__title {
618 padding: var(--spacer-6) var(--spacer-6) 0;
619 text-align: left;
620 font-size: 1.875rem;
621 }
622
623 .card__header .card__header__icon-mobile {
624 display: block;
625 }
626
627 .b3-more-projects__carousel {
628 padding: 0 var(--spacer-2) var(--spacer-6) var(--spacer-2);
629 }
630
631 .b3-more-projects .b3-more-projects__wrapper {
632 height: 100%;
633 }
634
635 .b3-more-projects .b3-more-projects__wrapper .b3-more-projects__wrapper__card {
636 flex: none;
637 width: 17rem;
638 height: auto;
639 }
640
641 .b3-more-projects__wrapper__card .card__bottom {
642 flex-direction: column;
643 gap: 0.875rem;
644 align-items: flex-start;
645 }
646 .card__header__wrapper {
647 gap: 0.75rem;
648 flex-direction: column;
649 }
650 .b3-more-projects__wrapper__card .card__header {
651 align-items: flex-start;
652 }
653 }
654
655 </style>
656
657 <script>
658
659 </script>
660<script type="module">
661 var projetosRelacionadosCarousel = new Swiper('.b3-more-projects__carousel', {
662 slidesPerView: "auto",
663 spaceBetween: 12,
664 breakpoints: {
665 1400: {
666 spaceBetween: 24,
667 allowTouchMove: false,
668 },
669 768: {
670 spaceBetween: 24,
671 allowTouchMove: true,
672 allowTouchMove: false,
673 }
674 },
675 });
676 </script>
677</#if>