diff --git a/qdrant-landing/content/events/_index.md b/qdrant-landing/content/events/_index.md new file mode 100644 index 0000000000..0e807f6385 --- /dev/null +++ b/qdrant-landing/content/events/_index.md @@ -0,0 +1,12 @@ +--- +title: Events +description: Events +build: + render: always +cascade: +- build: + list: local + publishResources: false + render: never +--- + diff --git a/qdrant-landing/content/events/achieving-audit-ready-ai.md b/qdrant-landing/content/events/achieving-audit-ready-ai.md new file mode 100644 index 0000000000..abd925b0d8 --- /dev/null +++ b/qdrant-landing/content/events/achieving-audit-ready-ai.md @@ -0,0 +1,9 @@ +--- +title: "Achieving Audit-Ready AI in Finance: A GraphRAG + Vector Memory Blueprint" +description: "A blueprint session for production AI in regulated finance, covering GraphRAG as a governance boundary, filtered vector retrieval for evidence control, and stateful memory patterns — with a live demo of explainable finance Q&A with citations and provenance paths." +type: webinar +start: "2026-02-25T17:00:00" +place: Online +link: "https://luma.com/xvmyvj6j" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/biomedical-ai-copilot-with-neo4j.md b/qdrant-landing/content/events/biomedical-ai-copilot-with-neo4j.md new file mode 100644 index 0000000000..cfd884614d --- /dev/null +++ b/qdrant-landing/content/events/biomedical-ai-copilot-with-neo4j.md @@ -0,0 +1,9 @@ +--- +title: "Biomedical AI Copilot with Neo4j and Qdrant" +description: "Build a Biomedical GraphRAG AI assistant combining Neo4j knowledge graphs and Qdrant vector search for explainable, multi-hop reasoning over biomedical corpora like PubMed, with answers grounded in verifiable evidence." +type: webinar +start: "2026-04-21T17:00:00" +place: Online +link: "https://luma.com/a7ai1y4t" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/build-retrieval-agents.md b/qdrant-landing/content/events/build-retrieval-agents.md new file mode 100644 index 0000000000..c909bd65df --- /dev/null +++ b/qdrant-landing/content/events/build-retrieval-agents.md @@ -0,0 +1,11 @@ +--- +title: "Build Retrieval Agents That Evaluate, Adapt, and Improve Mid-Query" +description: Learn to build adaptive retrieval loops with per-query strategy selection, in-loop signals to detect weak retrieval early, and a routing gate directing queries to ColBERT reranking or IRCoT decomposition. +type: webinar +start: "2026-07-08T17:30:00+02:00" +end: "2026-07-08T18:30:00+02:00" +timezoneLabel: "CEST" +place: Online +link: "https://luma.com/fdok2snb" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/building-better-product-search.md b/qdrant-landing/content/events/building-better-product-search.md new file mode 100644 index 0000000000..2fbae75459 --- /dev/null +++ b/qdrant-landing/content/events/building-better-product-search.md @@ -0,0 +1,9 @@ +--- +title: "Building Better Product Search with Fine-Tuned Retrieval Models" +description: "A workshop on the gap between generic embedding models and real product search — building a fine-tuned retrieval model on e-commerce data, covering hard negatives, domain-specific training, real relevance metrics, and integration into sparse, dense, and hybrid search stacks." +type: meetup +start: "2026-06-24T23:00:00" +place: New York, NY +link: "https://luma.com/nyc-i97h" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/byod-live-data-event.md b/qdrant-landing/content/events/byod-live-data-event.md new file mode 100644 index 0000000000..61c5ab8cc3 --- /dev/null +++ b/qdrant-landing/content/events/byod-live-data-event.md @@ -0,0 +1,9 @@ +--- +title: "BYOD Live Data Structuring Event with Qdrant and AskNews" +description: "A hands-on session on preparing data for AI agents: identify entities, pick fields, and set conventions, then live-structure real datasets brought by attendees using Qdrant and AskNews." +type: meetup +start: "2026-01-28T03:00:00" +place: San Francisco, CA +link: "https://luma.com/mhihm2js" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/context-engineering-meetup.md b/qdrant-landing/content/events/context-engineering-meetup.md new file mode 100644 index 0000000000..4b4dd83401 --- /dev/null +++ b/qdrant-landing/content/events/context-engineering-meetup.md @@ -0,0 +1,9 @@ +--- +title: "Context Engineering Meetup" +description: "An evening focused on context engineering — designing systems that provide the right information in the right format at the right time — with talks on structuring raw data and building an agentic medical research assistant using vector search and graph tooling." +type: meetup +start: "2026-03-03T18:00:00" +place: Amsterdam, Netherlands +link: "https://luma.com/dtswysbb" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/listening-to-the-world.md b/qdrant-landing/content/events/listening-to-the-world.md new file mode 100644 index 0000000000..c8af185c20 --- /dev/null +++ b/qdrant-landing/content/events/listening-to-the-world.md @@ -0,0 +1,9 @@ +--- +title: "Listening to the World: Multimodal Search with Qdrant" +description: "Build a multimodal search system that retrieves audio clips, transcripts, and news articles together — using Gemini Embedding 2 to place audio and text in a shared vector space, Qdrant Cloud for storage, and AskNews for enriched financial data." +type: meetup +start: "2026-06-11T15:00:00" +place: Berlin, Germany +link: "https://luma.com/shfil13j" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/post-ai-dev-conference.md b/qdrant-landing/content/events/post-ai-dev-conference.md new file mode 100644 index 0000000000..2b34821496 --- /dev/null +++ b/qdrant-landing/content/events/post-ai-dev-conference.md @@ -0,0 +1,9 @@ +--- +title: "Post-AI Dev Conference Happy Hour for Agent Builders, hosted by Qdrant" +description: "An informal post-conference gathering after AI Dev x SF 26, bringing together founders, engineering leaders, and developers for drinks, light food, and networking — no pitches, just people building interesting things in AI." +type: meetup +start: "2026-04-29T02:30:00" +place: San Francisco, CA +link: "https://luma.com/yjb156c2" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/qdrant-ai-builders-aws-loft.md b/qdrant-landing/content/events/qdrant-ai-builders-aws-loft.md new file mode 100644 index 0000000000..5f34044fb4 --- /dev/null +++ b/qdrant-landing/content/events/qdrant-ai-builders-aws-loft.md @@ -0,0 +1,11 @@ +--- +title: "Qdrant AI Builders @ AWS Loft: Relevant & Diverse Vector Search That Gets Clicks with Neo4j" +description: A technical session on Maximal Marginal Relevance (MMR) search — ranking results by both relevance and distinctiveness to surface top hits and hidden gems — alongside Neo4j's approach to combining vectors with graphs in search workflows. +type: meetup +start: "2025-09-08T17:00:00-07:00" +end: "2025-10-08T20:00:00-07:00" +timezoneLabel: "GMT-7" +place: San Francisco, CA +link: "https://luma.com/mhihm2js" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/qdrant-ai-builders.md b/qdrant-landing/content/events/qdrant-ai-builders.md new file mode 100644 index 0000000000..1b7e740346 --- /dev/null +++ b/qdrant-landing/content/events/qdrant-ai-builders.md @@ -0,0 +1,11 @@ +--- +title: "Qdrant AI Builders: Show & Tell @ AWS Loft" +description: An evening of live demos from builders using Qdrant for search, recommendations, and AI applications — covering RAG, agentic frameworks, and multimodal search — with networking among engineers, founders, and investors. +type: meetup +start: "2025-03-10T17:00:00-07:00" +end: "2025-03-10T21:00:00-07:00" +timezoneLabel: "GMT-7" +place: San Francisco, CA +link: "https://luma.com/mhihm2js" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/search-and-retrieval-for-ai-agents.md b/qdrant-landing/content/events/search-and-retrieval-for-ai-agents.md new file mode 100644 index 0000000000..317729b60d --- /dev/null +++ b/qdrant-landing/content/events/search-and-retrieval-for-ai-agents.md @@ -0,0 +1,11 @@ +--- +title: "Qdrant Meetup: Search & Retrieval for AI Agents" +description: Explore how AI agents manage memory and context using advanced search and retrieval methods that improve grounding while reducing token usage. +type: meetup +start: "2026-07-29T13:00:00-07:00" +end: "2026-07-29T15:00:00-07:00" +timezoneLabel: "GMT-7" +place: Seattle, WA +link: "https://luma.com/8dgixes7" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/turboquant-in-qdrant-explained.md b/qdrant-landing/content/events/turboquant-in-qdrant-explained.md new file mode 100644 index 0000000000..ac62f273e9 --- /dev/null +++ b/qdrant-landing/content/events/turboquant-in-qdrant-explained.md @@ -0,0 +1,9 @@ +--- +title: "TurboQuant in Qdrant Explained" +description: "A session covering TurboQuant, Qdrant's quantization option offering 8x, 16x, and 32x compression with consistently higher recall than Binary Quantization at every storage class, plus guidance on when to use it over SQ or BQ." +type: webinar +start: "2026-05-26T17:00:00" +place: Online +link: "https://luma.com/qdrant-turboquant" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/twelveLabs-and-qdrant.md b/qdrant-landing/content/events/twelveLabs-and-qdrant.md new file mode 100644 index 0000000000..e42056eb42 --- /dev/null +++ b/qdrant-landing/content/events/twelveLabs-and-qdrant.md @@ -0,0 +1,11 @@ +--- +title: "TwelveLabs + Qdrant: AI Systems for Video Embeddings and Search" +description: Discover how multimodal embeddings for video power AI search and retrieval — covering text, audio, and video embeddings in practice, and AI search on the edge for devices and robots. +type: meetup +start: "2026-07-29T17:30:00-07:00" +end: "2026-07-29T21:00:00-07:00" +timezoneLabel: "GMT-7" +place: Bellevue, WA +link: "https://luma.com/kyksgkak" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/vector-space-day-san-francisco.md b/qdrant-landing/content/events/vector-space-day-san-francisco.md new file mode 100644 index 0000000000..584638a0d1 --- /dev/null +++ b/qdrant-landing/content/events/vector-space-day-san-francisco.md @@ -0,0 +1,11 @@ +--- +title: "Vector Space Day San Francisco" +description: "A single-track, full-day conference for engineers and researchers building with vector search and AI, covering Search & AI Retrieval, Agents & Memory, and Edge & Robotics AI. Featuring speakers from Google DeepMind, LlamaIndex, Adobe, Slack, and more." +type: conference +start: "2026-06-11T08:30:00-07:00" +end: "2026-06-11T18:30:00-07:00" +timezoneLabel: "GMT-7" +place: San Francisco, CA +link: "https://luma.com/vsd-sf" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/content/events/vector-space-meetup.md b/qdrant-landing/content/events/vector-space-meetup.md new file mode 100644 index 0000000000..92a66fbe32 --- /dev/null +++ b/qdrant-landing/content/events/vector-space-meetup.md @@ -0,0 +1,9 @@ +--- +title: "Vector Space Meetup: Retrieval in the Age of Agents with Qdrant, n8n, Cognee, deepset, LlamaIndex" +description: "An evening contrasting classic RAG — where retrieval is one step in a fixed pipeline — with agentic systems where retrieval becomes a dynamic capability the agent actively manages, featuring a panel with Qdrant, Cognee, deepset, LlamaIndex, and n8n." +type: meetup +start: "2026-06-11T18:00:00" +place: Merantix AI Campus +link: "https://luma.com/vsm-berlin" +sitemapExclude: true +--- \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/default.scss b/qdrant-landing/themes/qdrant-2024/assets/css/default.scss index eb48b1bcbe..b3b3be336f 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/default.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/default.scss @@ -81,6 +81,8 @@ @import 'partials/cloud-inference-faq'; @import 'partials/cta-banner'; @import 'partials/subscribe'; +@import 'partials/events/events-card'; +@import 'partials/events/events-list'; // used by landing pages under /lp/ (e.g. /lp/lucene) @import 'partials/elastic-lucene/index'; @import 'partials/vsd/index'; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-card.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-card.scss new file mode 100644 index 0000000000..66631f6d3d --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-card.scss @@ -0,0 +1,204 @@ +@use 'sass:math'; +@use '../../helpers/functions' as *; + +.events-card { + display: flex; + flex-direction: column; + gap: $spacer * 4; + padding: $spacer * 2 $spacer * 1.5; + border: pxToRem(1) solid $neutral-20; + color: $neutral-70; + + &__date { + display: flex; + gap: $spacer * 0.5; + align-items: center; + color: $neutral-90; + + p { + margin-bottom: 0; + font-weight: $font-weight-medium; + } + + svg { + flex-shrink: 0; + } + } + + &__title { + margin-top: $spacer; + margin-bottom: $spacer; + font-size: $h6-font-size; + line-height: $spacer * 2; + color: $neutral-90; + } + + &__description { + margin-bottom: $spacer * 4; + font-size: $font-size-md; + line-height: $spacer * 1.5; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + } + + &__location { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: $spacer; + } + + &__type { + padding: pxToRem(2) pxToRem(10); + border-radius: pxToRem(20); + font-size: $font-size-md; + line-height: $spacer * 1.5; + text-transform: capitalize; + display: inline-block; + + &-mobile { + display: none; + } + + &-webinar { + border: pxToRem(1) solid $secondary-blue-50; + color: $secondary-blue-50; + background-color: rgba($secondary-blue-50, 0.1); + } + + &-conference { + border: pxToRem(1) solid $secondary-violet-50; + color: $secondary-violet-50; + background-color: rgba($secondary-violet-50, 0.1); + } + + &-meetup { + border: pxToRem(1) solid $secondary-teal-50; + color: $secondary-teal-50; + background-color: rgba($secondary-teal-50, 0.1); + } + } + + &__place { + display: flex; + align-items: center; + gap: math.div($spacer, 4); + margin-bottom: 0; + font-size: $font-size-md; + line-height: $spacer * 1.5; + + svg { + height: $spacer; + width: $spacer; + } + } + + &__time { + display: flex; + align-items: center; + gap: math.div($spacer, 4); + margin-bottom: 0; + font-size: $font-size-md; + line-height: $spacer * 1.5; + + svg { + height: $spacer; + width: $spacer; + } + } + + &:hover { + background: linear-gradient(180deg, rgba(14, 20, 36, 0.00) 0%, $neutral-20 100%); + + .events-card__date, + .events-card__description, + .events-card__place, + .events-card__time { + color: $neutral-90; + + svg { + path { + stroke: $neutral-90; + } + } + } + } + + @include media-breakpoint-up(lg) { + flex-direction: row; + align-items: start; + gap: $spacer * 2; + + &:not(:last-child) { + border-bottom: 0; + } + + &__date { + flex-shrink: 0; + width: pxToRem(228); + color: $neutral-70; + + p { + margin-bottom: 0; + font-weight: $font-weight-medium; + font-size: $font-size-l; + line-height: $spacer * 1.5; + } + + svg { + height: pxToRem(18); + width: pxToRem(18); + + path { + stroke: $neutral-70; + } + } + } + + &__title { + margin-top: 0; + margin-bottom: $spacer * 0.5; + } + + &__description { + margin-bottom: $spacer * 2; + } + + &__location { + gap: $spacer $spacer * 2; + } + + &__type { + font-size: $font-size-xs; + line-height: pxToRem(18); + padding: pxToRem(1) pxToRem(10); + display: none; + + &-mobile { + display: block; + } + } + + &__place { + font-size: $font-size-xs; + line-height: pxToRem(18); + + svg { + height: pxToRem(12); + width: pxToRem(12); + } + } + + &__time { + font-size: $font-size-xs; + line-height: pxToRem(18); + + svg { + height: pxToRem(12); + width: pxToRem(12); + } + } + } +} \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-list.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-list.scss new file mode 100644 index 0000000000..96c02621c0 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_events-list.scss @@ -0,0 +1,106 @@ +@use '../../helpers/functions' as *; + +.events-list { + margin-bottom: $spacer * 4; + background-color: $neutral-10; + + &__section { + padding: $spacer * 5 0; + + &-header { + color: $neutral-98; + } + + &-subtitle { + margin-bottom: $spacer; + font-size: $font-size-s; + line-height: $line-height-sm; + font-family: $font-family-monospace; + font-weight: $font-weight-medium; + text-transform: uppercase; + letter-spacing: pxToRem(2); + text-align: center; + } + + &-title { + margin-bottom: 0; + font-size: $h3-font-size; + line-height: pxToRem(52); + text-align: center; + } + + &-list { + display: flex; + flex-direction: column; + gap: $spacer * 4; + } + } + + @include media-breakpoint-up(lg) { + margin-bottom: $spacer * 7.5; + + &__section { + padding: $spacer * 7.5 0; + + &-upcoming { + border-bottom: pxToRem(1) solid $neutral-30; + } + + &-past { + position: relative; + + .events-list__section-list { + height: pxToRem(972); + margin: pxToRem(-120) 0; + overflow-y: scroll; + scrollbar-width: none; + + &-webkit-scrollbar { + display: none; + } + } + + .events-card:first-of-type { + margin-top: $spacer * 7.5; + } + + .events-card:last-of-type { + margin-bottom: $spacer * 7.5; + } + + &:before, + &:after { + content: ""; + display: block; + position: absolute; + left: 0; + height: $spacer * 7.5; + width: 100%; + } + + &:before { + top: 0; + background: linear-gradient(0deg, rgba($neutral-10, 0.00) 0%, $neutral-10 70%); + } + + &:after { + bottom: 0; + background: linear-gradient(0deg, $neutral-10 30%, rgba($neutral-10, 0.00) 100%); + } + } + + &-subtitle { + text-align: left; + } + + &-title { + max-width: pxToRem(250); + text-align: left; + } + + &-list { + gap: 0; + } + } + } +} \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_index.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_index.scss new file mode 100644 index 0000000000..c8cba9649a --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/events/_index.scss @@ -0,0 +1,2 @@ +@import 'events-card'; +@import 'events-list'; \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/layouts/events/list.html b/qdrant-landing/themes/qdrant-2024/layouts/events/list.html new file mode 100644 index 0000000000..a2baa796aa --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/events/list.html @@ -0,0 +1,9 @@ +{{ define "main" }} + {{ partial "site-header" . }} + + {{ partial "events/events-list" . }} + + {{ with (.Site.GetPage "/headless/newsletter") }} + {{ partial "newsletter" (dict "context" . "class" "") }} + {{ end }} +{{ end }} \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/layouts/events/single.html b/qdrant-landing/themes/qdrant-2024/layouts/events/single.html new file mode 100644 index 0000000000..806bcec800 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/events/single.html @@ -0,0 +1 @@ +{{ define "main" }}{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-card.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-card.html new file mode 100644 index 0000000000..c7197c5eee --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-card.html @@ -0,0 +1,75 @@ +{{ $event := . }} +{{ $start := time.AsTime $event.Params.start }} + +{{ $end := $start }} +{{ with $event.Params.end }} + {{ $end = time.AsTime . }} +{{ end }} + +{{ $hasStartTime := findRE "T" $event.Params.start }} +{{ $hasEndTime := false }} +{{ with $event.Params.end }} + {{ $hasEndTime = findRE "T" . }} +{{ end }} + + +
+ + + +

+ {{ if eq ($start.Format "2006-01-02") ($end.Format "2006-01-02") }} + {{ $start.Format "Mon, Jan 2, 2006" }} + {{ else }} + {{ $start.Format "Mon, Jan 2, 2006" }} - {{ $end.Format "Mon, Jan 2, 2006" }} + {{ end }} +

+
+ +
+ {{ $event.Params.type }} +

{{ $event.Title }}

+

{{ $event.Params.description }}

+ +
+ + {{ $event.Params.type }} + +

+ + + + + {{ $event.Params.place }} +

+ + {{ if $hasStartTime }} + {{ $timeFormat := "3:04 PM" }} + {{ if $event.Params.timezoneLabel }} + {{ $timeFormat = "15:04" }} + {{ end }} + +

+ + + + + + + + + + + + {{ $start.Format $timeFormat }} + {{ if and $hasEndTime (ne ($start.Format "15:04") ($end.Format "15:04")) }} + - {{ $end.Format $timeFormat }} + {{ end }} + {{ with $event.Params.timezoneLabel }} + {{ . }} + {{ end }} +

+ {{ end }} +
+
+
\ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-list.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-list.html new file mode 100644 index 0000000000..0b899a88b7 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/events/events-list.html @@ -0,0 +1,68 @@ +{{ $now := now.Unix }} +{{ $upcoming := slice }} +{{ $past := slice }} + +{{ range .Pages }} + {{ if not .Params.start }}{{ continue }}{{ end }} + + {{ $start := time.AsTime .Params.start }} + {{ $end := $start }} + {{ with .Params.end }} + {{ $end = time.AsTime . }} + {{ end }} + + {{ if ge $end.Unix $now }} + {{ $upcoming = $upcoming | append (dict "page" . "start" $start "end" $end) }} + {{ else }} + {{ $past = $past | append (dict "page" . "start" $start "end" $end) }} + {{ end }} +{{ end }} + +{{ $upcoming = sort $upcoming "start" "asc" }} +{{ $past = sort $past "end" "desc" }} + +
+
+
+
+
+

Events

+

Upcoming Events

+
+ + {{ if gt (len $upcoming) 0 }} +
+
+ {{ range $upcoming }} + {{ partial "events/events-card" .page }} + {{ end }} +
+
+ {{ else }} +
+

+
+ {{ end }} +
+
+ +
+
+
+

Events

+

Past Events

+
+ + {{ if gt (len $past) 0 }} +
+
+ {{ range $past }} + {{ partial "events/events-card" .page }} + {{ end }} +
+
+ {{ end }} +
+
+
+
\ No newline at end of file